It is generally expected that programming projects will be worked on by teams of two students per team. Written assignments are to be done individually. Collaboration between teams (for programming projects) or between individual students (for written assignments) is not permitted. Any departure from these policies will be explicitly stated before the work is assigned. Cases of academic dishonesty (presenting other people's work as your own) will be dealt with severely. This is all in accordance with Clark University's policy on academic integrity.
That being said, a certain degree of interaction between individual students or between teams is permitted. Discussions regarding the nature of the assignment, clarifications about what needs to be done, and even an occasional technical tip (e.g., "what class do I need to create a thread?") are encouraged. But the actual design, coding and debugging of a programming project is to be done only by a single team, and written assignments are done only by individual students.
Course Outline
We will mostly follow the development in the book. Many topics in the Linux chapter (21) will be sprinkled among the various topics, as examples (including examples from other flavors of UNIX). The syllabus below is subject to change. General topics include [with brackets indicating chapters in the text]:
- Overview and basic terminology [1]
- Computer system architecture, primitive I/O [1, first two sections of 13]
- Operating Systems Structures [2]
- Processes and Threads [3, 4]
- CPU Scheduling, Process Synchronization and Deadlocks [5, 6, 7]
- Main memory [8]
- (Midterm somewhere around chapter 8)
- Virtual Memory [9]
- File and I/O Systems [10, 11, 12, 13]
- Distributed Systems [16, 18]
- Protection and Security [14, 15]
- Case Studies [TBA]
Other Links
Back to Fred Green's Home Page