Discussion forum. The best way to ask a short question about the course materials is via Ed Discussion, an online discussion forum where you can ask (and answer) questions.
Lab TAs. Undergraduate lab TAs are available to answer general computing questions in the Computer Science Building small auditorium, room 105. They can assist you in debugging, provided you have first made a reasonable effort to identify the bug and isolate the problem. For non-debugging questions, use Ed Discussion or office hours.
Canvas. You can find links for Zoom office hours, electronic reserves of course materials, and recorded versions of precepts in Canvas.
Precept Assignment. The best way to get a spot in the precept of your choice is to regularly check the registrar's Course Offerings page and/or the listings on TigerHub. In our experience, more than a quarter of the total class enrollment changes precepts during shopping period. The course's teaching staff cannot manage precept assignments. Dramatic unresolved scheduling concerns can be addressed to the department's Undergraduate Program Manager: Colleen Kenny (ckenny@princeton.edu).
For those who access this site on a device that does not display the calendar below well, here is a static image of the weekly schedule.
CH = Corwin Hall, CS = Computer Science Building, ENG = Engineering Quad, EP = East Pyne, FC = Friend Center, MD = McDonnell Hall
![]() Jaswinder Pal Singh Faculty Lead Instructor |
![]() Christopher Moretti Faculty Co-Lead Preceptor |
![]() Kevin Alarcón Negy Faculty Co-Lead Preceptor |
![]() Brian Kernighan Faculty Preceptor |
![]() Khai Evdaev Graduate Student Preceptor |
![]() Baiang Li Graduate Student Preceptor |
![]() Nicholas Yap Graduate Student Preceptor |
||
The staff is complemented by a team of undergraduate course assistants: TBA.
Description. Developing skills for composing large programs, including modularity, abstraction, programming style, and best practices for code development, testing, debugging, and performance tuning. Additionally, an overview of computing environments and architectures, through the C programming language, assembly language, and machine language.
Prerequisites. COS 126, ECE 115, or approval by the COS placement officer.
COS 217 and 226 may be taken in any order. A student planning to take both can do so in the order that best fits their interests and schedule constraints.
Lectures. Lectures meet at 10:40-11:30am on Mondays and Wednesdays in Computer Science 104. Attendance is required. This semester, to aid with participation and student focus, lectures will be device-free. As such, laptops, tablets, and phones are prohibited, except when instructed by course staff (e.g., for attendance) or provided for by an ODS accommodation.
Precepts. Precepts meet twice per week and cover details pertinent to programming assignments and exams. Come prepared to participate in the discussion, not just ask questions. This includes reading the assignment specification before the corresponding precept. Additionally, unlike in lectures, students should bring laptops to precepts and be ready to work on in-class activities.
P02 offers instruction on additional topics beyond the general scope of the course, in exchange for less coverage focused towards each assignment. This precept section is intended for well-prepared students seeking a more independent approach to the course. Students who would prefer a more traditional COS 217 precept experience should change their registration to any of the other precepts.
Required Textbooks. These books have been registered with the University's online bookstore for purchase. They are also accessible on limited electronic reserve from the Reserves menu on Canvas.
Recommended Textbooks.
Reference Manuals. The course uses these manuals, for reference only: