Course Catalog
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.
COS109 - Computers in Our World (Fall)
Computers are all around us. How does this affect the world we live in? This course is a broad introduction to computing technology for humanities and social science students. Topics will be drawn from current issues and events, and will include discussion of how computers work, what programming is and why it is hard, how the Internet and the Web work, security and privacy.
Cross-listed as EGR109.
COS126 - Computer Science: An Interdisciplinary Approach (Fall, Spring)
An introduction to computer science in the context of scientific, engineering, and commercial applications. The goal of the course is to teach basic principles and practical issues, while at the same time preparing students to use computers effectively for applications in computer science, physics, biology, chemistry, engineering, and other disciplines. Topics include: hardware and software systems; programming in Java; algorithms and data structures; fundamental principles of computation; and scientific computing, including simulation, optimization, and data analysis.
Cross-listed as EGR126.
COS217 - Introduction to Programming Systems (Fall, Spring)
Introduction to programming systems, including modular programming, advanced program design, programming style, test, debugging and performance tuning; machine languages and assembly language; and use of system call services.
COS226 - Algorithms and Data Structures (Fall, Spring)
This course surveys the most important algorithms and data structures in use on computers today. Particular emphasis is given to algorithms for sorting, searching, and string processing. Fundamental algorithms in a number of other areas are covered as well, including geometric algorithms, graph algorithms, and some numerical algorithms. The course will concentrate on developing implementations, understanding their performance characteristics, and estimating their potential effectiveness in applications.
COS231-236 - An Integrated, Quantitative Introduction to the Natural Sciences I-IV
COS302 - Mathematics for Numerical Computing and Machine Learning
This course provides a comprehensive and practical background for students interested in continuous mathematics for computer science. The goal is to prepare students for higher-level subjects in artificial intelligence, machine learning, computer vision, natural language processing, graphics, and other topics that require numerical computation. The course focuses on tying together the underlying mathematical principles, numerical algorithms, and how they are used to solve problems computationally. Assignments consist of both conceptual problems and coding portions completed in Python.
Cross-listed as SML305 Center for Statistics and Machine Learning.
COS306 - Introduction to Logic Design (Fall)
COS314 - Computer and Electronic Music through Programming, Performance, and Composition (Fall)
COS315 - Symbolic Music Computing (Spring)
COS316 - Principles of Computer System Design
This course teaches students the design, implementation, and evaluation of computer systems, including operating systems, networking, and distributed systems.The course will teach students to evaluate the performance and study the design choices of existing systems. Students will also learn general systems concepts that support design goals of modularity, performance, and security. Students will apply materials learned in lectures and readings to design and build new systems components.
COS318 - Operating Systems (Fall)
A study of the design and analysis of operating systems. Topics include: processes, mutual exclusion, synchronization, semaphores, monitors, deadlock prevention and detection, memory management, virtual memory, processor scheduling, disk management, file systems, security, protection, distributed systems.
COS320 - Compiling Techniques (Spring)
Understand the design and construction of compilers. Concepts include syntax analysis, semantics, code generation, optimization and run-time systems. Translation of imperative languages (such as C), functional languages (such as ML), and object-oriented languages (such as Java) will be studied. Students will implement a complete compiler for a small language.
COS323 - Computing and Optimization for the Physical and Social Sciences (Fall)
COS324 - Introduction to Machine Learning (Fall, Spring)
Provides a broad introduction to different machine learning paradigms and algorithms, providing a foundation for further study or independent work in machine learning, artificial intelligence, and data science. Topics include linear models for classification and regression, support vector machines, neural networks, clustering, principal components analysis, Markov decision processed, planning, and reinforcement learning.
COS326 - Functional Programming (Fall)
An introduction to the principles of typed functional programming. Programming recursive functions over structured data types and informal reasoning by induction about the correctness of those functions. Functional algorithms and data structures. Principles of modular programming, type abstraction, representation invariants and representation independence. Parallel functional programming, algorithms and applications.
COS333 - Advanced Programming Techniques (Fall, Spring)
This is a course about the practice of programming. Programming is more than just writing code. Programmers must also assess tradeoffs, choose among design alternatives, debug and test, improve performance, and maintain software written by themselves & others. At the same time, they must be concerned with compatibility, robustness, and reliability, while meeting specifications. Students will have the opportunity to develop these skills by working on their own code and in group projects.
COS340 - Reasoning About Computation (Fall, Spring)
An introduction to mathematical topics relevant to computer science. Combinatorics, probability and graph theory will be covered in the context of computer science applications. The course will present a computer science approach to thinking and modeling. Students will be introduced to fundamental concepts such as NP-completeness and cryptography that arise from the world view of efficient computation.
COS342 - Introduction to Graph Theory (Spring)
COS343 - Algorithms for Computational Biology (Spring)
This course introduces algorithms for analyzing DNA, RNA, and protein, the three fundamental molecules in the cell. Students will learn algorithms on strings, trees, and graphs and their applications in: sequence comparison and alignment; molecular evolution and comparative genomics; DNA sequencing and assembly; recognition of genes and regulatory elements; and RNA structure and protein interaction networks. Students will also implement algorithms and apply them to biological data.