Computer Science 61 and E61
Systems Programming and Machine Organization
Harvard School of Engineering and Applied Sciences
Eddie Kohler — Margo Seltzer
Lectures: Tuesday/Thursday, 2:30-4:00
Location: Northwest B100
Course Description | Schedule | Course staff, sections, office hours | Section notes
Infrastructure | Git | Resources | Coding style | C patterns
Extension school | Lecture videos
Piazza | Grading server | Lecture feedback
- Final preparation: Question bank, Answers to question bank, Topic list
- Assignment 6 Released!
- Midterm Solutions
- Lectures and exercises
- Synchronization and Networking: 1, 1X (Dobby the elf); 2; 3X (The Bathroom); 4, 4X (spy)
- Shell: 1, 1X (weensy pipe, solution video); 2, 2X (baby shell, solution video); 3, 3X (Sieve of Eratosthenes, solution video); 4, 4X
- Kernel: 2, 2X (solutions); 3X (weensy mmap, solution video); 4, 4X (kmalloc, solution video)
- Storage: 1X (matrix multiply, solution video); 2, 2X (eviction policies, solution video); 3, 3X (single-slot cache); 4, 4X (single-slot writing); 5, 5X
- Assembly: 1, 1X (solution video); 2, 2X (solution video); 3, 3X
- Fundamentals: 1, 1X (treasure); 2, 2X (c-sizer, solution video); 3, 3X (arena allocator, solution video); 4; 5X (GC, solution video)
- Assignments: Assignment 1, Assignment 2, Assignment 3, Assignment 4, Assignment 5, Assignment 6
CS 61 is an introduction to the fundamentals of computer systems programming. Topics include 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. CS 61 is suitable for both computer science concentrators and non-concentrators.
We want CS 61 to be fun and challenging, but not necessarily to require tons of work. Computer systems rock!
New in 2016! We will be teaching CS61 in a hybrid style. Each class meeting will be split into two approximately equal parts. The first will be an interactive, lecture format; the second part will be small group problem solving. The in-class problems provide practice on material covered in the lecture and prepare you for tackling the assignments. Attendance is mandatory. If you have a laptop, please bring it to class charged. If you do not have a laptop, please see either Professor Kohler or Seltzer (while not every student will require a laptop for every class, we will probably ask that you complete exams on a computer, so if you don't have one you can bring to class, we'll supply one for you).
- Note: This course requires programming in C. Ideally you should already have experience programming in C. If you have not previously programmed in 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. More Information
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).