Detailed information about this course is available farther down this page, but we find that precept and office hour info is what students really seek on the Info page. Thus, here is the standard weekly schedule of events: lectures, precepts, office hours, and Intro COS Lab availability. Locations are indicated by CS for the Computer Science Building, F for the Friend Center, C for Corwin Hall, and Zoom for scheduled Zoom meetings. Changes in any given week will be announced on Ed. For users of small devices on which the calendar grid does not display well, here is an image version.
The course's teaching staff cannot directly manage precept assignments. 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 (or use a tool that does the same, like TigerSnatch). In our experience, more than a quarter of the total class enrollment changes precepts during shopping period, so there should be ample opportunity for changing into most precepts.
Dramatic unresolved scheduling concerns can be addressed to Sue Giranda (sgiranda@princeton.edu), the course administrator for COS 217.
Christopher Moretti (cmoretti@cs.princeton.edu)
Donna Gabai (dgabai@cs.princeton.edu)
Sue Giranda (sgiranda@princeton.edu)
Samuel Ginzburg (ginzburg@cs.princeton.edu)
Guðni Nathan Gunnarsson (gudni.nathan@princeton.edu)
Jianan Lu (jiananl@princeton.edu)
Wei Luo (wl4563@princeton.edu)
Ashwini Raina (araina@cs.princeton.edu)
Eesha Agarwal '24, Jongnam Ahn '25, Mila Bileska '25, Andres Blanco Bonilla '24, Dimitar Chakarov '24, David Chang '25, Max Gonzalez '23, Quinn Haverstick '25, Rin Kuroda '25, Joshua Lau '26, Windsor Nguyen '25, Lauren Okamoto '24, Louis Pang '24, Indu Panigrahi '23, Daniel Park '24, Aetizaz Sameer '25, Samuel Sanft '25, Kohei Sanno '25, Maithili Singne '23, Michael Tsai '25
Developing programming skills for systems building, including modular program design, programming style, testing, debugging, and performance tuning. Additionally, an introduction to ARM assembly language and machine language.
COS 126 is the prerequisite. More specifically, you should have substantial programming experience using some high-level programming language such as Java or C++. Prior experience with the C programming language is helpful but not essential. If you have not taken COS 126 but wish to start in this course, a placement exam is available. Contact the COS placement officer with any questions.
The course uses these textbooks and manuals:
C Programming: A Modern Approach (Second Edition), K. N. King, Norton & Co. 2008. The book covers the C programming language and advanced C programming.
ARM 64-bit Assembly Language, Larry Pyeatt with William Ughetta, Newnes 2019. Available with Princeton login here. The book covers the ARMv8 assembly language.
Those books are also accessible in limited electronic reserve on the Reserves menu on Canvas.
The Practice of Programming, Brian W. Kernighan and Rob Pike, Addison-Wesley 1999. Available with Princeton login here. The book covers program and programming style. Many of the software engineering topics in the course are derived, in part, from this book.
Linux Pocket Guide, Daniel J. Barrett, O'Reilly 2016 (or 2012 or 2004). Available with Princeton login here. The book covers the most fundamental aspects of the Linux operating system and the Bash shell from the user's point of view.
The course uses these manuals, for reference only: