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.

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, ALEKS score of 51 or higher.

Co-requisites: COMP-SCI 101L.

COMP-SCI 111 Introduction to Computing Credits: 3

This course provides a broad and general introduction to the computing fields underlying computer science, information technology and computer engineering and its impact on humanity and society. It introduces important concepts of the field, including hardware, software, communications networks, algorithmic processes, information representation, and programming. The course is not programming oriented, but some light programming might be required. The course also introduces academic skills and strategies for success as a student and in a professional career.

COMP-SCI 190 Special Topics Credits: 1-3

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

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

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

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, 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, 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, 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 282 Assembly Language Programming Credits: 3

Use of an assembly language for a virtual machine, internal representation of data and instructions, the assembly process, linking, loading and program relocation and execution. I/O, exception handling, alternative architectures.

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

COMP-SCI 290 Special Topics Credits: 1-3

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

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: ENGLISH 225, RooWriter.

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 352 Data Structures and Algorithms Credits: 3

Abstract data structures and analysis of associated algorithms, abstractions as separate from implementation. Structures include lists, trees, priority queues, advanced tree structures, hashing tables, and graphs. Comparison of efficiency of algorithms as implemented with various data structures. Advanced searching and sorting algorithms, shortest paths, spanning tree and flow algorithms. Introduction to the basic concepts of NP-complete problems.

Prerequisites: COMP-SCI 201R (or E&C-ENGR 216 for E&C-ENGR students), COMP-SCI 291, MATH 210.

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

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

Prerequisites: COMP-SCI 303 (or COMP-SCI 352).

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.

COMP-SCI 393 Numerical Analysis and Symbolic Computation Credits: 3

Basic elements of numerical analysis: numerical solution of algebraic equations, solution of linear simultaneous algebraic equations, matrices, eigenvalues and eigenvectors, numerical integration and numerical solution of linear differential equations. Use of a symbolic manipulator on both symbolic and numerical computation, applied to the above listed basic elements of numerical analysis.

Prerequisites: COMP-SCI 201R, COMP-SCI 281R, MATH 250.

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 396 Fundamentals of Communication and Network Security Credits: 3

Techniques learned in this course provide security solutions for a variety of security threats across the spectrum of communications and network applications. This course covers both fundamental cryptology and applications, including conventional encryption, modular arithmetic, data encryption standard, public-key cryptography, RSA, wireless communication security, secure email, Internet payment and secure web applications.

Prerequisites: MATH 300.

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 computability and NP-complete theory.

Prerequisites: COMP-SCI 291, COMP-SCI 303 (or COMP-SCI 352).

Co-requisites: COMP-SCI 394R, Math 300.

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, MATH 250.

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: Senior standing.

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 352 (or 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, 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 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 examples chosen will also convey a detailed knowledge of state-of-the art based WWW technology. 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 (or COMP-SCI 352).

COMP-SCI 449 Foundations of Software Engineering Credits: 3

The course introduces concepts of Software Engineering (definitions, context) and the Software Development Process (life cycle). Students will get a solid foundation in Agile methodology, SW requirements, Exceptions and Assertions, Verification and Validation, SW Models and modeling, and User Interface Design. Various SW Architectures will be discussed.

Prerequisites: COMP-SCI 303 (or COMP-SCI 352).

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 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 (or COMP-SCI 352), 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 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 (or COMP-SCI 352).

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 (or COMP-SCI 352).

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 464 Applied Artificial Intelligence Credits: 3

Intelligent agents. Solving problems by search. Game playing. Logical reasoning systems. Planning agents. Decision making. Learning methods. Neural networks and learning. Neural language processing. Perception Expert systems.

Prerequisites: COMP-SCI 461.

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 475 Introduction to Computer Graphics Credits: 3

Interactive Computer Graphics, Hardware Interaction, 3D transformations, Shading, Lighting and Texturing.

Prerequisites: COMP-SCI 303.

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.

COMP-SCI 490CI Special Topics Credits: 1-3

COMP-SCI 490CR Special Topics Credits: 1-3

COMP-SCI 490IS Special Topics Credits: 1-3

COMP-SCI 490JU Special Topics Credits: 1-3

COMP-SCI 490MT Special Topics Credits: 1-3

COMP-SCI 490NN Special Topics Credits: 1-3

COMP-SCI 490SA Special Topics Credits: 1-3

Special Topics

COMP-SCI 490SI Special Topics Credits: 1-3

COMP-SCI 490SM Special Topics Credits: 1-3

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.

COMP-SCI 494R Applied Stochastic Models Credits: 3

Review of basic probability including properties of joint random variables and functions of random variables. Discrete and continuous random processes, such as the Poisson process, Brownian motion, and white Gaussian noise. Linear filtering of random processes. Markovian birth and death processes and elementary queuing theory.

Prerequisites: COMP-SCI 394R.

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.

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.

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.