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 LabTA availability. Locations are indicated by CS for the Computer Science Building, F for the Friend Center, C for Corwin Hall, N for 221 Nassau Street, 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 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. Dramatic unresolved scheduling concerns can be addressed to Colleen Kenny (firstname.lastname@example.org), the COS Undergraduate Coordinator. The course's teaching staff cannot manage precept assignments.
Szymon Rusinkiewicz (email@example.com)
Christopher Moretti (firstname.lastname@example.org)
Xiaoyan Li (email@example.com)
Donna Gabai (firstname.lastname@example.org)
Cedrick Argueta (email@example.com)
Weicong Dong (firstname.lastname@example.org)
Huihan Li (email@example.com)
Maxine Perroni-Scharf (firstname.lastname@example.org)
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: