• Trilce Estrada, PhD, Postdoctoral Researcher
  • Email:
  • Office: 203 Smith Hall
  • Office hours: TR 5:00-6:00

If you have problems understanding the course material or you have questions regarding exams or grades, you can always ask through email, come to my office hours, or make an appointment with me.

  • If you need to contact me by email, please always include the keyword cisc361 in the subject because I have a somewhat harsh spam filter

Teaching assistant

  • Name Yang Guan
  • Email:
  • TAs office hours: TR 11:00-12:00

Your TA is there to help you understand homework assignments and labs. If you have questions regarding assignments or assignment grades, please contact your TA or go to his office hours. However, the TA cannot help you to debug your code or walk you through the homework step by step. Whenever you contact the TA, you need to have read the material carefully, and be prepared with specific questions.


Course Description:

This course will introduce students to the concepts, structures, and mechanisms of modern operating systems.

Every class will be structured around a short lecture covering essential concepts in operating systems such as process management, memory management, and file systems. After the lecture we will examine important problems related to these concepts and the implications of design and implementation decisions through exercises and discussion.

Course objectives:

At the end of this course, the student will become familiar with the fundamental concepts of operating systems; will become competent in recognizing operating systems features and issues; and will be able to understand how operating system impacts application systems design and performance.


Academic honesty:

Unless otherwise specified, you must write your own homework answers. You cannot use the web to find answers to any assignment. If you do not have time to complete an assignment, it is better to submit your partial solutions than to get answers from someone else. Cheating students will be prosecuted according to University guidelines. Students should get acquainted with their rights and responsibilities as explained in the Student Guide to University Policies

Class attendance:

Attendance to class is expected and note taking encouraged. Important information (about exams, assignments, projects, policies) may be communicated only in the lectures. We may also cover additional material (not available in the book) during the lecture. If you miss a lecture, you should find what material was covered and if any announcement was made.


Homeworks reinforce what you learned in class by materializing abstract concepts into practical problems. Every homework usually consists of 3 to 4 exercices. There will be one homework per week, and they are due every Tuesday before class (3:30 PM).

You can discuss homework in groups but all the answers have to be written in your own words. When significant portions of the homework are done in groups, you are expected to acknowledge all the other students that participated in the discussion and outline what you learned specifically from it.

  • Homework has to be uploaded to Sakai and no late homework will be accepted.


Projects are one of the most important learning tools of this class. With every project you will learn important OS concepts, such as memory management, interruptions, synchronization, and storage. Projects are also a great opportunity to refine your programming skills as well as getting new ones that will be helpful for the rest of your career (e.g. debugging, finding memory leaks).

There will be three projects during the semester, you can also suggest extensions for extra credit. Remember that you need to follow good C coding standards and make sure that the project achieves its goal (without hacks or patches).

Projects will be done individually. You must turn in only code written by you. Under no circumstance you should use code downloaded from Internet since this violation will result in serious penalties (see academic honesty).

  • Programs should be submitted via Sakai. Late projects are accepted but they will deduct points per late day using the Fibonacci number with respect to the due date (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, Fn-1 + Fn-2). However, no project will be accepted after May 19.
  • Project 1A (steps 1, 2, 3), due date March 21
  • Project 1 final, due date April 18
  • Project 3, due date May 14


Exams are our formal evaluation tool. In the exams you will be tested with respect to the learning goals of this course (see the schedule below for the list of learning goals). Exams will comprise a mix of practical exercises and concepts. I don't encourage you to learn concepts and definitions by hart, but to be able to explain them with your own words and to place these concepts into the broader context they belong to. There will be one midterm exam and one final exam as follows:

  • Midterm exam: March 14
  • Final exam: May 22

Exams are open notes, but only personal, hand-written notes are accepted. Restrictions in this matter include (but are not limited): you cannot download notes from Internet, you cannot use the electronic notes of the course, and you cannot photocopy notes from your classmates. In fact, the key point is that they must be your own hand-written notes because I expect you to reinforce what you learned in class by writing down key concepts.


Participation is the barometer of the class. Based on it I can determine if the pace of the course is too fast or too slow, it helps me to spot pitfalls and misconceptions, and it helps you to reinforce the material you learned.

Participation accounts for 15% of your final grade and won't be given for granted. You are required to participate either in class or electronically (through our facebook group). Not every utterance from your mouth will account for a participation point. Participation points are assigned for relevant answers and questions. Relevant answers provide a concrete and accurate response to a specific question I asked. Relevant questions are not of the trivial kind for which you can get an answer by looking at wikipedia, but for exemple, questions regarding the contrasts of two methods or questions regarding design decisions. The participation grade will be calculated using the following criteria:

  • 0.5 points per relevant comment in class
  • 1 point per accurate answer to a specific question in class
  • 2 points per exercise in the blackboard (regardless of accuracy of the solution)
  • 0.5 points per relevant question in class
  • 0.5 points per relevant question in discussion forum
  • 1 point per accurate answer in discussion forum

1 participation point accounts for 1 percentile of your final grade up to 15%. Note that you can complete your participation quota by accumulating in average one point per week. The way you earn that point (either in class or through Facebook) is up to you.

Facebook group:

In order to facilitate interaction between students and to promote a broader participation, I created a Facebook group. This is a discussion forum for the class and members are expected to conduct themselves with respect by posting comments and replies only in the context of the course. Use the FB group to ask general questions about the homework, exams, and lectures. You can also paste small snippets of code to clarify an idea. Students are encouraged to answer each others questions. Recall that your thoughtful participation in this forum accounts through your final grade.

If you don't have a facebook account don't worry, you can gain your participation points during class. This is more an experiment to encourage interaction, spark discussion, and identify possible misconceptions. Additionally, if I identify an interesting conversation happening in FB, I will post it in this Web site to make sure that everybody can benefit from it.

Please be aware that the social media interaction between me (the instructor) and students is only limited to this FB group and under no circumstance I am allowed to befriend students directly.


For those of you that do not want to use facebook, we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email

Find our class page at:


I value student's opinions regarding the course and I will take them in consideration to make this course as exciting and engaging as possible. Thus, through the semester I will ask students formal and informal feedback. Formal feedback includes short surveys on my teaching effectiveness, preferred teaching methods, and pace of the class. Informal feedback will be in the form of FB polls or in-class questions regarding learning preferences. You can also leave anonymous feedback in the form of a note in my departmental mail box, under my Lab door (Smith 203), or using this form. Remember that it is in the best interest of the class if you bring up to my attention if something is not working properly (e.g the pace of the class is too slow, the projects are boring, my teaching style is not effective) so that I can make the corrective steps.


Grades will be based on your earned points, following this grade scale. You need to get the specified number of points or more to obtain the grade from the same column. Scores will be rounded to the closest integer value.

A	A-	B+	B	B-	C+	C	C-	D+	D	D-	F
95	90	87	83	80	77	73	70	67	63	60	<60
  • Incomplete can be assigned only for a documented medical reason


If you need special accommodations or assistance, please contact the Office of Disabilities Support Services at the University of Delware (


Week 1 Computer system overview and structures

  • Readings: Ch 1.1, 1.3-1.8, Appendix 1A
  • Learning outcomes:
    • Explain the basic elements of an operating system
    • Explain what are interrupts and how are they used by the OS
    • Describe the memory hierarchy and contrast cache memory access and direct memory access.

Week 2 OS overview and evolution

  • Readings: Ch. 2.1-2.6, select between Ch 2.7 Windows, 2.9 UNIX, or 2.10 Linux C Coding Standards
  • In class discussion will include team comparison between Windows, UNIX and Linux
  • Learning outcomes:
    • Explain what an operating system does and how is it used.
    • Identify the various components of a computer system and how they interact with an operating system.
    • Describe the differences between a 32-bit and 64-bit OS.
    • Explain the different types of operating systems and the major systems in use today.

Week 3 Processes

  • Readings: Ch. 3.1-3.5, UNIX process creation
  • Learning outcomes:
    • Discuss the importance and use of processes.
    • Explain the difference between a process and a program.

Week 4 Threads

  • Readings: Ch. 4.1-4.3, Select between 4.4 Windows, 4.6 Linux, 4.7 Mac OS, Mark Hays' POSIX Threads Tutorial
  • In class discussion will include team comparison between Windows, Linux, and Mac OS
  • Learning outcomes:
    • Describe concurrency.
    • Explain the difference between a thread and a process.
    • Discuss context switching and how it is used in an operating system.

Week 5 Concurrency: Mutual exclusion and synchronization

  • Readings: Ch. 5.1-5.6 Optional 5.4, 5.5
  • Learning outcomes:
    • Describe synchronization.
    • Explain a race condition.
    • Discuss inter-process communication.
    • Describe how semaphores can be used in an operating system.
    • Discuss three of the classic synchronization problems.
    • Explain alternatives to semaphores.

Week 6 Midterm exam

  • Tuesday, March 12: Material revision, Q&A
  • Thursday, March 14: Exam

Week 7 Concurrency: deadlock and starvation

  • Project 1 due
  • Readings: Ch. 6.1-6.4, 6.6, Select between 6.7 UNIX, 6.8 Linux, 6.10 Windows 7
  • In class discussion will include team comparison between Windows, Linux, and UNIX
  • Learning outcomes:
    • Explain what deadlock is in relation to operating systems.
    • Discuss the difference between deadlock prevention and avoidance.
    • Describe mechanisms for deadlock detection and recovery.

Week 8 Spring break

  • No class scheduled

Week 9 Uniprocessor scheduling

  • Readings: Ch. 9.1-9.2
  • Learning outcomes:
    • Discuss CPU scheduling and its relevance to operating systems.
    • Explain the general goals of CPU scheduling.
    • Describe the differences between pre-emptive and non-preemptive scheduling.
    • Discuss at least four CPU scheduling algorithms.

Week 10 Memory management

  • Readings: Ch. 7.1-7.3 optional 7.4
  • Learning outcomes:
    • Explain the memory hierarchy and how the operating system interacts with memory.
    • Describe three algorithms for dynamic memory allocation.
    • Explain methods of memory access.

Week 11 Virtual Memory

  • Project 2 due
  • Readings: Ch. 8.1, 8.2, Select between 8.3 UNIX, 8.4 Linux, 8.5 Windows
  • In class discussion will include team comparison between Windows, Linux, and UNIX
  • Learning outcomes:
    • Describe how virtual memory works.
    • Describe paging and page replacement algorithms.

Week 13 I/O management and disk scheduling

  • Readings: Ch. 11.1-11.5 Optional 11.6,11.7
  • Learning outcomes:
    • Describe different I/O devices
    • Explain the organization of the I/O function
    • Describe I/O buffering
    • Explain disk allocation and associated algorithms.

Week 12 File management

  • Readings: Ch. 12.1-12.5, Select between 12.9 UNIX, 12.10 Linux, 12.11 Windows
  • In class discussion will include team comparison between Windows, Linux, and UNIX
  • Learning outcomes:
    • Describe a file system and its purpose.
    • Explain various file allocation methods.
    • Discuss the difference between indexed files and linked files

Week 14 Distributed processing, client/server, and clusters

  • Readings: Ch 16.1-16.5
  • Learning outcomes:
    • Describe how it works a client/server architecture
    • Explain distributed message passing and RPC
    • Discuss the mechanisms that make clusters possible

Week 15 Review session

  • Project 3 due
  • Review of material, Q&A

Week 16 Final exam

  • May 16-23 Exam