Description. This course is 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: programming in Java; hardware and software systems; algorithms and data structures; fundamental principles of computation; and scientific computing, including simulation, optimization, and data analysis.

Prerequisites. None.

Textbook. R. Sedgewick and K. Wayne, Computer Science: An Interdisciplinary Approach, Addison–Wesley Professional, 2016. ISBN 978-0134076423. We will be referencing this text all semester. The lectures are based on its contents. The hardcopy version of the textbook is available from: Labyrinth Books. An online version is available via the Princeton Library. Go to Princeton's Safari Tech Books Online. Then visit the online book link.

Please note that errata for the textbook can be found here.

New for Fall 2020!

In response to moving online, we have updated and reformatted COS 126 for Fall 2020. Highlights include:

Typical week. A typical week for a COS 126 student looks like this:


Lectures are provided as studio-produced videos. The lecture schedule can be found here. Each video contains a few embedded questions. You must answer these questions to receive credit for watching lecture.

Note: the first lecture will be live (and recorded!). The remaining lectures will be provided on video. Details to be provided on Monday! Please do not be concerned if you have a conflict and cannot attend the live session. This class will have many whole-class live events (dates and times TBD). Attending these events as they happen is encouraged, but it is not required. We expect many of you to have conflicts. We expect others will not want to get up at 3 AM local time just to attend an event. No worries! We get it. Just watch the recording as soon as you can.

Class Meetings

Class meetings are not lectures; they are activities that include: exam preparation sessions and exams. This semester we will also host a new activity - a series of COS 126 town halls with some exciting guests, offering their insights and opinions on current computer science topics and issues. Zoom information will be posted on Canvas and Ed Discussion.

Labs and Precepts


Labs meet Tuesdays and Thursdays for fifty (50) minutes. Each lab is a self-paced section, and involves working with a partner on interactive exercises and problem sets. Each lab is supervised by a facilitator to answer your questions.


Precepts meet Fridays for thirty (30) minutes. Working within a small group, your preceptor will review key learning objectives for the week's lectures and lab exercises. The precept will involve question and answer, group discussion, etc.


Course software.This course has an associated software package called LIFT that provides a complete Java programming environment. Install it on your computer by following the instructions for your operating system: Mac OS X, Windows, or Linux.

Zoom. We will be using Zoom for labs, precepts, office hours, lab TA hours, etc. Instructions for configuring your Princeton Zoom account can be found here. Also, here's a basic blue background for Zoom.

Canvas. Canvas is a web portal that is used for accessing the course calendar and grades. Various announcements will also be posted on Canvas.

Ed Discussion. Ed Discussion is an online forum where you can ask and answer short questions. We strongly encourage students to answer posted questions!

Ed Lessons. Ed Lessons hosts the course Lab exercises.

TigerFile. TigerFile is our web portal for submitting programming assignments and programming exams.

Booksite. The booksite is a resource that accompanies the textbook for use while online (for example, while programming); it contains the code from the book and solutions to selected exercises. The textbook is for your use when initially learning new material or reinforcing your understanding of that material (for example, when reviewing for an exam).

codePost. You can check your assignment and programming exam feedback and grades on codePost.

GradeScope. Written exams will be given on GradeScope.


Course grades. Course grades are based on

There is no curve: you must earn, at a minimum, 93.0% of the available points for an A, 90.0% for an A–, 87.0% for a B+, 83.0% for a B, 80.0% for a B-, 77.0% for a C+, 73.0% for a C, 70.0% for a C-, or 60.0% for a D. You will fail the course if you earn below 60.0% of the available points.

Midterm exams. There are two two-part exams during the semester. The exams have a written portion and a programming portion. There is no final exam. No makeup exams will be considered without a Dean's recommendation and our approval in advance.

The exam dates are:

We expect that that there will be two or three different time slots per exam. We will announce the timeslots after taking a survey of the class. Stay tuned!

Programming assignments. There are nine programming assignments, all equally weighted. You may drop one one programming assignment. However you may not drop the first programming assignment or the final project.

Late work. Assignments are due on Monday nights at 11:59pm Anywhere on Earth (AoE). Submissions made at 12:00am will be marked late. If any part of an assignment is submitted late, the entire assignment will be marked late. To submit an assignment late, mark the checkbox on our online submission system (i.e., TigerFile) that indicates that your work is incomplete. If the deadline has passed and the checkbox is not marked, we will grade submitted work as-is.

Penalties for late work. Late assignments are assessed a penalty equal to 20% of the possible points on the assignment per day or partial day late. The penalties for your first four late days are automatically waived. Additional late penalties will be waived only in the case of unforeseeable circumstances like medical emergencies, as documented by your Dean or Director of Studies.

Final project. The final project is a large programming project, approximately the length of two programming assignments. It is due on Dean's Date at 5:00pm Anywhere on Earth (AoE). You may not use late days on the final project. We will not accept any work after Dean's Date without a Dean's recommendation.

Regrades. If you feel a mistake has been made grading your work, please use the regrade request features of codePost (programming assignments, programming exams) or GradeScope (written exams). Regrade requests must be submitted within two weeks of your work being returned.

Collaboration Policy

This course permits (and encourages) many forms of collaboration, including with course staff, classmates, and lab TAs. However, you must be careful to collaborate only as authorized below. Here is an executive summary:

COS 126

Your solutions. You must individually compose all of your solutions. The term solutions refers to any of the products created when completing a programming assignment, such as source code (including comments) and the readme.txt file. It includes both finished and unfinished products, regardless of correctness or completeness.

All the rules above continue to apply after assignments are graded and after the end of the semester.

Collaboration with course staff. You are welcome to discuss your solutions with course staff members (instructor and preceptors) in office hours or via private Ed Discussion posts. Do not post or email us your code; instead, submit it via TigerFile - the course submission system.

Collaboration with classmates. We encourage you to discuss common concerns with classmates either private via personal interactions or publicly in the Ed Discussion course forum. These discussions must be kept at a general level, without exposing your solutions.

For example, you may discuss: But, you may not:
  • How to interpret an error message. For example, "What does StackOverflowError mean?"
  • How to use a feature in IntelliJ. For example, "How do I start the embedded terminal?"
  • Clarifications for the lecture videos, lecture slides, textbook, old exam questions, or the assignment specifications.
  • Look at another classmate's solutions (or show another classmate your solutions).
  • Lead a classmate step-by-step through any part of the assignment (or allow a classmate to lead you step-by-step through any part of the assignment).

Collaboration with students who have already taken COS 126. Anyone who successfully completed COS 126 in a previous term, including lab TAs and peer tutors, may assist you in the following ways:

Collaboration with a partner. On certain assignments the collaboration policy is relaxed to allow working with a partner, subject to the following rules:

Collaboration acknowledgment. You must acknowledge all collaboration (except for partner names on group assignments) in the readme.txt file for that week's assignment.


Plagiarism and abetting plagiarism are serious academic infractions. Programming is a creative work and the academic regulations that apply to plagiarizing prose also apply to plagiarizing code. Princeton's Rights, Rules, Responsibilities defines plagiarism as "the use of any outside source without proper acknowledgment." It ranges from "verbatim copying" (e.g., cutting-and-pasting code) to "thorough paraphrasing" (e.g., changing variable names or rearranging code).

Outside sources and citations. Copying or adapting code that is not yours is permitted only if it comes from the course materials (i.e., the course textbook, companion booksite, programming assignment specifications, checklists, lecture slides, lecture videos, labs and precepts). If you do so, you must cite any code that you copy or adapt (with the exception of code that is included with the assignment).

Plagiarism detection. We use sophisticated software tools to detect plagiarism. For example, we compare each submission (including interim submissions) against a code database, which includes all submissions from this offering and previous offerings of the course. While we take no pleasure in bringing cases to the Committee on Discipline; it is our duty to keep the playing field level for the overwhelming majority of students who work very hard in this course and follow the rules.

Penalties. We refer alleged academic violations (including plagiarism and abetting plagiarism) to the Committee on Discipline. If found responsible, the typical penalty is an F as a course grade plus whatever penalty that the CoD imposes. (The typical CoD penalty for plagiarism is suspension from the University for at least one semester.) Violators of course policies that are not adjudicated by the CoD will receive penalties based on the severity of the violation, ranging from a warning (for violations that are both unintentional and innocuous) to an F in the course (for violations that are both intentional and serious).


Below you will find our contact information, though you'll likely get a faster response by posting on our course forum, found on the Help page.

Prof. David August
Instructor of Record

Dr. Alan Kaplan

Dr. Soohyun Nam Liao

Dr. Jérémie Lumbroso

Kobi Kaplan
Course Administrator

Dr. Lennart Beringer

Dr. Esin Tureci

Tara Shankar

Christina Shatford

Beiqi Zou

Nick Dupoux

Susan Tan

Gregory Chan

Ziyang Xu

Johan Ospina

Shunyu Yao

Ted Sumers

Darby Haller

Matthew Myers

Lab Facilitators. Julia Douvas, Kartik Shah, Neyci Estefanía Gutiérrez Valencia, Henrique Schechter Vera , Eileen Wang, Maxwell Xu, Jazz Chang, Shannon Heh, Maya Rozenshteyn, Nicholas Padmanabhan, Anubhav Agarwal, Alexis Sursock, Ellie Bae, Gabriel Grajeda, Danxian Liu, Allison Chou, Jennifer Secrest, Richard Huang, Ryan Eusebi, Alik Zalmover, Robert Rubin, Harvin Sangha, Andra Constantin

Graders. Diamond Acharya, Abhinav Agarwal, Alex Baroody, Creston Brooks, AnneMarie Caballero, Dangely Canabal, Joy Cho, Elise Colter, Ewan Curtis, Vedant Dhopte, Diana Espindola, Adam Gamba, Matthew Higgins Iati, Kenny Huang, Qing Huang, Ian Jaccojwang, Thomas Johnson, AJ Kawczynski, Neha Anil Kumar, Ethan Lam, Monique Legaspi, Mandy Lin, Phoebe Lin, Grace Liu, Joseph Lou, Alex Luo, Shayna Maleson, Zaynab Masood, Katie McLaughlin, Anaika Mehra, Begum Ortaoglu, Hetvi Patel, Sara Schwartz, Amisha Srivastava, Morgan Teman, Morgan Teman, Brian Tieu, Ivy Wang, Lois Wu, Alik Zalmover, Cheyenne Zhang, Melody Zheng