CprE 308: Operating Systems, Principles and Practice 

Spring 2018, MWF 12:10-1:00 PM, Gilman 1352

Iowa State University
Ames, IA






 News and Events

Spring 2019 (Please keep an eye on this news box for the latest

  1. Welcome to our CprE 308 class!

  2. TA assignment and office hours:

    The following are the TA assignments as well as their contact info:

    • A Tuesday 8-10:50am:

    • B Thursday 3:10-6pm:

    • C Thursday 6:10-9pm:

    • D Wednesday 3:10-6pm:

    • F Thursday 9-11:50am:

    • G Wednesday 9-11:50am:

    • J Tuesday 11-1:50pm:

    • L Friday 9-11:50am:

    • M Thursday 12:10-3pm:

    • N Tuesday 6:10-9pm:


    The TAs' contact info are as follows:


    TAs' Office Hours and Locations:


  3. More to be added.


Course Description

This course is an introduction to the basic principles underlying current operating systems. Operating systems have evolved over a few decades and have led to a few well accepted abstractions. We will study those concepts and how they fit together: the purpose of an operating system, processes and threads, synchronization between multiple processes, process scheduling, deadlocks, the address space concept, virtual memory, file systems, I/O systems, security, and the basics of networking. The corresponding (weekly) labs cover the "practice" portion of the class, where the students are required to write programs which interact with the operating system, and implement simplified versions of some of the OS modules. The labs require a knowledge of the C programming language and a working knowledge of the Linux operating system, which is introduced in the first lab.

More detailed course syllabus can be found on Canvas.

Course Materials

The required text for the course is Modern Operating Systems by Andrew S. Tanenbaum, 4th Edition, (ISBN 9780133591620).

Lecture slides, lab and project assignments, and homeworks can be accessed through Canvas.

Suggested reading list can be accessed through Canvas.

Useful On-line Resources:

         A History of Unix

         Getting started, good reference for basic commands (ls, mkdir)

         Another basic Unix tutorial, also has information on redirecting output (pipes)

         Information on Unix System Calls, mostly uses info from man pages, but still useful

         List of System Calls, good information but not well organized

         Unix system calls and processes, fork(), exec() and wait()

         Unix process management

         Posix thread programming

         List of signals and their numbers

         Beej's Guide to Unix Interprocess Communication

         Shared Memory, Semaphores, and Message Queues

Lecture and Office Hours

Lecture: MWF, 12:10-1:00pm, Gilman 1352.

Instructor Office Hours:

Instructor and TAs

Hours & Location

Contact Info

Dr . Yong Guan

Tuesday 11-noon, or schedule a time by email.

309 Durham Center




Laboratory Sections:



Lab Instructor

Laboratory Safety:

All personnel (faculty, staff, students, and visitors) who use laboratory facilities at Iowa State University shall follow the procedures detailed in the ISU Laboratory Safety Manual. Successful completion of appropriate safety training as specified in Safety Training Curriculum for Laboratory Personnel is required prior to beginning work in a laboratory. Please follow the link below for more info: https://www.ece.iastate.edu/the-department/safety/.

Grading and Acad. Policy


The grading breakup will be as follows:

1.     Weekly labs: 25%

2.     Two programming projects: 10 % (5 % each)

3.     Homework will not be graded, but there will be in-class quizzes based on  homework, and these quizzes make up 20% of the grade.

4.     Two mid-term exams: 20%

5.     Final Exam: 25%

6.     Class Attendance (as bonus boints): 3%

Current grades can be checked using Canvas.

Academic Policies

Academic Integrity

         All your work (including the labs) should be done individually unless otherwise specified. You are not allowed to use work done by others, or obtain the answers directly in any form (such as from the web). If you have any questions about what is allowed/not allowed, please contact the instructor or the TAs.

         Any cases of cheating will be dealt with the strictest possible measures allowed by the university, please refer to the university policies on academic dishonesty.


Attendance in the lectures is expected, and we welcome active participation (by raising questions and participating in class discussions).

         Please email me or call me at (515) 294-8378 beforehand, in case that you cannot come (e.g., for medical reason).

         In case that you cannot attend the class and have questions about the missed lecture, please feel free to come and talk to the instructor.

Laboratory Policies:

         Attendance - You are expected to attend all laboratory sessions.  In these laboratory sessions, you are required to do the lab experiments or the programming projects. Absence will not be grounds for delaying the submission of a laboratory report.  Attendance will account for 10% of each laboratory report grade or programming project report grade.  Each report will be normalized to 90% of the possible points with attendance making up the final 10% of the lab report grade.  Attendance will only be taken within the first 30 minutes of lab.  If you do not show up within the first 30 minutes of lab you will be counted as absent for that lab. For programming projects spanning two weeks, attendance will only be taken in the first week when the project is introduced. In the second week, if you have already completed the programming project and if you don't have any questions to the TA, you can decide to skip the lab session (i.e., the 2nd week lab session, but not the 1st week lab session which you are expected to attend.).

         Email and Canvas Announcements - You are expected to read your ISU email and Canvas accouncements for laboratory and other course-related updates. 

         Feel free to ask questions of your friendly TAs.  However, you will be expected to put in a fair amount of time struggling on your own as well. We want to encourage development and debugging skills, so try not to get frustrated when we won't tell you exactly how to fix something or what to do next. As long as you make steady progress during the lab, the TAs will try to help you stay on track. Also, please do not email source code to your TA. If you cannot fix something during the normal lab hours, arrange a time with your TA to review your code. 

         Report Deadlines - Lab reports are due the week following the completion of the lab. They are to be submitted, in electronic copy only via Canvas system, within the first 30 minutes of the laboratory session. Late labs are penalized 10% per day for up to 7 days. Labs submitted after 7 days will not be graded and will receive no credit. A 10% penalty applies to reports not submitted within the first 30 minutes of the lab session. You will have one grace period to delay the late penalty for 3 days. This grace period will be used automatically for the first late report.  If you do not turn in your report within the grace period the late policy applies beginning on the fourth day.  So after the end of your grace period you begin losing 10% on the fourth day and can turn in the report until day 10 losing 10% each day.

         Grading - Reports and other work will be returned via Canvas system (assignments). The TAs will grade them and provide comments and suggestions on Canvas system. You have one week after work is available to be returned to challenge the given grade. Grades will be updated in Canvas periodically. 

         Secure Your Work - From your home directory run the command: chmod 700 308 to prevent anyone else from accessing your work.

Further Information

Please contact Dr. Yong Guan (yguan@iastate.edu) by email or drop by his office Durham 309.