Quick links

Course Catalog

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.

Classes: Two 90-minute lectures. Self-scheduled computer laboratory.

COS116 - The Computational Universe (Unavailable)

Computers have brought the world to our fingertips. This course explores at a basic level the science "old and new" underlying this new computational universe: propositional logic of the ancient Greeks (microprocessors); quantum mechanics (silicon chips); network and system phenomena (Internet and search engines); computational intractability (secure encryption); and efficient algorithms (genomic sequencing). Ultimately, this study makes us look anew at ourselves: our genome; language; music; "knowledge"; and, above all, the mystery of our intelligence.

Cross-listed as EGR116.

Classes: Two 90-minute lectures, one three-hour laboratory.

COS126 - General Computer Science: An Interdisciplinary Approach (Fall, Spring)

An introduction to computer science in the context of scientific, engineering, and commercial applications. The course will teach basic principles and practical issues, and will prepare 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. No prior programming experience required. Video lectures, one or two classes, two preceptorials.

Cross-listed as EGR126.

Classes: Video lectures, one or two classes and two precepts

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.

Classes: Two 60-minute lectures and two 60-minute preceptorials.
Prerequisite(s): COS 126, ISC 231-234, or approval by the COS placement officer.

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.Two online lectures, two class meetings, one precept.

Classes: Two online lectures, two class meetings, one precept.
Prerequisite(s): COS 126, ISC 231-234, or approval by the COS placement officer..

COS231-236 - An Integrated, Quantitative Introduction to the Natural Sciences I-IV

See ISC231-236.

COS280 - Computational Linguistics

See LIN280.

COS306 - Introduction to Logic Design (Fall)

COS314 - Introduction to Computer Music (Spring)

See MUS314 Department of Music.

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.

Classes: Two 90-minute lectures.
Prerequisite(s): 217 and 226 or instructor's permission.

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.

Classes: Three lectures.
Prerequisite(s): COS 217 and COS 226 or instructor's permission.

COS323 - Computing and Optimization for the Physical and Social Sciences

COS325 - Transforming Reality by Computer (Unavailable)

Capturing and transforming sound by computer for artistic purposes. Emphasis is on the student's own creative use of aural material from the real world, on providing a basic foundation in the signal processing theory and technique most useful for computer music, and on the interaction between the artistic and scientific aspects of the endeavor.

Cross-listed as MUS315 Department of Music.

Classes: Two 90-minute lectures, one preceptorial, one laboratory.
Prerequisite(s): COS 217 and MAT 104.

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.

Prerequisite(s): COS 226 or with permission of the instructor.

COS333 - Advanced Programming Techniques (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.

Classes: Two 90-minute lectures.
Prerequisite(s): 217 and 226 (as corequisite).

COS340 - Reasoning About Computation (Fall, Spring)

An introduction to mathematical topics relevant to computer science. Combinatorics and probability will be covered in the context of computer science applications. The course will present a computer science approach to thinking and modeling through topics such as dealing with uncertainty in data and handling large data sets. Students will be introduced to fundamental concepts such as NP-completeness and cryptography that arise from the world view of efficient computation.

Prerequisite(s): COS 126 and 226 (or sufficient mathematical background), and MAT 202, 204 (students entering Princeton before fall 2015 may use MAT 175). COS 226 can be taken along with COS 340 in the same term. Please contact the professor directly with any questions.

COS342 - Introduction to Graph Theory

COS351 - Information Technology and Public Policy

COS375 - Computer Architecture and Organization (Fall)

An introduction to computer architecture and organization. Instruction set design; basic processor implementation techniques; performance management; caches and virtual memory; pipelined processor design; design trade-offs among cost, performance, and complexity.

Cross-listed as ELE375 Department of Electrical Engineering.

Classes: Two 90-minute classes, one self-scheduled hardware laboratory.
Prerequisite(s): 217 and 306.

COS381 - Networks: Friends, Money and Bytes

Follow us: Facebook Facebook