ProfessorFabián E. Bustamante
1890 Maple Ave, Room 334
+1 847 491-2745
Office Hours: Tue. and Thu. 1:30-2:30pm.
InstructorMagy Seif El-Nasr
1890 Maple Ave, Room 354
+1 847 467-1969
Office Hours: Tue. and Thu. 1-3pm.
1890 Maple Ave, Room 240
+1 847 491-7159
Office Hours: Mon. 2:00-3:00pm and Tue. 2:30-3:30pm
1890 Maple Ave, Room 250
+1 847 467-1006
Office Hours: Mon. 10:30-11:30am and Wed. 1:30-4:30pm.
Operating systems control all the computer's resources and present users with the equivalents of virtual machines that are easier to program than their underlying hardware. The course is an introduction to basic operating systems concepts: including operating systems structures, processes and thread, memory management, and file systems.
This course assumes familiarity with basic computer organization and data structures. You will need to be able to program in C (or C++) in UNIX systems to perform the assignments.
Location and Time
Tuesdays and Thursdays Section 20: 9:30-10:50 and Section 21:
Lectures will be held in 1890 Maple Room 381.
In compliance with Section 504 of the 1973 Rehabilitation Act and the Americans with Disabilities Act, Northwestern University is committed to providing equal access to all programming. Students with disabilities seeking accommodations are encouraged to contact the office of Services for Students with Disabilities (SSD) at +1 847 467-5530 or email@example.com. SSD is located in the basement of Scott Hall. Additionally, I am available to discuss disability-related needs during office hours or by appointment.
- 725-311 Data structures and data management.
- Familiarity with basic computer architecture concepts and proficiency in C programming in UNIX systems.
There are a number of communication channels set up for this class:
- We will use the course web site ( http://www.cs.northwestern.edu/~fabianb/classes/cs-343.html) to post announcements related to the course. You should check this regularly for schedule changes, clarifications and corrections to assignments, and other course-related announcements.
- There is a newsgroup (cs.343, served off news.acns.nwu.edu) intended to foster communication among you, the students. You'll find that someone else in the class will have thought of the same problem that you have and will perhaps have some valuable insight that will prove helpful. The TAs will be monitoring the newsgroup and will step in with guidance when appropriate.
- Finally, there is an email alias ( cs-343-ta@cs) for the TAs that you should use for questions that would be inappropriate to post on the newsgroup (source code being a good example).
CTEC Course Evaluation
You have the opportunity to register your opinions of this class. Please do so. I will use your comments for improving the course and your fellow students will refer to them when selecting classes and instructors.
The evaluations for the class will be completely anonymous; there will collected electronically and you may enter them from the computer in your room or computers in the library or computer labs.
You may access the CTEC online page anytime between Nov. 25 and Dec. 15 at midnight.
- Wait for next fall
- Operating Systems Concepts, 6th Ed., A. Siberschatz, P. Galvin and G. Gagne, John Wiley & Sons, NY, 2003. (``OSC'' from now on.)
- Papers: A set of papers that will be made available.
- Advanced Programming in the Unix Environment, R. Stevens, Addison-Wesley, 1992. A basic book for anyone writing programs that run under Unix.
- The C Programming Language, 2nd Ed., B. W. Kernighan and D. M. Ritchie, Prentice Hall, 1988. A must.
- Expert C programming: Deep C Secrets, P. van der Linden, 1994. Fun to read and full of useful advice.
- The Practice of Programming, Brian W. Kernighan and Rob Pike. Addison-Wesley, 1999.
- A nice introductory book to Unix: "UNIX for the Impatient (2nd Edition)" by Paul W. Abrahams, Bruce Larson (Contributor); there's also a pretty good O'Reilly Nutshell book: "Learning the Unix Operating System (Nutshell Handbook), 5th Ed.", by Jerry D. Peek, Grace Todino, John Strang.
- If you are having problems getting started: Programming with GNU Software, M. Loukides and Andy Oram, O'Reilly is a short introduction to C programming on a Unix environment. There are also a number of helpful pages in the web (Holmes' C programming and Summit's C Programming are just two examples).
- There is more to writing a program than getting the syntax right, fixing the bugs you have noticed, and making it run fast enough. Programs are read not only by computers but also by programmers. A well-written program is easier to understand, grade, and modify than a poorly-written one. People have collected tons of useful advice on the art of programming. Please take a look at Rob Pike's Notes on Programming in C. Brian W. Kernighan and Rob Pike have also published a very neat little book The Practice of Programming packed with useful advice.
- I am collecting some pointers on C/Unix resources.
- Ashish Gupta has pointed out some useful links on
concurrency (Thanks!). Please take a look at:
I will try very hard to give you the grade you deserve. I will use a criterion-referenced method and the total scores will be determined, roughly, as follows:
- Homeworks 10%
- Projects 50%
- Exams 40%
There will be four (4) exams scheduled during the quarter; approximate dates and times are listed below. Exams will be in-class, 30'-length, closed-book, and will cover materials from lecture, required readings and projects.
There will be two kind of homework assignments given throughout the class: reading assignments and textbook-style questions. You should have finished the assigned reading before coming to lecture. In addition, there will be a set of written homeworks that must be done alone and turned in at the end of class on the due date (see course policies below).
As you can deduce from the allocation of weights for grading, programming projects are a major portion of this class. There will be four (4) projects. The first three (3) projects are designed for you to work alone while the last one requires you to form a two-person team. Only if you cannot find a partner and we are unable to find a partner for you, will you be permitted to work by yourself (we generally don't view this as a reason for relaxed deadlines or grading). Both partners should work cooperatively on the design, implementation, and testing of their solution.
Course Outline and Approximate Dates
- Introduction - Sep. 26 - Oct. 1
- Historical Perspective
- Computer System Structure
- Operating System Structure
- OSC chap. 1-3
- E. W. Dijkstra, E. W., The Structure of THE Multiprogramming System, CACM 11(5), May 1968, pp. 341-346.
- P. H. Salus, Unix at 25, Byte 19, pp 75-82, Oct. 1994.
- F. J. Corbato, F.J., On Building Systems That Will Fail, Communications of the ACM 34(9), pp. 72-81, Jun. 1991.
- Lampson, B., Hints for Computer System Design, Proceedings of the 9th ACM Symposium on Operating Systems Principles, pp. 33-48, 1983.
- D. M. Ritchie and K. Thompson, The UNIX time-sharing system , Communications of the ACM, 17(7), pp 365-375, July 1974.
- Processes and Threads - Oct. 1-17
- CPU Scheduling
- Process Synchronization
Readings:EXAM Oct. 22 - Introduction and Processes and Threads.
- OSC chap. 4-8
- A.D. Birrel. An Introduction to Programming with Threads. Tech. Report, Digital - Systems Research Center, Palo Alto, CA, Jan. 1989
- Memory Management - Oct. 22-29
- Memory Management
- Virtual Memory
Readings:EXAM Nov. 5 - Memory Management.
- OSC 9-10
- R.C. Daley and J.B. Dennis, Virtual Memory, Process, and Sharing in MULTICS,Communications of the ACM, 11(5), May 1964, pp. 306-312.
- I/O Systems - Oct. 31-Nov. 5
- I/O Systems
- Mass-Storage Structure
- OSC 13-14
- File Systems - Nov. 7-14
- File-System Interface
- File-System Implementation
Readings:EXAM Nov. 19 - I/O and File Systems.
- OSC 11-12
- McKusic, M.K., Joy, W.N., Leffler, S.J., and Fabry, R. S., A Fast File System for UNIX, ACM Trans. on Computer Systems, 2(3), pp. 181-197, Aug. 1984.
- Introduction to Distributed Systems - Nov. 19- Dec. 3
- Distributed System Structures
- Distributed Coordination
- Distributed File Systems
- OSC 16-17
- Chapter 1&2 from Andrew S. Tanenbaum Distributed Operating Systems
- Chapter 12 Randal E. Bryant and David O'Hallaron from Computer Systems
- Read NFS from OSC chapter 12
- C. Hedrick, Introduction to the Internet Protocols, Computer Science Facilities Group, Rutgers University, Jul 1987.
- Thanksgiving Break - Nov. 28
EXAM Dec. 5 - Distributed Systems.
- Protection and Security - Assigned for reading
- OSC 18-19
- Denning, D., The United States vs. Craig Neidorf,Communications of the ACM, 34(3), Mar. 1991, pp. 22-43.
Unless otherwise indicated, homeworks and projects are due by the end of lecture on their due date. If you hand in an assignment late, we will take off 20% for each day (or portion thereof) it is late.
Cheating vs. Collaboration:
Collaboration is a really good thing and we encourage it. On the other hand, cheating is considered a very serious offense. When in doubt remember that it's OK to meet with colleagues, study exams together, and discuss assignments with them. However, what you turn in must be your own (or for group projects, your group's own) work. Copying code, solution sets, etc. from other people or any other sources is strictly prohibited.
Last modified: Thu Nov 6 09:48:16 CST 2008