Quick links

Course Catalog

This catalog is a list of courses that the department may offer in a given year. Not all courses in the catalog are offered every year.

If you are looking for current course information:
-View the Registrar's course offerings page for courses offered this semester.
-Students and faculty can refer to the Undergraduate Announcement for the academic year undergraduate course information.

Undergraduate courses are in the 100 - 400 listing. Graduate courses are in the 400 - 500 listing.

COS451 - Computational Geometry (Fall)

Introduction to basic concepts of geometric computing, illustrating the importance of this new field for computer graphics, solid modelling, robotics, databases, pattern recognition, and statistical analysis. Algorithms for geometric problems. Fundamental techniques, for example, convex hulls, Voronoi diagrams, intersection problems, multidimensional searching.

Classes: Two 90-minute lectures.
Prerequisite(s): 226 and 340 or equivalent.

COS455 - Introduction to Genomics and Computational Molecular Biology (Fall)

See QCB455.

COS461 - Computer Networks

This course studies computer networks and the applications and services that run on them. The course covers concepts in networking including: packet switching; Internet routing and business relationships; IPv4 and IPv6 addressing; the domain name system (DNS), router, switch, and middlebox design; network security; content distribution networks; wireless networks; and networked applications such as streaming video. The course will also include several programming assignments, ranging from client-server programming to network measurement, analysis, and inference

Classes: Two lectures, one preceptorial.
Prerequisite(s): COS 217.

COS462 - Design of Very Large Scale Integrated (VLSI) Systems (Fall)

COS463 - Wireless Networks (Spring)

This course surveys the design and implementation of wireless networks, from underlying digital signals, through bits and error control methods, to their interaction with overlying inter-networking protocols. The course will provide an introduction to the wireless physical layer in a way that is accessible for students with solely a computer systems and networking background. Students will gain an understanding of the principles and techniques behind the design of modern wireless local- and wide-area networks, as well as their interaction with the rest of the Internet.

Cross-listed as ELE463 Department of Electrical and Computer Engineering.

Classes: Two 90-minute lectures and one 50 minute precept
Prerequisite(s): Prerequisite - COS 217. Knowledge of C and one other programming language helpful, but not required.

COS475 - Computer Architecture (Fall)

COS485 - Neural Networks: Theory and Application (Spring)

Organization of synaptic connectivity as the basis of neural computation and learning. Multilayer perceptrons, convolutional networks, and recurrent networks. Backpropagation and Hebbian learning. Models of perception, language, memory, and neural development.

Classes: Two 90-minute lectures and one 50 minute precept
Prerequisite(s): Familiarity with linear algebra, multivariate calculus, and probability theory. Knowledge of Python recommended.

COS487 - Theory of Computation (Fall)

Introduction to computability and complexity theory. Topics will include models of computation such as finite automata, pushdown automata, and Turing machines; decidability and decidability; computational complexity; P, NP, and NP completeness; others.

Cross-listed as MAT407 Department of Mathematics.

Classes: Two lectures, one precept.
Prerequisite(s): COS 340 or equivalent mathematical maturity..

COS488 - Introduction to Analytic Combinatorics (Spring)

Analytic Combinatorics aims to enable precise quantitative predictions of the properties of large combinatorial structures. The theory has emerged over recent decades as essential both for the scientific analysis of algorithms in computer science and for the study of scientific models in many other disciplines. This course combines motivation for the study of the field with an introduction to underlying techniques, by covering as applications the analysis of numerous fundamental algorithms from computer science. The second half of the course introduces Analytic Combinatorics, starting from basic principles.

Cross-listed as MAT474.

Prerequisite(s): COS 226, 340 or equivalent background in mathematics.

COS495 - Special Topics in Computer Science (Spring)

These courses cover one or more advanced topics in computer science. The courses are offered only when there is an opportunity to present material not included in the established curriculum; the subjects vary from term to term.

Cross-listed as EGR485.

Classes: Three classes.

COS496 - Special Topics in Computer Science (Fall)

These courses cover one or more advanced topics in computer science. The courses are offered only when there is an opportunity to present material not included in the established curriculum; the subjects vary from term to term.

Complex networks arise through the analysis of complex systems in many areas of study. Well known areas include social network analysis (e.g. Facebook friends), text citation analysis (e.g. Wikipedia) and biological network analysis (e.g. protein-protein interactions). Complex networks can be distinguished from random networks and from regular networks, such as grids, which are often created by design for applications such as interconnecting computers. This course examines methods of analysis of complex networks and how this analysis can be applied to enhance our understanding of real-world systems.

Cross-listed as .

Prerequisite(s): COS 226 and some experience with linear algebra..

COS497 - Senior Independent Work (B.S.E. candidates only) (Fall)

Offered in the fall, seniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student.

Prerequisite(s): B.S.E. candidates only.

COS498 - Senior Independent Work (B.S.E. candidates only) (Spring)

Offered in the spring, seniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student. The final choice must be approved by the faculty advisor.

Prerequisite(s): B.S.E. candidates only.

COS510 - Programming Languages

Logic and formal reasoning about software, treating programs and programming languages as mathematical objects about which precise claims can be made. Basic concepts and techniques such as operational semantics and axiomatic semantics for specifying programming languages; structure, definition and properties of type systems; invariants and assertions for specifying programs. Use of automated tools such as interactive proof assistants, model checkers, and/or satisfiability-modulo-theories solvers. (Replaces COS 441 beginning AY2012-2013).

Classes: Undergraduates: COS326 or permission of instructor. Graduates: none.
Prerequisite(s): COS226, COS320

COS511 - Theoretical Machine Learning

Can the mechanism of learning be automated and implemented by a machine? In this course we formally define and study various models that have been proposed for learning. The course presents and contrasts the statistical, computational and game-theoretic models for learning. Likely topics: intro to statistical learning theory and generalization; learning in adversarial settings on-line learning; analysis of convex and nonconvex optimization algorithms, using convex optimization to model and solve learning problems; learning with partial observability; boosting; reinforcement learning and control; introduction to theory of deep learning.

COS513 - Foundations of Probabilistic Modeling

This course covers fundamental topics in probabilistic modeling and allows you to contribute to this important area of machine learning and apply it to your work. We learn how to model data arising from different fields and devise algorithms to learn the structure underlying these data for the purpose of prediction and decision making. We cover several model classes--including deep generative models--and several inference algorithms, including variational inference and Hamiltonian Monte Carlo. Finally, we cover evaluation methods for probabilistic modeling as well as tools to challenge our models' assumptions.

Cross-listed as 513 Center for Statistics and Machine Learning.

COS516 - Automated Reasoning about Software (Fall)

An introduction to algorithmic techniques for reasoning about software. Basic concepts in logic-based techniques including model checking, invariant generation, symbolic execution, and syntax-guided synthesis; automatic decision procedures in modern solvers for Boolean Satisfiability (SAT) and Satisfiability Modulo Theory (SMT); and their applications in automated verification, analysis, and synthesis of software. Emphasis on algorithms and automatic tools.

Cross-listed as 516 Department of Electrical and Computer Engineering.

Classes: Two 90-minute lectures
Prerequisite(s): COS 226 and COS 326 (or equivalent programming experience).

COS518 - Advanced Computer Systems

Survey of operating systems covering: early systems, virtual memory, protection, synchronization, process management, scheduling, input/output, file systems, virtual machines, performance analysis, software engineering, user interfaces, distributed systems, networks, current operating systems, case studies. Survey of research papers from classic literature through contemporary research.

Prerequisite(s): COS 318 or equivalent

COS521 - Advanced Algorithm Design

Gives a broad exposure to algorithmic design ideas of the past few decades, and brings students up to a level where they can understand research papers in algorithms. Although designed for computer science grads, it may be suitable for advanced undergrads and non-CS grads as well.

The course is thematically distinct from undergrad algorithms (such as COS 423) in its extensive use of ideas such as randomness, optimization and approximation, and high dimensional geometry, which are increasingly important in applications. It also introduces other concerns that arise today, such as dealing with uncertainty, big data sizes, and strategic (i.e., game-theoretic) behaviors. All necessary mathematical tools will be covered in class.

Classes: Two lectures/week.
Prerequisite(s): One undergraduate course in algorithms (eg COS 423), or equivalent mathematical maturity. Listeners and auditors are welcome with prior permission.

COS522 - Computational Complexity

Introduction to research in computational complexity theory. Computational models: nondeterministic, alternating, and probabilistic machines. Boolean circuits. Complexity classes associated with these models: NP, Polynomial hierarchy, BPP, P/poly, etc. Complete problems. Interactive proof systems and probabilistically checkable proofs: IP=PSPACE and NP=PCP (log n, 1). Definitions of randomness. Pseudorandomness and derandomizations. Lower bounds for concrete models such as algebraic decision trees, bounded-depth circuits, and monotone circuits.

Follow us: Facebook Twitter Linkedin