Syllabus for CS 302/ECE 468
Operating Systems
Spring, 2009

Professor Roger Kraft
Office: Classroom Office Building (CLO), Room 368
Office phone: (219) 989-2696
Office hours: after class and by appointment.
E-mail: roger@calumet.purdue.edu

Text: Operating Systems Concepts, 8th Edition, by Abraham Silberschatz, Peter Galvin and Greg Gange, John Wiley & Sons, 2005.

This course is an introduction to computer operating systems. We want to learn what operating systems are, why we need them, how to work with them, how to program with them, how they are designed, and how they are implemented. We will cover the general theory of modern operating systems and we will study two examples of currently popular operating systems, Linux and Microsoft Windows XP. In addition, we will write "systems level" programs that interface with the Windows operating systems.

In addition to the study of operating systems, two other subjects will be important in this course, the C programming language and the Intel 386 architecture and assembly language. All of the programming assignments will be done in C; we will cover what is needed about C in class and with handouts. And to really understand how operating systems are implemented we need to understand how CPU architectures support operating systems. We will use the specific example of the Intel 386 architecture and see how it supports the Windows and Linux operating systems.

Your grade for this course will be based on 8 to 10 programming assignments and two exams in the following manner:

           40%    programming assignments,
           30%    midterm exam,
           30%    Final Exam.
Tentative dates for the two exams are
           Exam 1   Wednesday, March 11
           Final    Final exam week.
You may work with a partner on the programming assignments for this course. Each of the programming assignments will have a due date. To receive full credit for an assignment, it must be turned in by the due date. All programs handed in late will be marked off 10% of the total points for each calendar day late up to a maximum of 50%. If an assignment is more than two weeks late, then I reserve the right not to accept it for credit. When you complete a programming assignment you (together with your partner, if you have one) will turn in the source code for your solution using the university's course management system. In this course web site there are detailed instructions on how assignments are to be turned in. You will be expected to follow the instructions. Also in this web site is information on the criteria used to grade your programming assignments.

You and your partner should turn in your own work for each programming assignment. Here is what that means: You may talk with your other classmates about the course material and the ideas behind each homework assignment but you and your partner should solve each problem on your own and write your own code for the solution. Turning in someone else's solution (or even a modified version of someone else's solution) is a breach of academic integrity. Similarly, giving a copy of your solution to someone else in the class is also a breach of academic integrity. If you need help with a homework assignment, come and ask me. You can ask me as many questions as you want! Please do not hesitate to ask me questions after class, in my office, in an e-mail message, over the phone, etc.

The final grades for this course will use the university's new plus and minus grading system. The possible grades for this course, and a tentative grading scale for the grades, is given in the table below. The final grading scale that I use may not quite be the same as the one given below (the grade cutoffs might possibly be lower, but they will not be any higher than what is given in this table).

A93 - 100
A-90 - 92
B+88 - 89
B83 - 87
B-80 - 82
C+78 - 79
C70 - 77
D+68 - 69
D63 - 67
D-60 - 62
F59 or less

In this web site you will find more information about this course. There are links to online help and documentation for C, Intel 386 architecture and assembly language, information about course reading assignments, and, very importantly, all of your homework assignments and their due dates will be posted on one of these web pages.

The software that you need to do all of your programming assignments are on computers in the Mathematics Computer Labs in CLO 363 and CLO 365. If you wish to work at home, I will show you in class how to install and use a very simple, yet very useful, C development environment built around a text editor for Windows. There is more information about this in these web pages.

The objectives for this course are as follows.

  1. Students will be able to contrast kernel and user mode in an operating system.
  2. Students will be able to summarize the various approaches to solving the problem of mutual exclusion in an operating system.
  3. Students will be able to write multithreaded code that makes use of various synchronization mechanisms such as mutexes, binary and counting semaphores, and monitors.
  4. Students will be able to compare and contrast the common algorithms used for both preemptive and non-preemptive scheduling of tasks in operating systems
  5. Students will be able to explain the concept of virtual memory as applied to paging and segmentation, and explain how virtual memory is realized in hardware and software.
  6. Students will be able to compare and contrast different approaches to file organization, recognizing the strengths and weaknesses of each.

If you are a student with a documented disability who will require academic/classroom accommodations in this course, please register with the Coordinator of Services for Students with Disabilities in the Student Support Services Office located in the Student Union and Library Building (SUL), Room 341, phone numbers: 219-989-2455, 219-989-2454(voice/TTY) or 219-989-2920.

Students are expected to comply with University regulations regarding civility, attendance, and appropriate classroom behavior. Please see the document Student Guide: Civility in the Classroom available from the Dean of Students office and the Dean of Students web site.

Ethics are an integral part of being a student and a professional. Academic integrity is the hallmark of this University. Therefore, Purdue University does not tolerate academic dishonesty in any form. If a student breaches integrity, the student risks sanctions in both the academic and conduct arenas. Academic dishonesty includes, but is not limited to, the unauthorized use of other's intellectual property (plagiarism), and lying to an instructor or any University employee. Such actions will result in a failing grade on the assignment with the strong possibility of referral to the Office of the Dean of Students for a conduct sanction (see the Purdue University Calumet Student Handbook available from the Dean of Students office and the Dean of Students web site).


Return to the CS 302 home page.



compliments and criticisms