Course Description:

This is an introductory but very intense course on the principles of operating systems. The students will learn about operating system structures, processes, threads, CPU scheduling, process synchronization, deadlocks and race conditions, memory management, file system interface, input/output management, and mass storage organization. Elements of current leading POSIX-compliant operating systems will be discussed as case studies and used in the labs. The students will participate in extensive hands-on exercises during both in-class labs and homework assignments.

Student Outcomes:

After completing this course, students will be able to :

  • design and implement complete computer operating systems, their elements and extensions
  • design and implement applications that interface with the operating system through system calls
  • design and implement operating system utilities
  • design and implement multi-process systems including dynamic management of processes such as process creation, suspension, resuming, and termination
  • design and implement inter-process communication (IPC) using a variety of mechanisms such as pipes and queues
  • design and implement multi-threaded applications using POSIX threads
  • design and implement applications that require sharing of computer resources through a number of synchronization mechanisms such as spinlocks, mutexes, semaphores, and monitors
  • implement programs in C with standard C libraries
  • implement applications using the POSIX library
  • implement applications in C with complex data structures realized through both static and dynamic memory allocation, and the use of pointers
  • implement and deploy file systems
  • implement and deploy device drivers
  • organize and express ideas concerning operation of computer system clearly and convincingly in oral and written forms.

Tentative Outline:

  • Overview of Operating Systems
  • Operating Systems Structures
  • Propocesses
  • Threads
  • CPU Scheduling
  • Process Synchronization
  • Deadlocks
  • Main Memory
  • Virtual Memory
  • File Systems
  • Mass Storage Structure
  • I/O Systems


COMP 151, COMP 162, COMP 232, and COMP 262 with a minimum grade of “C-“.

Very good practical C programming skills are assumed in this course as C will be used in all assignments. Therefore, a recent edition of COMP232 is highly recommended.

Students that do not satisfy the prerequisite requirements will have to withdraw from the course.

Instructor: AJ Bieszczad

Office: Sierra Hall Laboratories 3315
Phone: (805) 437-2773
Office hours: Mondays, Thursdays 12-1 pm

Teaching Assistant for Labs: Nick Dolan-Stern

Office: Bell Tower West Room 1205
Phone: TBD
Office hours: TBD

Office hours are not class replacements! Please come with questions written down on paper, so we can communicate efficiently. You should be able to explain how you have tried to answer the question and why you have problems.

Communication Policy:

The instructors will respond to your inquiry within 24 hours except weekends (5 pm on Friday and 8 am on Monday) and holidays. If we do not reply in this timeframe, please assume that we did not receive your email and contact us again.

Please manage the communication diligently.

Recommended Textbook:

Title: Operating System Concepts Essentials, 2nd Edition
Author: Abraham Silberschatz; Peter B. Galvin; Greg Gagne
ISBN: 978-1118804926
Publisher: Wiley
Publication Date: November 18, 2013

Recommended Books for Labs:

Title:    Mastering Linux
Author:    Paul Wang
ISBN    978-1-4398-0686-9
Publisher:   C R C Press LLC
Publication Date:    September 22, 2010

Title:    The Linux Programming Interface
Author:    Michael Kerrisk
ISBN:    978-1-59327-220-3
Publisher:    No Starch Press, Incorporated
Publication Date:    October 27, 2010

Instructional Approach:

This is a balanced course that will keep students involved throughout the semester through theoretical studies and and intense programming hands-on assignments.

A self-study study set will be assigned each week along the lecture notes, so the students can reinforce the theoretical knowledge from the lectures. Self-study assignments are not graded, but to be admitted to the following quiz the student must complete the corresponding self-study set and formally submit the answers. The quizzes will consist exclusively of random questions from the self-study sets.

Labs are hands-on exercises in which students will be solving a number of programming tasks each week. Most of the labs have extensive instructions that must be followed closely. Any arising questions will be answered on the whiteboard as much as practically possible, so that the whole class rather than just the individual student asking the question may learn. Students will work on the assignments independently and submit answers individually, but they may discuss solutions to the problems with their direct neighbors. Copying any portion of the code is strictly prohibited however.

Programming tasks will usually take longer to finish than the time allocated in the labs, but the students are required to submit a snapshot of their work at the end of each in-class lab before leaving the lab. A snapshot is a regular submission and should follow the submission standards. Students will be able to submit multiple times. Violating the snapshot submission requirement will result in zero points for the whole lab segment.

Unless stated differently in the calendar, each homework (self-study) is due by the start of the following lab meeting, and each lab submission is due by the following lecture. The submission facility for a given task will not be visible after the deadline for that task. The deadlines will be strictly enforced; i.e., no extensions will be given for any but formally-verified medical reasons.

There will be two final exams: one from the theory (362) and one from the lab (362L). The theoretical part will consist exclusively of a selection of questions from the study sets. The practice part will consist of a number of programming tasks involving some aspects of programming paradigms and techniques practiced in the labs. The dates of the exam parts are available in the CSUCI Schedule ( and in the course calendar.


Students will use Linux Ubuntu ( in this class. Many of the labs should also run in any POSIX ( -compliant systems (such as Mac OS X or Cygwin), but some (e.g., the projects) will have to be implemented on Ubuntu.

There are a number of options to install Ubuntu as explained in

The course will take a pragmatic approach to UNIX development; that is, command line tools will be used ( All needed command-line tools (like gcc, gdb, etc.) will be briefly introduced in the labs. GEdit is a standard GUI text editor in Ubuntu, but there are numerous other text editors available on UNIX platforms starting with command line tools like vi, nano, or emacs, and ending with sophisticated GUI programmer’s editors like Sublime, Atom, JEdit, or Editra.

Lab submission standards:

  • Students must follow submission the standards described in the Labs section of the course. Violating that principle will imply penalties.
  • Labs that do not have a snapshot submitted at the end of the lab meeting will not be graded and the student will get “F” from the whole lab segment. Attendance will be taken to verify that the snapshot was taken in the classroom and submitted from the classroom. Any discrepancy will be considered a violation of academic code and will invalidate the submission.
  • The most recent lab submission made before the deadline will be graded. The last submission may be done from home. The instructor reserves the right to assign a grade that is consistent with the student activity and progress observed in the classroom.
  • Programs that do not compile will not be graded and the student will get zero points.
  • Parts of the submitted code that are commented out will be ignored.
  • Submissions missing session scripts that show compilation and test runs, as well as submission with missing test results (such as input and output files) will be rejected and the student will get zero points.
  • Files that are not signed by the submitter (as explained in the lab rules) will be rejected and the student will get zero points.
  • Programs that are not well-formatted will imply a 10% penalty.

Testing (quiz and final) standards:

  • All testing is done online through Blackboard either from the classroom or from the disability accommodation center.
  • Students must use university computers.
  • All tests and exams are closed-book. Students are not allowed to use any sources other than their own brains.
  • Only a browser with one window and no more than one tab is allowed. The Mac OS X Spotlight (a magnifying glass icon in the upper right corner of the screen) can be used for any necessary calculations.
  • Only plain text should be used in the submissions. Anything illegible (e.g., severely misformatted) will not be graded. Unfortunately, Blackboard often reformats submissions, so please make sure that it gets through correctly.
  • The tests and the exam are timed; they close and submit automatically on the deadline. No extensions will be given.
  • Activity monitoring software will be used to monitor student activities. Any material collected in that way will be used only for the purpose of proper course management including grade assignment and any appeals.
  • There will be no restroom or any other breaks.

Any violation of these rules, or any other rules of the academic code, will result in automatic “F” and the offenders will be reported to the Judicial Affairs. If multiple individuals are involved in the violation (e.g., two students submit same, or in the judgement of the instructor very similar, work), then all will be sanctioned.


The grades are a reflection of the efforts put by the student to fullfill the credit requirements of the course. All grades are computed automatically by the grading system in Blackboard.

There will be one course grade for both the lecture and the lab sections. The final grade will be calculated as the weighted average of the student’s average grades from the quizzes, the lab assignments, the project, and the final exam using the following weight distribution:

Theory: 50%
25% – Quizzes (distributed evenly over all)
25% – Final Theory Exam

Practice: 50%
25% – Labs (distributed evenly over all)
15% – Projects
10% – Final Lab Exam

The following is a grade letter scheme used in this course:

Grade Letter

>= 96% – A+
>= 88% – A
>= 80% – A-
>= 72% – B+
>= 64% – B
>= 56% – B-
>= 48% – C+
>= 40% – C
>= 32% – C-
>= 24% – D+
>= 16% – D
>=  8% – D-
<   8% – F


  • To be admitted to final exams, a student must have accumulative averages of C- or better from both the quizzes and from the labs and projects.
  • The instructor reserves the right to adjust any grade of any student in response to in-class participation as well as any forthcoming vital information.

Class Attendance

Class attendance is mandatory. A student missing a class seating must submit a reasonable and formal document that proves that indeed the student was not able to attend the class. Any undocumented absence from a lecture or a lab will result in zero points allocated for the corresponding test or lab assignment.

If a student is justifiably absent from a class seating, it is the student’s responsibility to study the material presented in the class on her or his own and to check on any announcements made while the students was absent. Should a student justifiably miss a lab session, the student must complete the lab assignments on her or his own and submit it by the due date.

Early Assessment Provisions

Blackboard assessment facility will be used to provide students that fall behind in a number of areas such as grades, course activity, attendance, etc., with an early warning notification about their unsatisfactory progress in the course. An accompanying letter will explain the actions that the underperforming student needs to undertake to succeed in the course. The student will also have an option to withdraw from the course.

Restrictions on Lab Activities

  • The use of the lab resources including time is restricted to the activities directly related to the lab. Any other use is not allowed.
  • No solid or liquid food is allowed in the lab. If you need to drink or eat, please go outside. Closed water bottles are allowed.
  • This is an interactive educational lab, so no activities or equipment disturbing interactions and education are allowed; for example, headsets, any kind of goggles, phones, consoles, watching videos, listening to music, playing games, maintaining distracting conversations, etc.

Any violators of the restrictions will be requested to leave the classroom. Any contention will be reported to Judicial Affairs.

Academic Honesty

The university, the course, the labs and the instructors are here for the students so they can acquire sufficient knowledge to open a window of opportunity for them in their future careers. Any academic dishonesty limits the student’s chances to succeed.

Please consult the Academic Catalog ( for the details on the CSUCI’s academic code of honor.

Students with Disabilities

Students needing special accommodations must make formal requests to the CSUCI Disability Accommodation Services ( No informal requests for any accommodation will be granted.

Subject to Change

This syllabus and schedule are subject to change in the event of extenuating circumstances.