COMP-SCI 100 Computer Fundamentals and Applications Credits: 3

The course covers essential computer concepts and skills. The emphasis is on using the computer as a tool to enhance productivity. Topics include basic computer concepts such as what to look for when buying a computer and how to avoid hackers and viruses when operating one. Students will also learn how to create word processing, spreadsheet, database, and presentation documents using the Microsoft Office suite of applications. The course prepares students to succeed in both college and business by enabling them to write reports, analyze and chart data, prepare presentations and organize large data sets.

Prerequisites: MATH 110 (or higher) or ALEKS score of 51 (or higher).

COMP-SCI 101 Problem Solving and Programming I Credits: 3

Problem solving, algorithms, and program design. Use of structured programming, lists, control structures, recursion, objects and files in Python. Introduction to graphical interface programming. Coding, testing and debugging using a modern development environment.

Prerequisites: MATH 110 (or higher) or ALEKS score of 51 (or higher).

Co-requisites: COMP-SCI 101L.

COMP-SCI 101L Problem Solving & Programming I Lab Credit: 1

Programming exercises and demonstrations to reinforce concepts learned in COMP-SCI 101 and provide additional practice in Python programming.

Prerequisites: MATH 110 or higher.

Co-requisites: COMP-SCI 101.

COMP-SCI 190A Special Topics Credits: 1-3

Selected introductory topics in the area of computing. May be repeated for credit when topic varies.

Prerequisites: Departmental consent.

COMP-SCI 191 Discrete Structures I Credits: 3

Mathematical logic, sets, relations, functions, mathematical induction, algebraic structures with emphasis on computing applications.

Prerequisites: MATH 110 (or higher) or ALEKS score of 51 (or higher).

COMP-SCI 201L Problem Solving and Programming II - Lab Credit: 1

Programming exercises and demonstrations to reinforce concepts learned in COMP-SCI 201R and provide additional practice in C++ programming.

Prerequisites: COMP-SCI 101 and COMP-SCI 191.

Co-requisites: COMP-SCI 201R.

COMP-SCI 201R Problem Solving and Programming II Credits: 3

Problem solving and programming using classes and objects. Algorithm efficiency, abstract data types, searching and sorting, templates, pointers, linked lists, stacks and queues implemented in C++.

Prerequisites: COMP-SCI 101 and COMP-SCI 191.

Co-requisites: COMP-SCI 201L.

COMP-SCI 281R Introduction to Computer Architecture and Organization Credits: 3

Digital Logic and Data Representation, process architecture and instruction sequencing, memory hierarchy and bus-interfaces and functional organization.

Prerequisites: COMP-SCI 101, COMP-SCI 191.

COMP-SCI 290 Special Topics Credits: 1-3

Selected intermediate topics in the area of computing. May be repeated for credit when topic varies.

Prerequisites: Departmental consent.

COMP-SCI 291 Discrete Structures II Credits: 3

Recurrence relations and their use in the analysis of algorithms. Graphs, trees, and network flow models. Introduction to Finite state machines, grammars, and automata.

Prerequisites: COMP-SCI 191.

COMP-SCI 303 Data Structures Credits: 3

Linear and hierarchical data structures, including stacks, queues, lists, trees, priority queues, advanced tree structures, hashing tables, dictionaries and disjoint-set. Abstractions and strategies for efficient implementations will be discussed. Linear and hierarchical algorithms will be studied as well as recursion and various searching and sorting algorithms. Programming concepts include Object Orientation, concurrency and parallel programming. Several in-depth projects in C++ will be required.

Prerequisites: COMP-SCI 191, COMP-SCI 201R, and COMP-SCI 201L.

COMP-SCI 304WI Ethics and Professionalism Credits: 3

Societal and ethical obligations of computer science, information technology, and electrical/computer engineering practice. Topics include obligations of professional practice, electronic privacy, intellectual property, ethical issues in networking, computer security, computer reliability, and whistle-blowing.

Prerequisites: RooWriter and departmental consent.

COMP-SCI 349 Java Programming with Applications Credits: 3

The course covers the syntax and semantics of the Java programming language along with the use of essential class libraries. These topics will be taught in the context of application development. Students will learn how to write small to medium sized Java applications and applets. Specific topics covered include: essential classes in the Java API, interfaces, inheritance, exceptions, graphical user interface components, layout managers, events, I/O classes, Applets, data base access, and multithreading. Other topics will be covered as time permits.

Prerequisites: COMP-SCI 303.

COMP-SCI 371 Database Design, Implementation and Validation Credits: 3

This course discusses in detail all aspects of database management systems. It covers in detail database design, implementation, and validation. In addition to these, it briefly covers implementation, tuning, database security, and implementation. The course is suitable for undergraduates and professionals alike.

Prerequisites: COMP-SCI 303.

COMP-SCI 390 Special Topics Credits: 1-3

Selected topics in the area of computing at the junior level. May be repeated for credit when the topic varies.

Prerequisites: Departmental consent.

COMP-SCI 394R Applied Probability Credits: 3

Basic concepts of probability theory. Counting and measuring. Probability, conditional probability and independence. Discrete, continuous, joint random variables. Functions of random variables. Sums of independent random variables and transform methods. Random number generation and random event generation. Law of large numbers, central limit theorem, inequalities. Their applications to computer science and electrical and computer engineering areas are stressed.

Prerequisites: COMP-SCI 201R and COMP-SCI 201L (or E&C-ENGR 216), MATH 220, and STAT 235 (or E&C-ENGR 241).

COMP-SCI 404 Introduction to Algorithms and Complexity Credits: 3

A rigorous review of asymptotic analysis techniques and algorithms: from design strategy (such as greedy, divide-and-conquer, and dynamic programming) to problem areas (such as searching, sorting, shortest path, spanning trees, transitive closures, and other graph algorithms, string algorithms) arriving at classical algorithms with supporting data structures for efficient implementation. Throughout, the asymptotic complexity is studied in worst case, best case, and average case for time and/or space, using appropriate analysis techniques (recurrence relations, amortization). Introduction to the basic concepts of complexity theory and NP-complete theory.

Prerequisites: COMP-SCI 291 and COMP-SCI 303.

COMP-SCI 411 Introduction to Telecommunications Systems Credits: 3

Representation of signals and systems, Fourier Series, Fourier Transform, transmission of signal through linear system, amplitude modulation systems, frequency and pulse modulation systems, sampling, time division multiplexing, digital modulation and noise in modulation systems.

Prerequisites: COMP-SCI 394R.

COMP-SCI 420 Introductory Networking and Applications Credits: 3

This introductory course examines the systems aspects of the different LAN/MAN/WAN models, including topics such as protocols, network operating systems, applications, management and wireless communication systems. It also examines how the different models are interconnected using bridges and routers.

Prerequisites: COMP-SCI 303.

COMP-SCI 421A Foundations of Data Networks Credits: 3

This introductory course examines the analytical aspects of data communications and computer networking. Topics cover protocol concepts and performance analysis that arise in physical. data link layer, MAC sub layer, and network layer.

Prerequisites: COMP-SCI 291, COMP-SCI 303, COMP-SCI 394R.

COMP-SCI 423 Client/Server Programming and Applications Credits: 3

Fundamentals of Client/Server programming using socket interface; features of network programming including connection oriented and connectionless communication in multiple environments (Windows, UNIX, and Java); other client/server mechanisms, such as RPC and RMI) and formal object environments designed to facilitate network programming (CORBA, COM and Beans).

Prerequisites: COMP-SCI 303, COMP-SCI 431.

COMP-SCI 424 Software Methods and Tools Credits: 3

This course covers a number of software methods and tools that are widely used in industry. These methods include architecture patterns and styles, software frameworks, unit testing, and version control. The covered software tools include Microsoft Project, IBM Rational Systems Modeler, Eclipse Plug-ins, JUnit, Subversion, and GIT. The course emphasizes practice. Students will use these methods and tools to develop a software system from the initial planning to final deployment.

Prerequisites: COMP-SCI 349.

COMP-SCI 431 Introduction to Operating Systems Credits: 3

This course covers concurrency and control of asynchronous processes, deadlocks, memory management, processor and disk scheduling, x86 assembly language, parallel processing, security, protection, and file system organization in operating systems.

Prerequisites: COMP-SCI 303, COMP-SCI 281R.

COMP-SCI 441 Programming Languages: Design and Implementation Credits: 3

This course covers programming language paradigms (object-oriented programming, functional programming, declarative programming, and scripting) and design tradeoffs in terms of binding, visibility, scope, lifetime, type-checking, concurrency/parallelism, and abstraction. It also covers programming language specification, grammar, lexical analysis, exception handling, and runtime considerations.

Prerequisites: COMP-SCI 303.

COMP-SCI 444 Compiler/Translator Design Credits: 3

This course will teach modern compiler techniques applied to both general-purpose and domain-specific languages. The fundamental goal of programming is to provide instructions to the computer hardware. The primary purpose of the compiler/translator is to facilitate communication from the programmer via some high level language to ultimately the computer hardware. Understanding how compiler/translators are built and operate is important to understanding efficiency of operation and storage.

Prerequisites: COMP-SCI 303.

COMP-SCI 449 Foundations of Software Engineering Credits: 3

The course introduces concepts of software engineering (e.g. definitions, context) and the software development process (i.e. life cycle). Students will get a solid foundation in agile methodology, software requirements, exceptions and assertions, verification and validation, software models and modeling, and user Interface design. Various software architectures will be discussed.

Prerequisites: COMP-SCI 303.

COMP-SCI 451R Software Engineering Capstone Credits: 3

The course will focus on the requirements and project planning and managing of medium sized projects with deliverables of each phase of the software life cycle. Additional studies of system integration and architecture, software modeling, requirements specifications, configuration management, verification, validation, software evolution and quality and finally measurement, estimation and economics of the software process.

Prerequisites: COMP-SCI 303, COMP-SCI 449.

COMP-SCI 456 Human Computer Interface Credits: 3

Design of human-computer interfaces considering the psychological and physical abilities of the user. User interface design from a functional and ergonomic perspective. Contents organization, visual organization, navigation. Use of graphical user interface (GUI) and the development of high quality user interfaces.

Prerequisites: COMP-SCI 449.

COMP-SCI 457 Software Architecture: Requirements & Design Credits: 3

Introduction to requirements and design engineering with emphasis on organization and presentation of system requirements and designs for customers, users and engineers; validation of requirements and design with needs of system customer; examination of requirement and design changes during the lifetime of a system; transformation of informal ideas into formal detailed descriptions; examination of the different stages in the design process including architectural design, interface design and data structure design, database design, program and transaction design; examination of domain modeling criteria and examination of design quality attributes; non-functional attributes and project resource allocation.

Prerequisites: COMP-SCI 303.

COMP-SCI 458 Software Architecture: Testing & Maintenance Credits: 3

Introduction of software system testing (including verification), software process, software reuse, software maintenance, and software re-engineering.

Prerequisites: COMP-SCI 303.

COMP-SCI 461 Introduction to Artificial Intelligence Credits: 3

This course provides an overview of the field of artificial intelligence. Topics include guided and unguided search, adversarial search, generation and use of heuristics, logic programming, probabilistic reasoning, and neural networks. Application areas studied include game playing, automated proofs, expert systems, and data mining. Recommended preparation: One or more of COMP-SCI 394R, COMP-SCI 404, or an advanced programming elective.

Prerequisites:COMP-SCI 303.

COMP-SCI 465R Introduction to Statistical Learning Credits: 3

This course provides a practical introduction to analytical techniques used in data science and prepares students for advanced courses in machine learning. Topics covered include multivariate distributions, information theory, linear algebra (eigenanalysis), supervised/unsupervised learning, classification/regression, linear/non-linear learning, introduction to Bayesian learning (Bayes rule, prior, posterior, likelihood), parametric/non-parametric estimation.

Prerequisites: COMP-SCI 394R.

COMP-SCI 466R Introduction to Bioinformatics Credits: 3

This course introduces students to the field of Bioinformatics with a focus on understanding the motivation and computer science behind existing Bioinformatic resources, as well as learning the skills to design and implement new ideas.

Prerequisites: COMP-SCI 303.

COMP-SCI 470 Introduction to Database Management Systems Credits: 3

This course covers database architecture, data independence, schema, Entity-Relationship (ER) and relational database modeling, relational algebra and calculus, SQL, file organization, relational database design, physical database organization, query processing and optimization, transaction structure and execution, concurrency control mechanisms, database recovery, and database security.

Prerequisites: COMP-SCI 303.

Co-requisites: COMP-SCI 431.

COMP-SCI 490 Special Topics Credits: 1-3

Selected topics in specific areas of computer science. May be repeated for credit when the topic varies.

Prerequisites: Junior standing.

COMP-SCI 491 Internship Credits: 6

Students may participate in structured internships under the joint supervision of an employer and a faculty member. The student must carry out significant professional responsibilities that also have academic merit. The number of credit hours is based on the quality of the academic experience. Available for credit/no credit only and students must be in good standing with at least 18 credit hours of CS/IT counting towards the degree. Registration by consent number only: petition forms for CS/IT491 Internships are available in the office of CSEE Division and on the web.

Prerequisites: Junior standing, Departmental consent.

COMP-SCI 497 Directed Readings Credits: 1-3

Readings in an area selected by an undergraduate student in consultation with a faculty member. Arrangements must be made prior to registration.

Prerequisites: Departmental consent.

COMP-SCI 498 Research Seminar Credits: 1-3

Undergraduate research based on intensive readings from the current research literature under the direction of a faculty member. Arrangements must be made prior to registration.

Prerequisites: Departmental consent.

COMP-SCI 499 Undergraduate Research Credits: 1-3

Completion of project, including a final written report, under the direction of a faculty member. A prospectus must be accepted prior to registration.

Prerequisites: Departmental consent.