From CS61
Revision as of 23:15, 22 September 2015 by Benesch (talk | contribs) (Announcements)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Computer Science 61 and E61
Systems Programming and Machine Organization
Fall 2015

Harvard School of Engineering and Applied Sciences
Fall 2015
Margo Seltzer

Lectures: Tuesday/Thursday, 2:30-4:00
Location: Northwest B100

Course Description  |  Schedule  |  Course staff, sections, office hours
Assignments  |  Section notes  | In-class exercises  
Infrastructure  |  Git  |  Resources  |  Coding style  |  C patterns
Extension school  |  Lecture videos
Piazza  |  Grading server


  • 9/22/15: Skype office hours for remote Extension School students will be weekly on Wednesdays from 9-10am EDT and again from 7-9pm EDT starting tomorrow, 9/23/15.
  • 9/12/15: Regular section and office hour times are posted. Room assignments are still tentative; please check back immediately before your scheduled event for an updated room assignment.
  • 9/11/15: Professor Seltzer will hold office hours for extension students in the web conference room from 10am to noon on Saturdays, starting tomorrow.
  • 9/9/15: Attention extension school students: The college section tonight 7:30-9pm will also be available to extension students who wish to attend it in-person or remotely (via the AdobeConnect classroom). See this Piazza announcement for more information.
  • 9/7/15: Attention extension school students: This week's Skype office hours will be held from 7-9pm on Wednesday (9/9/15). We will try to nail down a permanent schedule by the end of this week, after we have more information on class enrollment and staff availability. See here for more information.
  • 9/5/15: I will be holding extension school office hours from 10:00 AM - Noon EST on Sunday 9/6/15. If you are having difficulty getting your environment set up or want to talk about the course, join me in our web conference.
  • 9/5/15: The video from the first class is up! Click on the videos link above to view.
  • 8/31/15: Extension web conferences will be held Tuesday 7:00 - 8:30 PM EST and Thursday 8:30 - 10:00 PM EST.
  • Attention Extension Students: We will be using live web conferences for the small-group collaborative problem solving that comprises the majority of "class time" in this course. Please review the material here to get everything set up for the first web conference, which will be held Tuesday evening, 9/8 (time TBA). If you have never used the Adobe Connect web conferencing system, we strongly encourage you to attend one of the training sessions.


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 2015! We will be teaching CS61 in a flipped classroom style. This means that you will be required to prepare for each class, usually by watching a video and answering a small number of questions about the contents. We will spend time in class working in small groups, completing problems that will both provide practice on material covered in the videos and prepare you for 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 Professor 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). You can read about Professor Lewis's experience flipping CS20 and Professor Seltzer's experience flipping CS161.


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. 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 the instructor if you are unsure whether you are sufficiently prepared for CS 61.


Computer Systems: A Programmer's Perspective, Second 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.

Additional information

Prior offerings