Welcome to Software Systems at Olin College, Spring 2020.  

Instructor: Allen Downey.

Meetings: Tuesday and Friday, 1:30 to 3:10 in AC326.

Topics: Operating Systems, and System-level Programming in C, including threads, scheduling, synchronization, virtual memory, processes, and file systems.  Project topics may include graphics, networks, embedded systems, and high-performance computing.

Students in this class should:
  • Develop skill in system-level programming in C, and
  • Gain understanding of the software systems that underlie application programmer interfaces (APIs).
The prerequisite for the class is Software Design or intermediate programming skills.

Textbooks:  We will use Griffiths and Griffiths, Head First C
Downey, Think  OS, and some material from

Office hours

I generally don't keep scheduled office hours, but I am happy to meet by appointment.  And if there is demand, I will schedule hours later in the semester.


Work in this course includes
  • Reading and other preparation.
  • In-class exercises.
  • Homeworks.
  • Quizzes.
  • Projects.


Homeworks are primarily programming exercises from ExercisesInC.  They are primarily intended to help you learn, so they are evaluated on a coarse scale.


We will have about 8 in-class quizzes covering material from the readings and in-class exercises.    These are intended to evaluate whether you are keeping up with the class and understanding the content.

Make-up quizzes

I understand that students occasionally have to miss a class.  For that reason, the first missed quiz is excused (that is, the missed quiz is dropped).  If you have to miss a second quiz, please contact me as early as possible so we can schedule a makeup quiz.  If you don't contact me before the quiz, I cannot offer a makeup quiz.  If you miss a third quiz, I cannot offer a makeup quiz.  In those cases, I use a default grade of 4 out of 10, to limit the impact of missed quizzes.  If a student does not miss any quizzes, they get an "attendance bonus": their lowest quiz score is dropped.

You will work on two projects intended to help you develop depth in 1-2 of the course topics.

Your final grade will depend on a weighted sum of your scores for homework, quizzes, projects, and professionalism.

Participation and professionalism

As students, you share responsibility for creating and maintaining a classroom atmosphere that is conducive to everyone's learning and enjoyment.  I hope you will think about how your participation contributes to the learning environment.

Some things you can do to help:
  1. Come to class.  I will do my best to use class time effectively and make it worth your time.
  2. Come to class on time.  Late arrivals are disruptive.
  3. Come to class prepared.  Make sure you have always at least skimmed the reading.
  4. Try not to fall behind.  If we are all working on the same stuff at the same time, everything works better.
  5. Take care of your brain.  Eat well, sleep well, get some exercises.  Come to class ready to work.
  6. Be professional.  If you have to miss a class, or need to submit work late, communicate with the instructor.
  7. Be respectful toward the instructor and your fellow students.
  8. Be generous with your ideas and your time.  Help each other.
  9. Be reflective.  Think about what's working and what's not, and take responsibility for making the class work for you.
  10. Be honest.
  11. Have fun!