Syllabus
Course Information
- Lecture: Tue/Thu 7:00 PM – 8:15 PM
- Lab: Wed 7:00 PM – 9:30 PM
- Location:SCI III 127
- Office Hours:TBD
- Course Website: https://cs.csub.edu/~dfanucchi/
Course Description
A study of the introductory concepts in operating systems: historical development of batch, multi-programmed, and interactive systems; virtual memory, process, and thread management; interrupt and trap handlers, abstraction layer, message passing; kernel tasks and kernel design issues; signals and interprocess communication; synchronization, concurrency, and deadlock problems. Prerequisite: CMPS 2020 with a grade of C- or better. Prerequisites by Topic: Programming skill in a high level language (preferably C or C++) Knowledge of data structures and algorithms. NOTE: This course makes extensive use of the C programming language. Students who have only learned C++ should review a C tutorial for the differences between C ("pure C") and C++. Transfer students who have CMPS 2020 credit due to a Java course will need to take a more intensive self-directed study of the C programming language, as there are many syntax differences between C and Java.
Learning Outcomes
- Explain and apply OS principles (processes, threads, scheduling, memory).
- Write concurrent programs with synchronization primitives and reason about correctness.
- Analyze CPU scheduling and memory allocation strategies.
- Understand protection/security and resource management in OS design.
- Build/evaluate components of a simple OS in C.
Texts & Resources
- Operating Systems: Internals and Design Principles, William Stallings (9e).
- Optional: K&R The C Programming Language; Kerrisk The Linux Programming Interface.
Student Learning Outcomes
This course covers the following ACM/IEEE Computer Science 2013 Body of Knowledge student learning outcomes in Operating Systems (OS):- OS/Overview of operating systems
- OS/Operating systems principles
- OS/Concurrency
- OS/Scheduling and dispatch
- OS/Memory management
- OS/Security and protection
- CE-OPS0: History and overview
- CE-OPS1: Design principles
- CE-OPS2: Concurrency
- CE-OPS3: Scheduling and dispatch
- CE-OPS4: Memory management
- CE-OPS6: Security and protection
- CE-SRM-1: History and overview of operating systems
- CE-SRM-2: Relevant tools, standards, and/or engineering constraints
- CE-SRM-3: Managing system resources
ABET Outcome Coverage
The course maps to the following performance indicators for Computer Science (CAC/ABET) and Computer Engineering (EAC/ABET):
- (CAC Outcome 1) An ability to analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
- Laboratory and homework assignments
- (CAC Outcome 2) An ability to design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program's discipline.
- Final project
- (EAC Outcome 1) An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics.
- Laboratory and homework assignments
- (EAC Outcome 2) An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors.
- Final project
- (EAC Outcome 6): An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgement to draw conclusions.
- Laboratory and homework assignments
Grading
Component | Weight | Notes |
---|---|---|
Labs, Homework, Quizzes | 55% | Weekly labs; short online quizzes. |
Midterm Exam | 10% | In-person; 1 reference sheet allowed. |
Project | 20% | Multi-part programming project. |
Final Exam | 15% | Cumulative with emphasis on later topics. |
Letter Grades
Letter | Min % | Letter | Min % | Letter | Min % |
---|---|---|---|---|---|
A | 93 | B | 83 | C | 73 |
A- | 90 | B- | 80 | C- | 70 |
B+ | 87 | C+ | 77 | D | 63 |
D+ | 67 | D- | 60 | F | <60 |
Lecture Topics & Rough Schedule
Subject to change; check the homepage for updates.
Week | Chapters | Topic |
---|---|---|
1 | 1–2 | OS overview; course logistics |
2 | 1–2 | History & system structures |
3 | 3 | Processes and process control |
4 | 4 | Threads and multithreading |
5 | 4 | Kernel architectures; SMP & microkernels |
6 | 5 | Concurrency; race conditions |
7 | 5 | Semaphores, monitors |
8 | 6 | Deadlocks |
9 | 6 | Kernel concurrency case studies |
10 | 7 | Memory management |
11 | 8 | Virtual memory |
12 | 9 | CPU scheduling |
13 | 10 | Real-time scheduling |
14 | 11 | I/O, storage, file systems |
15 | 15 | Security & protection; review |
Policies & Expectations
Attendance
Class and lab attendance are required. Be ready to begin at start time.
Labs
- Arrive on time and work the entire period unless excused.
- Your program should compile and run by the end of lab.
- Lab machines are the reference environment.
Homework
Primarily short web-based quizzes. Some labs may continue as homework.
Programming Standards
- Put your name at the top; correct filenames and directories.
- No compile warnings or errors; clean, well-formatted output.
- Use consistent C style (K&R preferred).
Exams
Midterm around Week 9; cumulative final per university schedule.
Late Work
Late submissions are generally not accepted and may receive a zero.
Academic Integrity
All work is individual unless stated otherwise. Discussing ideas is OK; sharing code/answers is prohibited.
Academic Accomodations
To request academic accomodations, please contact the Office of Services for Students with Disabilities (SSD) and email me an accomodations letter from the SSD Office. Policies from the SSD Office relating to accomodations, such as scheduling policies for using their testng center, must also be followed. For more information about the services and policies of the SSD Office, contact their staff by email and/or visit their website at https://www.csub.edu/ssd/
Subject to change: updates will be posted on the course site.