CSCI 4061 (010): Introduction to Operating Systems, Spring 2020

Instructor: Kangjie Lu
Office: 5-217 Keller Hall
Office hours: 01:30-03:00PM Tuesdays

Time and room: 11:15AM‑12:30PM TTh, Fraser Hall 101

Teaching Assistants
TA Email Section Office hours and location
Euna Mehnaz Khan 11 1:00-2:00PM Wednesdays, KH 2-246
Bhaargav Sriraman 12, 13 1:00-3:00PM Thursdays, KH 2-246
Nikhil Sreekumar 14, 15 2:00-4:00PM Fridays, KH 2-246


Welcome to CSci 4061! In this course, students will learn the principles and concepts of contemporary operating systems, and how to interact with operating systems through their interfaces. We will discuss about how operating systems manage system and hardware resources, provide services such as sharing and communication, and ensure properties such as concurrency and security. The covered concepts include processes, threads, synchronization, interprocess and network communication, memory management, I/O, file systems, access control, isolation, and relevant system design principles. We will examine issues that surround these concepts, look very briefly at implementation issues, and focus our attention on the systems programming interface provided to the user for each concept. We will use Unix as our model of a systems programming interface for an OS. Several programming projects will be used to gain hands-on experience with systems issues. A solid programming background preferably in C/C++ and comfort with Unix are very helpful.


  • C programming
  • Entrance into a Computer Science Major
  • Better in CSCI 2021 or CSCI 3081


Required textbooks:

Optional textbooks for reading:

  • Unix System Programming, Haviland, Gray, and Salima.
  • Operating System Concepts, 8th Edition (Silberschatz, Galvin, Gagne), (S&G) 2009 is comparable.

Course Organization

Format: The class will be conducted in a lecture format with Q&A discussion elements. The week's reading is essential to keeping up as is coming to class. The reading will include textbook and other sources. Class participation or lack thereof may influence your grade (up or down).

Schedule: The course will include 6 topics; each covers multiple concepts. The "Schedule" page in this course website will include details for each lecture, along with readings for each topic. Students are responsible for reading the appropriate materials before coming to the lecture. Note that some points that are not covered in lectures may appear on projects and exams. Lecture slides will be linked from the schedule within a week after the corresponding lecture, but reviewing the slides is intended to supplement, not replace, attending lecture.

Computing It is assumed you will have access to a computer with the ability to edit, compile, and run Unix programs. Some university labs provide this ability; the first week of the course will cover how to set up your personal environment as well. If you have difficulty accessing a suitable environment, contact the course staff. You will need to create a CSE Labs account for use on assignments and during Discussion. Accounts can be created here.

Communication The course site and Canvas will be the channels for announcements, discussion, and submission. Sign up Canvas early if you haven't. In addition, TAs and instructor have office hours to assist you. The TAs are the best "first line of defense" for questions and lab programming help.


Lectures During lectures, we will discuss operating system concepts, and instructors will provide demos of programming relevant to the concepts. In addition to attending the regular lectures, you are strongly encouraged to visit the professor and teaching assistant(s) during office hours to further your understanding of the material: we are here to help you learn.

Readings Readings from the textbook and articles relevant to each lecture are listed in the schedule. You will better understand the lectures by reading them ahead of time.

Lab sections Lab sections (including recitation, discussion, quiz, and exercises) meet once per week and attendance is required. In each meeting, the TA(s) will guide students through exercises to reinforce course concepts. These sections are also helpful to projects.

Programming projects Students will receive a number of programming projects during the semester. Each project will involve writing programs and answering questions about them to illustrate an understanding of course materials. Specific projects may allow collaboration or require individual work. Pay careful attention to the guidelines for each programming project. Projects are usually large and require a significant amount of work to complete.

Exams There will be two midterm exams during the semester. Exams take place during the regularly scheduled lecture period. There will also be a comprehensive final exam at the end of the semester. Refer to the schedule for dates of the exams.


Grading for this course will be based on the following components:

Programming projects: There will be 5 systems programming assignments in Unix during the semester (about every 2-3 weeks) and you will have 2-3 weeks to complete them using the CSE Lab Unix machines. For some of these projects you will work in groups, other projects may be individual. Projects will be submitted electronically. For online submission, you will submit a tar'ed directory that includes your code, header files (if any), your build/run script(s), makefiles, and any necessary test data that was not supplied as part of the assignment. Names of the group members and the instructions for building and running your code must be in an additional text file called readme.txt. Each online submission is timestamped with the time of submission. Multiple submissions result in only the last timestamp being retained. We will make every attempt to grade submitted work within a week (projects may take a bit longer) after submission. If you have questions regarding the grading of your assignments or exams, you must come to see either the instructor or a TA within ONE week after the date the work has been returned to you. If you cannot see us within one week, you need to email us within one week and make an appointment. Unless we hear from you, no changes will be made after one week. If you believe that your projects or exams have been lost, please notify us as soon as possible (within one week). We are not responsible for missing projects or exams one week after they have been returned. Check Canvas to make sure your graded work is accounted for.

Lab quizzes and exercises: Each lab quiz (0.3 point) has three questions that are to be done during the lab section. Lab exercises (0.7 point each; may have a take-home component) are to be done and submitted before the deadlines (midnight Tuesdays). Students finish lab exercises individually to demonstrate the understanding of concepts. Exercises are open resource and open collaboration. However, no late submission is allowed. Each student can choose to submit up to 10 quizzes and 10 exercises. Lab quizzes and exercises account for a total of 10% of grade.

Exams: The purpose of the 3 exams is for you to demonstrate that you understand the key operating system concepts and systems programming issues. Active participation in your project and class attendance will help you in exam time. Exams are necessary to determine how you are really doing in the class. Exams also give me global feedback about the course in general, feedback that I can use to make "mid-course" corrections to improve the class as we go along. You will likely spend much more time in labs than in preparing for exams, yet exams are weighted 50%. If you must miss an exam, send me e-mail ASAP, and you must make every effort to notify me PRIOR to the exam. A makeup is not guaranteed. Acceptable excuses are usually limited to serious personal problems or injury, religious needs, or substantial participation in University sanctioned student events. The exam dates will be announced on the website and in class. There will be two mid-terms and one final exam.

Late submissions. Only projects allow late submissions. Each project has a deadline. Late submissions are worth 80% up to 24 hours after the submission deadline and 0 points after that.

Grade minimum score. Final scores will be computed as a weighted average of the five programming projects (40%), lab quizzes and exercises (10%), exam 1 (15%), exam 2 (15%), and final exam (20%). Then grades will be assigned strictly on the following scale:

Grade Score
A 92.00
A- 89.00
B+ 86.00
B 83.00
B- 79.00
C+ 75.00
C 70.00
C- 65.00
D+ 60.00
D 50.00
F <50.00


Academic integrity. For questions concerning the projects, you can talk to the TAs or myself. Limit discussion with your classmates or access the forum to get information about the meaning of lab concepts, NOT elements of a solution. For the group projects, collaboration within your team is of course expected. In general, cheating on the labs or exams will be dealt with swiftly and severely in accordance with University policies. The University Student Conduct Code defines scholastic dishonesty as: submission of false records of academic achievement; cheating on assignments or examinations; plagiarizing; altering, forging, or misusing a University academic record; taking, acquiring, or using test materials without faculty permission; acting alone or in cooperation with another to falsify records or to obtain dishonestly grades, honors, awards, or professional endorsement. In this course, a student found responsible for scholastic dishonesty will at a minimum receive a grade of 0 for the assignment in question and be reported to the campus-wide Office for Community Standards (OCS). More serious offenses will receive a grade of F (or N) for the course and be subject to additional sanctions from the University. You should also read this page about academic conduct in computer science. Students are also required to abide by the Student Conduct Code. Please do read UMN's STUDENT CONDUCT CODE.

Disability Statement. Any student with a documented disability (e.g., physical, learning, psychiatric, vision, hearing, etc.) who needs to arrange reasonable accommodations must contact the instructor and Disability Services at the beginning of the semester. All discussions will remain confidential. For further information contact the University of Minnesota Disability Services website at or call 612/626-1333.

(This syllabus is based on documents used in previous editions of CSci 4061 that were written by Professors Jon Weissman and Abhishek Chandra.)