Welcome to Software Systems at Olin College, Fall 2012.

Instructor: Allen Downey.

Meetings: Section 1: Monday and Thursday from 10:50am to 12:30pm in AC318.  Section 2: Monday and Thursday from 1:30pm to 3:10pm in AC318.  Here is the class mailing list.

Topics: Software Systems covers topics in Operating Systems, Networks, and System-level Programming in C, including threads, scheduling, synchronization, virtual memory, processes, file systems, networking, messaging and remote procedure calls, and security.  It is intended to: 
  1. Give students an understanding of the software systems that underlie common application programmer interfaces,
  2. Allow students to apply tools of system analysis and performance evaluation, and
  3. Allow students to develop skill in system-level programming in C.
The prerequisite for the class is Software Design or intermediate programming skills.

We use Max Hailperin's Operating Systems and Middleware, Olin College Edition.  Prof. Hailperin made this book available under a free license that allows me to make an abridged version tailored for this class.  You can download the book in PDF or buy a hardcopy from Lulu.com.

The other required textbook is Griffiths Head First C.  If you want an electronic copy from O'Reilly, I will give you a discount code.

Course WorkWork in this class includes readings from the textbook and other sources, homeworks, two midterm exams, and a final project.

The total course load is intended to be 12 hours per week (including class time); the load should be spread evenly across the semester.

Final grades are determined by a weighted average of exam scores, project score, quizzes, homeworks, and an additional factor that reflects my subjective impression of the quality of your work, your progress and effort, and your contribution to the educational goals of the class.

 Students will work in small teams on an extended project of the students' choice.  These projects might include system level programming, workload measurement and modeling, modification of existing systems, or implementation of new operating system features.

Exams: Midterm exams are tentatively scheduled for xxx and xxx.  If there is a problem with either of those dates, please let me know as soon as possible.  Both exams will be during a regular class meeting.  The final exam will be during the final exam period.

Quizzes: We will have about one quiz per week.  The quizzes are intended to help both you and me figure out how things are going.  They make up a small part of the final grade.  Since there are many quizzes during the year, it is too complicated to try to schedule alternative dates.  Instead, I will drop the lowest quiz score at the end of the semester.

Homeworks: We will have (roughly) weekly homeworks where you will apply the principles we learn in class and practice related skills.