CSE 120: Principles of Operating Systems (Summer I, 2012)
Instructor:
Kevin Webb
Office hours: Tue 11:00 AM - Noon, Wed 1:00 PM - 2:00 PM in EBU3b 2211
Teaching Assistant:
Mike Conley
Office hours: Mon 5:00 PM - 6:00 PM, Thu 2:00 PM - 3:00 PM in EBU3b B240A
Lectures: Mon, Tue, Wed, Thurs 9:30 AM - 10:50 AM, SOLIS 109
Discussion: Mon 3:30-4:50, HSS 1128A
Final Exam: Friday, August 3, 8:00 AM - 10:59 AM, SOLIS 111
Messages
-
The course is completed. Best wishes with your future studies at UCSD!
-
I cannot give you your final exam, but if you would like to see it, send me an
email and we can arrange a time to look over it. I will post grades on
GradeSource and through the official UCSD grade reporting system as soon as
possible.
Description
This is an introductory course on the principles of operating systems. Topics
include processes, scheduling, synchronization, memory management, virtual
memory, file systems, I/O, protection, security, networking, and distributed
systems. There is a significant systems programming component to the course,
where students are required to design and implement some basic kernel functions
(context switching, scheduling, synchronization) and a user-level thread
package.
The structure of this course is different from most other courses at UCSD.
We'll be using a teaching model called Peer
Instruction, which places a stronger emphasis on classroom discussion and
student interaction. This course will be podcasted, and we may occasionally pass
around a microphone to capture student discussion as part of the podcast audio
recording. If you do not wish to be recorded, you may decline to use the
microphone.
The course is composed of the following:
-
Readings: The readings serve as a first exposure to new topics, where
students learn the basics of the material.
-
Lectures: The lecture material will cover the difficult concepts and
facilitate student discussions.
-
Discussion Section: The discussion sections are led by the TA, and may be
organized as discussions on specific topics or question/answer sessions.
-
Labs: There are four lab programming assignments (in C)
using Umix, a Unix-based user-mode operating system.
-
Exams: There is a midterm exam and a final exam (both closed-book)
covering the material in the lectures and the labs.
Resources
Required Materials
- iClicker remote (Register it here!)
- Textbook:
Operating System Concepts Essentials, by Silberschatz, Galvin, Gagne; Wiley, 2011
OR
Operating System Concepts, 8th Ed., by Silberschatz, Galvin, Gagne; Wiley, 2008
These two books are nearly identical for our purposes. I listed the
essentials version as the required text for the course because it's
cheaper, but either will serve just fine.
Schedule
- Week 1
July 2: Introduction
July 3: Processes
July 4: Independence Day Holiday, No class
July 5: Scheduling
July 8: Programming assignment 1 due @ 10:00 PM
- Week 2
July 9: Scheduling
July 10: Synchronization
July 11: Interprocess Communication
July 12: Deadlock
July 15: Programming assignment 2 due @ 10:00 PM
- Week 3
July 16: Memory Management
July 17: Midterm
July 18: Memory Management & Logical Memory
July 19: Logical Memory & Virtual Memory
July 22: Programming assignment 3 due @ 10:00 PM
- Week 4
July 23: Virtual Memory
July 24: File System Design
July 25: File System Implementation
July 26: Input/Output
- Week 5
July 30: Protection
July 31: Networks
August 1: Distributed Systems
Programming assignment 4 due @ 10:00 PM
August 2: Final Exam Review
August 3: Final Exam (8:00 AM, SOLIS 111)
Programming Assignments
-
PA1: Context Switching, due Sunday, July 8 at 10:00 PM.
-
PA2: Scheduling, due Sunday, July 15 at 10:00 PM.
-
PA3: Synchronization, due Sunday, July 22 at 10:00 PM.
-
PA4: Threads, due Wednesday, Aug 1 at 10:00 PM.
NOTE: The programming assignments for this course will only work on
ieng9.ucsd.edu.
Late Policy: No programming assignments will be accepted beyond the deadline - no exceptions.
Collaboration policy: You may not work with other students on your programming assignments. You may (and are encouraged to) share test cases or program output with one another on the message board, but do not share any code that is a part of the materials that will be turned in.
Grading
-
5% Reading quizzes (Graded clicker questions)
-
5% Class participation (Non-graded clicker questions + discussion)
-
30% Programming assignments (four assignments, each worth progressively more points: 3%, 6%, 9%, 12%)
-
25% Midterm exam
-
35% Final exam
I will drop your lowest reading quiz grade.
Having an iClicker remote is crucial for class participation. To incentivize
purchasing your iClicker quickly, I will drop an additional reading quiz grade
for students who use their iClicker during the first or second days of class
(July 2 or 3).