Systems Programming and Machine Organization
This is the 2011 version of the course. Main site
Harvard School of Engineering and Applied Sciences
Prof. Stephen Chong
Lectures: Tuesday/Thursday, 2:30-4:00
Location: Maxwell Dworkin G115.
- 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.
- 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.
- Schedule and Lecture Notes
- Section information (including schedule and notes)
- Course Staff and Office Hours
- Course policies (including late days, extensions, collaboration, attendance, and assessment)
- Instructions on using the CS 61 infrastructure
- Extension Students
- 2011/Version Control Software
- Additional Resources and Handouts
- Textbook information
- Highscore competition
- Intro to CS 61 lecture - Given in CS 50 on Nov 15, 2010