CS 61: Systems Programming and Machine Organization (2019)
Harvard School of Engineering and Applied Sciences
Eddie Kohler
and Michael D. Smith
Lectures: Tuesday/Thursday, 1:30-2:45
Location: Northwest B103
Course Description
| Schedule
| Course staff, sections, and office hours
Infrastructure
| Git
| Coding style
| C and C++ patterns
Piazza
| Grading server
| Live lectures (DCE)
| Lecture videos (Harvard ID required)
| Lecture feedback
Announcements
Final is in Science Center C on Thursday 12/12, 9am–noon
Exam GitHub Classroom link: https://classroom.github.com/a/4A4CIaTv
Create a repository and set up the grading server now!Problem sets: 0 (Ungraded warmup and tutorial), 1 (Dmalloc), 2 (Bomb), 3 (WeensyOS), 4 (Stdio), 5 (Shell), 6 (Pong)
Lecture notes: Data representation, Assembly, Kernel (in progress), Storage, Process control, Synchronization
Lecture code repository
- Concepts
- Exercises (practice and test prep): Data representation, Assembly, Kernel, Storage, Process control, Synchronization, Miscellaneous
About
CS 61 is an introduction to the fundamentals of computer systems programming. Topics include C, C++, and assembly language programming, performance analysis and improvement strategies, memory management, caching, concurrency, threads, and synchronization.
CS 61 will help you develop the skills to write programs for the real world, where performance and robustness really matter. It will also prepare you for more advanced CS courses, including operating systems, compilers and programming languages, architecture, and graphics. We want it to be fun and challenging.
Full course description with policies
Prerequisites
CS 50, CS 51, or the instructor’s permission.
Note: This course requires programming in C++. Ideally you should already have experience programming in C or C++. If you have not previously programmed in C or C++ but know another procedural language, such as Java, you will likely be able to quickly learn what you need. Talk to one of the instructors if you are unsure whether you are sufficiently prepared for CS 61, or do the ungraded warmup assignment to check your preparation.
Textbook
Computer Systems: A Programmer’s Perspective, Third Edition by Randal E. Bryant and David R. O’Hallaron. More information
College concentration requirements
CS concentrators must take two of CS 50, CS 51, and CS 61. CS 61 may be used as one of the four half-courses in CS to satisfy the requirements for the secondary concentration in computer science. CS 61 may also be used as a technical elective for the primary concentration (if you don't use it to fulfill other requirements).
Extension school
CS 61 is offered through the Extension School as CSCI E-61. See information for Extension students.