2011/Main Page

From CS61
Jump to: navigation, search
Computer Science 61:

Systems Programming and Machine Organization
This is the 2011 version of the course. Main site

Harvard School of Engineering and Applied Sciences
Fall 2011
Prof. Stephen Chong

Lectures: Tuesday/Thursday, 2:30-4:00
Location: Maxwell Dworkin G115.

Old Announcements | Schedule | Sections | Course staff and office hours | Course policies | Assignments | Extension Students | Infrastructure | Resources


  • Sun Nov 20 Assignment 6 (Shell lab) has been released. Don't forget to fill in the partner form at http://tinyurl.com/CS61-Shell-HW-2011/ by 11:59pm tonight!
  • Fri Nov 18 Practice final exams are posted on the CS61 isites. College students can access it via my.harvard.edu. Extension School students access it through the Extension School Online Services. Note that section the week of Monday November 28 will cover the 2010 practice final.
  • Wed Nov 16 If you would like to request late days or change the number of late days you're taking on an assignment, please fill out the form at http://tinyurl.com/CS61-fa11-latedays
  • Old announcements


CS61 covers the fundamentals of computer systems programming, machine organization, and performance tuning. This course provides a solid background in systems programming and a deep understanding of low-level machine organization and design. Topics include C and assembly language programming, program optimization, memory hierarchy, caching, virtual memory, dynamic memory management, concurrency, threads, and synchronization.

CS61 is an introductory class to computer systems. It will help you develop the skills to write programs for the real world, where performance and robustness really matter. CS61 is suitable for both Computer Science concentrators, and non-concentrators.

Taking CS61 will help tremendously if you plan to take more advanced courses in Computer Science, such as operating systems, compilers, architecture, or programming languages.

What about the workload? CS61 is not intended to be extremely difficult: we hope it will be fun, and challenging, but not require a tremendous amount of work. Students can work in pairs on the programming assignments during the term. Exams are open-book.


CS 50, CS 51, or the instructor's permission.

Note: This course requires programming in C. You should deeply understand C pointers and arrays before taking this course. 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. See the resources page for pointers to material for learning C. 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. Click here for more information.

College concentration requirements

CS concentrators must take two of CS 50, CS 51, and CS61.

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.

Extension school

CS 61 is offered through the Extension School as CSCI E-61. Information specific to Extension School students can be found on the Extension Students page.

Additional Information