Course Summary

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.

New COMP40 Students

Many students are eager to get a head start on the COMP40 material so that they can arrive as prepared as possible to the first day of class. Here is what you can do to prepare:
  1. When COMP40 begins, you will be making an immediate transition from C++ to C. Be ready for this. Our resources page provides some great tutorials on this transition.
  2. Read our admin page. This page is a comprehensive review of our course policies. You will be expected to adhere to these policies, so a good start is to know what they are. Pay particular attention to our course coding standands and our pair programming conduct guidelines.
  3. Use this signup link to join our Piazza forum.
  4. Make sure that you have access to our course textbooks, which are listed below. In particular, the Hanson book describes the Swiss army knife of tools that will be provided to you for use throughout the semester.
  5. Familiarize yourself with our Halligan Helper system. This is how students can request help from TAs during office hours.

Textbooks

The following two textbooks are required:

Textbook: C Interfaces and Implementations by David R. Hanson
ISBN: 9780201498417
Online access: via Tufts Library
There is also a PDF Quick Reference.

Textbook: Computer Systems: A Programmer's Perspective, 3rd edition by Bryant and O'Hallaron
ISBN: 9780134092669
Important: Make sure you avoid the "International" or "Global" version of this textbook. While substantially cheaper, many of the chapter practice problems have been rewritten by the publisher and contain many errors and inconsistencies.

Additional books that you may fine useful are listed on our resources page.

Schedule

Office Hours with Richard: Tuesdays 10:30 - 11:45 AM EST
Synchronous Q/A Sessions: Thursdays 10:30 - 11:45 AM EST
Location: Online
Zoom ID: richardtownsend

Labs: Friday 10:30 – 11:45 AM, 12:00 – 1:15 PM, and 1:30 – 2:45 PM EST
Location: Online

Midterm Exam: Tuesday, March 30th
Final Exam: Monday, May 10

Staff

Instructor: Richard Townsend
Zoom ID: richardtownsend
Email: richard@cs.tufts.edu
Virtual Office Hours: Tuesday 10:30 - 11:45 AM EST

Instructor: Megan Monroe
Email: mmonroe@cs.tufts.edu

Our teaching fellows are Ben London, Byron Zhong, Immy Eads, and Sejal Dua. We also have an army of undergraduate teaching assistants who will hold office hours. Schedules for the undergraduate assistants will be posted and updated on Piazza.

Please refer to our admin page for guidelines on how to contact our course staff with questions and feedback.