Computer Science (CS)
CS 201. Operating Systems. 0 or 3 Credits.
Supervisory and control software for multiprogrammed computer systems. Processes synchronization, interprocess communication, scheduling, memory management, resource allocation, performance evaluation, object-oriented systems, case studies. Prerequisites: CS 121 and CS 124.
CS 204. 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. Software Engineering. 3 Credits.
Treatment of software engineering problems and principles, including documentation, information hiding, and module interface specification syntax and semantics. Requires participation in a team project. Prerequisite: CS 124.
CS 206. 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 222. 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. 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. Programming Languages. 3 Credits.
The principles of programming language design and fundamental implementation concepts. Syntax, semantics, and static program analysis for various paradigms. Programming language metatheory, including confluence and type safety. Stack-based implementation and memory management issues. Prerequisites: CS 124, CS 125.
CS 228. 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 231. Programming for Bioinformatics. 3 Credits.
Introductory course on computing (including scripting, database, and statistical analysis) for developing bioinformatics applications. Particular emphasis is given to comparative genomics and systems biology scenarios. Prerequisites: STAT 151, STAT 153 or Instructor permission. Cross-listed with: MMG 231.
CS 232. Methods in Bioinformatics. 3 Credits.
This course provides a methodological survey of bioinformatics. Particular emphasis is given to algorithms associated with sequence analysis, comparative genomics, structural biology, and systems biology. Prerequisites: STAT 151, STAT 153, or Instructor permission. Cross-listed with: MMG 232.
CS 243. 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 251. Artificial Intelligence. 3 Credits.
Introduction to methods for realizing intelligent behavior in computers. Knowledge representation, planning, and learning. Selected applications such as natural language understanding and vision. Prerequisites: CS 124; CS 128 or STAT 151 or STAT 143. Cross-listed with: CSYS 251.
CS 253. 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 143 or STAT 251; CS 110. Pre/Co-requisites: MATH 122 or MATH 124; CS 125.
CS 254. Machine Learning. 3 Credits.
Introduction to machine learning, including supervised and unsupervised learning algorithms, reinforcement learning, and computational learning theory. Prerequisites: CS 128 or STAT 151 or STAT 143; MATH 121; MATH 122 or MATH 124.
CS 256. Neural Computation. 3 Credits.
Introduction to artificial neural networks, their computational capabilities and limitations, and the algorithms used to train them. Statistical capacity, convergence theorems, backpropagation, reinforcement learning, generalization. Prerequisites: MATH 122 or MATH 124 or MATH 271; CS 128 or STAT 143 or STAT 151; CS 110. Cross-listed with: STAT 256, CSYS 256.
CS 260. Parallel Computing. 3 Credits.
Taxonomy of parallel computers, basic concepts for parallel computing, effectiveness and scalability, parallel algorithms for variety of problems, distributed memory and shared memory paradigms. Prerequisite: CS 124.
CS 265. Computer Networks. 3 Credits.
Introduction to the theoretical and pragmatic principles and practices of computer networking. Topics include: local area networks; the Internet; network and world-wide-web application programming. Prerequisites: CS 110; CS 121; STAT 143.
CS 266. Network Security&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 274. Computer Graphics. 3 Credits.
Graphical representation of two- and three-dimensional objects on color raster displays. Line generation, region filling, geometric transformations, hidden line and surface removal, rendering techniques. Prerequisites: CS 104 or CS 124; MATH 122 or MATH 124 or MATH 271 recommended.
CS 275. Mobile Apps & Embedded Devices. 3 Credits.
A projects-based course focused on applications development on wireless and embedded platforms, including iOS, Arduino, and Linux-based devices. Emphasis on C programming and cyber-physical systems software. Prerequisite: CS 120, CS 124. Pre/co-requisites: Recommended: CS 148 or CS 204.
CS 287. 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. 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 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 295. Special Topic:Computer Science. 1-18 Credits.
See Schedule of Courses for specific titles. Subject will vary from year to year. May be repeated for credit with instructor permission.
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. Pre/co-requisites: Computer programming in any language, calculus. (Linear algebra recommended). Cross-listed with: CSYS 302.
CS 332. Data Mining. 3 Credits.
Analytical and empirical techniques for analysis of large volumes of data. Topics include association analysis, classification, clustering, pattern discovery in sequential data, and Bayesian networks. Prerequisites: CS 128 or STAT 143 or STAT 151.
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: BIOL 352, CSYS 352.
CS 355. Statistical Pattern Recogntn. 3 Credits.
Analysis of algorithms used for feature selection, density estimation, and pattern classification, including Bayes classifiers, maximum likelihood, nearest neighbors, kernels, discriminants, neural networks, and clustering. Prerequisite: STAT 241 or STAT 251 or Instructor permission. Cross-listed with: STAT 355, CSYS 355.
CS 381. Seminar. 1 Credit.
Presentations by students, faculty, and guest speakers on advanced topics in Computer Science. May be repeated up to three times for credit.
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 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-6 Credits.
Independent readings and investigation under the direction of a faculty member. Prerequisite: Instructor permission.
CS 395. 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.