COMP 40 — Fall 2014

Machine Structure and Assembly Language Programming

Required steps before start of class

All incoming COMP 40 students should immediately read the information page for new students. By end of day Aug. 28th, 2014 you must sign up for a lab and fill in a questionnaire we will use to pair you with a programming partner in time for the first day of class. You should also be aware of the textbooks you will need at the start of class (mostly available online). If you are out of reach of computer networks and can't choose labs and respond by Aug. 28th we will take care of things at the end of the first class; your chances of getting a partner with a compatible schedule go up if you respond on time.

Please do not register for a lab or fill out the questionnaire unless you have successfully registered for COMP 40. See below for steps to take if you are not registered but would like to get into the class.

Update on Enrollment Limits and Registration Procedures
Latest update to waitlist information page was Aug. 26th at 4:45 PM

The Computer Science dept. has announced enrollment restrictions for certain Fall 2014 Computer Science Courses including COMP 40, and a note was published giving details of the registration procedures.

On August 20th the enrollment limit for COMP 40 was raised from 80 to 100, enabling us to accomodate all students then on waiting list. More information about the waiting lists and procedures relating to them is available on the COMP 40 Waiting List Information Page. After admitting waitlisted students the course may again be full and we do not expect to further expand the size of the class; see the waiting list information page for instructions to follow if you want to register to fill spaces that may open if a current student drops the course. Note that adding students to COMP 40 is very difficult after the first day of class, because we begin intensive work on projects; if you are registered and know you will be dropping, please inform us immediately so we can give your space to someone else.

Course Overview

COMP 40 will give you two important experiences:

  1. You will turn the corner from introductory programming to programming as a professional
  2. You will study in detail the structure of modern computers, and that in turn will add greatly to your understanding of how computer hardware, operating systems, compilers, language runtimes and other tools work together to influence the performance of your programs

These two goals are very closely related: all good computer professionals know how to apply deep knowledge of computing systems to their programming projects and to their research in computer science. Whether you are a newly confirmed CS major, someone who is considering a CS major but is unsure, or a student from another field who is interested in a deep look at some of the most important technologies of our time, COMP 40 should give you an intense, realistic and (we hope!) exciting look at how modern computers work.

For more information about the course see the about COMP 40 page, which includes a section on prerequisites.


Lectures: Tuesdays and Thursdays, 1:30 - 2:45 PM (Robinson 253)
Labs: Friday 10:30 - 11:45 AM or 1:30 - 2:45 PM (Halligan 116 & 118 with overflow in 120)

Attendance at lectures and labs is mandatory. You are responsible for anything that is said in class or lab, including changes to homework assignments, in-class exercises, and useful information not documented elsewhere.


The instructor for the course is Professor Noah Mendelsohn. Contact information for Noah, office hours, etc. is available from Noah's Home Page.

Our graduate teaching assistants for Fall 2014 are Sam Hincks, Sean Butze and Raoul Veroy. As usual, we will have numerous undergraduate teaching assistants who will hold office hours in the Halligan computing labs. Schedules for the undergraduate assistants will be posted and updated in Piazza.

For most technical questions you should use Piazza, but for individual questions about grades, etc. Once the term begins, the e-mail address will reach Noah Mendelsohn and all graduate teaching assistants.

Getting Help

COMP 40 covers a wide range of complex material. Even top students typically will need help regularly learn the material and complete assignments. Details on various resources available to you are described on the course administration page.

Policies and procedures all students are required to know

All students are expected to understand and obey all of the rules and policies outlined on the course policies and administration page. These include especially the principles of academic integrity and the course policy on collaboration.

The same page also provides important information about course grading policies, homework, etc. Use the Piazza forum. You may also use other on-line sources, but when you do, you must observe the principles of academic integrity and the course policy on collaboration.


Your candid comments on any aspect of the course are always welcome. For ideas you want to share with the rest of the COMP 40 community, please post in Piazza. Thanks to Chloe Lopez, you can also send an anonymous comment directly to Noah Mendelsohn. Click on the link which will get you a form on which you can submit your comment.

COMP 40 in its current form was originally created and taught by Prof. Norman Ramsey. Since then the course has been taught and adapted by Noah Daniels and most recently by Mark Sheldon. Much of the written course material and almost all of the programming assignments have been carried over or adapted from their earlier work. Credit for the best of it goes to them; responsibility for any problems lies with the current instructor.

Noah Mendelsohn (
Last Modified 26 August 2014