Computer Science (CS)


CS 201. QR: Operating Systems. 0 or 3 Credits.

Supervisory and control software for multiprogrammed computer systems. Processes, threads, synchronization, interprocess communication, scheduling, memory management, resource allocation, performance evaluation, secondary storage, case studies. Prerequisites: CS 120 and CS 121.

CS 202. Compiler Construction. 3 Credits.

Covers the design and construction of compilers and translation of high-level programming languages to assembly language. Topics include code representation, register allocation, optimization, static analysis, mutable data, garbage collection, and compilation of higher-order language features. Prerequisites: CS 124, CS 125.

CS 204. QR: Database Systems. 3 Credits.

Techniques for processing very large collections of data. Secondary storage. Database design and management. Query languages and optimization. Database recovery. Prerequisite: CS 124.

CS 205. QR: Software Engineering. 3 Credits.

Treatment of software engineering problems and principles, with a focus on iterative software development. A significant part of the course is devoted to two multi-week team projects. Prerequisite: CS 120.

CS 206. QR: Evolutionary Robotics. 3 Credits.

Exploration of the automated design of autonomous machines using evolutionary algorithms. Coursework involves reading of research papers, programming assignments and a final project. Prerequisites: Junior standing and programming experience, or Instructor permission.

CS 211. Data Privacy. 3 Credits.

Explores the research field of data privacy, including privacy attacks on anonymized data, and formal approaches like k-Anonymity and differential privacy. Applies the theory of data privacy to real problems in programming projects. Prerequisites: CS 124, CS 125.

CS 222. QR: Computer Architecture. 3 Credits.

Architecture of computing systems. Control unit logic, input/output processors and devices, asynchronous processing, concurrency, parallelism, and memory hierarchies. Prerequisite: CS 121.

CS 224. QR:Algorithm Design & Analysis. 3 Credits.

Comprehensive study of algorithms including greedy algorithms, divide and conquer, dynamic programming, graph algorithms and network flow. Computational intractability. Approximation, local search and randomization. Prerequisite: CS 124. Pre/co-requisites: Recommended: CS 125; STAT 143, STAT 151, or CS 128.

CS 225. QR: Programming Languages. 3 Credits.

Principles of programming language design and fundamental implementation concepts. Syntax, semantics, and static analysis of programs. Provable properties of programming languages such as type safety. Prerequisites: CS 124, CS 125.

CS 226. QR:Software Verification. 3 Credits.

Principles and practice of software specification and verification. Design of algorithms which are verified correct using interactive or automated, software-based tools. Emphasis on the design space for software specification, and the spectrum of verification goals ranging from shallow to deep verification. Includes a course project. Prerequisites: CS 124, CS 125.

CS 228. QR: Human-Computer Interaction. 3 Credits.

The design, implementation, and evaluation of user interfaces for computers and other complex, electronic equipment. Includes a significant project. Pre/co-requisites: Programming experience and Junior standing or Instructor permission.

CS 237. QR:Intro to Numerical Analysis. 3 Credits.

Error analysis, root-finding, interpolation, least squares, quadrature, linear equations, numerical solution of ordinary differential equations. Prerequisites: Math 121; MATH 122 or MATH 124 or MATH 271; CS 020 or CS 021. Cross-listed with: MATH 237.

CS 243. QR: Theory of Computation. 3 Credits.

Reducibility and decidability, recursion theory, time and space complexity, P, NP, NP-completeness, PSPACE, PSPACE-completeness, L and NL, advanced topics in computability and complexity. Prerequisites: CS 124 and CS 125.

CS 253. QR:Reinforcement Learning. 3 Credits.

Students will program agents that learn to optimize a reward function using Reinforcement Learning; Markov Decision Processes with discrete states, Value Iteration, Policy Iteration, Q-learning and SARSA, methods for value function approximation in complex domains using linear and non-linear methods. Prerequisites: CS 064 or MATH 052; STAT 151 or STAT 251; CS 110. Pre/Co-requisites: MATH 122 or MATH 124; CS 125.

CS 254. QR: Machine Learning. 3 Credits.

Introduction to machine learning algorithms, theory, and implementation, including supervised and unsupervised learning; topics typically include linear and logistic regression, learning theory, support vector machines, decision trees, backpropagation artificial neural networks, and an introduction to deep learning. Includes a team-based project. Prerequisites: STAT 151 or STAT 251; MATH 122 or MATH 124.

CS 265. QR: Computer Networks. 3 Credits.

Introduction to the theoretical and pragmatic principles and practices of computer networking. Topics include: the Internet; wired and wireless communications protocols; network security protocols. Prerequisites: CS 110; CS 121.

CS 266. QR:Network Secrty&Cryptography. 3 Credits.

Security and secrecy in a networked environment. Cryptography: public and private key. Authentication: trusted agents, tickets. Electronic mail and digital signatures. Privacy and national security. Prerequisite: CS 124.

CS 275. QR:Mobile App Development. 3 Credits.

A projects-based course focusing on software development for mobile devices, including the concepts of event-driven programming, GUI design and implementation, utilization of hardware sensors, and client/server applications. A significant part of the course is devoted to a multi-month team development project. Prerequisite: CS 120, Senior standing. Pre/co-requisites: Recommended: CS 148 or CS 204.

CS 287. QR: Data Science I. 3 Credits.

Data harvesting, cleaning, and summarizing. Working with non-traditional, non-numeric data (social network, natural language textual data, etc.). Scientific visualization using static and interactive "infographics." A practical focus on real datasets, and developing good habits for rigorous and reproducible computational science. Project-based. Prerequisites: CS 020 or CS 021; STAT 141 or STAT 143 or STAT 211. Pre/co-requisites: Recommended: CS 110; Math 122 or Math 124. Cross-listed with: STAT 287.

CS 288. QR: Statistical Learning. 3 Credits.

Statistical learning methods and applications to modern problems in science, industry, and society. Topics include: linear model selection, cross-validation, lasso and ridge regression, tree-based methods, bagging and boosting, support vector machines, and unsupervised learning. Prerequisites: STAT 143, STAT 183 or STAT 211. Cross-listed with: STAT 288.

CS 294. Undergraduate Research. 1-18 Credits.

Undergraduate student work on individual or small team research projects under the supervision of a faculty member, for which credit is awarded. Offered at department discretion.

CS 302. Modeling Complex Systems. 3 Credits.

Integrative breadth-first introduction to computational methods for modeling complex systems;numerical methods, cellular automata, agent-based computing, game theory, genetic algorithms, artificial neural networks, and complex networks. Semester team-based project. Prerequisite: Graduate standing. Pre/Co-requisites: Computer programming in any language, calculus; linear algebra recommended. Cross-listed with: CSYS 302.

CS 352. Evolutionary Computation. 3 Credits.

Theory and practice of biologically-inspired search strategies, including genetic algorithms, genetic programming, and evolution strategies. Applications include optimization, parameter estimation, and model identification. Significant project. Students from multiple disciplines encouraged. Pre/co-requisites: Familiarity with programming, probability, and statistics. Cross-listed with: CSYS 352.

CS 354. Deep Learning. 3 Credits.

Introduction to Deep Learning algorithms and applications, including basic neural networks, convolutional neural networks, recurrent neural networks, deep unsupervised learning, generative adversarial networks and deep reinforcement learning. Includes a semester team-based project. Prerequisite: CS 254. Cross-listed with: CSYS 354.

CS 387. Data Science II. 3 Credits.

Advanced data analysis, collection, and filtering. Statistical modeling, monte carlo statistical methods, and in particular Bayesian data analysis, including necessary probabilistic background material. A practical focus on real datasets and developing good habits for rigorous and reproducible computational science. Prerequisite: STAT 287 or CS 287 or Instructor permission. Cross-listed with: STAT 387.

CS 391. Master's Thesis Research. 1-18 Credits.

CS 392. Master's Project. 1-6 Credits.

Prerequisite: Department permission.

CS 394. Independent Study. 1-18 Credits.

A course which is tailored to fit the interests of a specific student, which occurs outside the traditional classroom/laboratory setting under the supervision of a faculty member, for which credit is awarded. Offered at department discretion. Prerequisite: Instructor permission.

CS 395. Advanced Special Topics. 1-18 Credits.

Subject will vary from year to year. May be repeated for credit with Instructor permission.

CS 491. Doctoral Dissertation Research. 1-18 Credits.

Credit as arranged.

CS 496. Advanced Special Topics. 1-18 Credits.

See Schedule of Courses for specific titles.