Welcome to Software Systems at Olin College, Spring 2019.  

Instructor: Allen Downey.

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

Topics: Operating Systems, Networks, and System-level Programming in C, including threads, scheduling, synchronization, virtual memory, processes, and file systems.  Students in this class should:
  • Develop skill in system-level programming in C, and
  • Gain an understanding of the software systems that underlie common application programmer interfaces.
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
Downey, The Little Book of Semaphores.

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 6-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.  However, I have found that if I offer make-up quizzes, it takes a surprising amount of my time to distribute, collect, and grade them.  In order to manage this overhead, I generally don't offer make-up quizzes; instead, I drop each student's lowest quiz.  That way, if you miss one quiz, it will not hurt you, and if you have perfect attendance, you get a small bonus.  However, if you need to miss more than one quiz, I can offer a make-up quiz for the second quiz you miss.

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