Professor:
Remzi Arpaci-Dusseau
(remzi@cs)
Office:
7357 Computer Sciences
Office Hours:
Tuesday at 3:30pm, and Thursday at 1:30 pm, and by appointment
TA:
Det Buaklee
(det@cs.wisc.edu)
Office:
1302 Computer Sciences
Office Hours:
Monday at 2:30pm - 4:00pm and Tuesday at 3:30pm - 5:00pm
Office Phone:
262-6600
TA:
Vishal Sanghvi
(sanghvi@cs.wisc.edu)
Office:
1338 Computer Sciences
Office Hours:
Monday at 9:00am - 10:30am and Friday at 11:00am - 12:30pm
Office Phone:
262-6592
5/9: Exam notes
Here
is an overview of exam topics for those who missed the review.
You will be allowed a single page (both sides) as a cheat sheet.
Here are some
Summer Readings
for those who are interested.
This course assumes familiarity with basic computer organization (e.g., processors, memory, and I/O devices as covered in cs354) and data structures (e.g., stacks and hash tables). You will need to be able to program in both Java and C (or C++) to perform the assignments in the course.
The mailing list is
cs537-2list@cs.wisc.edu.
The log of email is available at
this url.
You may also find a number of on-line references useful. For Java references, Marvin Solomon has written an excellent tutorial,
Java for C++ Programmers.
He also recommends the following book on Java:
The Java Programming Language
by Ken Arnold and James Gosling, Addison-Wesley, 1996. You may also want to check out the materials for the self-paced
CS368 course
called "Java for C++ programmers".
There are also lots of helpful materials about Java available on-line. The following references are available at the
Java home site.
You will be able to use either C or C++ or the system programming assignments in the class. You may choose whichever you prefer. For those of you who want to learn C++, you might want to check out the notes and exercises for the self-paced course "C++ for Java Programmers". The best C book in the world is Kernighan and Ritchie's beautifully sparse
"The C Programming Language."
New Unix users and novice Unix users new to the CSL Unix facilities are encouraged to attend an orientation session as early in the semester as possible. You may also purchase a copy of
CS 1000
(An Introductory Manual to the Unix Operating System and the Computer Sciences Department's Instructional Computing Environment) at the DoIT Tech Store (first floor of the Computer Sciences and Statistics Building).
The projects are a fundamental part of this course. Although the first assignment will be relatively easy, the remaining projects each require a significant amount of time, so
do not procrastinate!
It is likely things will take longer than you expect. Do not wait until the day before the assignment is due to start. These assignments should be
started well over a week
before they are due. All information necessary to complete the assignments will be available from the class web page.
If you plan to perform software or hardware development after graduation, you will need to know how to work well within a group. Therefore, for all projects after the first assignment, we suggest that you form
groups of two students.
Team members will all receive the same grade on the programming assignments.
Most of the programming assignments will use Java; however, half of the first assignment and one other assignment will require C or C++. We assume that you have enough programming background that learning the basics of a new language will not be difficult.
For some of the projects, you will be graded on how well your implementation works. For these assignments, we will test your program on a suite of input sets while you are present. Your grade will be based on how many of the tests your application passes and how well you are able to answer our questions; we will only briefly examine your code to ensure that you followed the specifications of the assignment. For the other projects, you will be graded on your design, functionality, and documentation. For these assignments, you will need to develop input sets that convince us that your application has the desired behavior. Your grade will be based on how well you describe your implementation and document its functionality. Each assignment will be worth the same number of points, although some will be easier than others.
For all Java assignments, you
must
adhere to the following conventions:
Subject
1 Threads 2 Scheduling 3 Synchronization 4 Virtual Memory 5 File Systems |
Focus
C and Java C Java Java Java(?) |
Due Date
Feb. 6 Feb 27 March 27 April 17 May 8 |
Specification
Project #1 Project #2 Project #3 Project #4 Project #5 |
Date
Jan 23 Jan 25 Jan 30 Feb 1 Feb 6 Feb 8 Feb 13 Feb 15 Feb 20 Feb 22 Feb 27 Mar 1 Mar 6 Mar 8 Mar 13 Mar 15 Mar 20 Mar 22 Mar 27 Mar 29 Apr 3 Apr 5 Apr 10 Apr 12 Apr 17 Apr 19 Apr 24 Apr 26 May 1 May 3 May 8 May 10 |
Lecture
Intro Processes CPU Scheduling Advanced Topics Synchronization Locks Synchronization (cont) Monitors Message passing Deadlock Memory Allocation Memory Management Segmentation/Paging Exam Spring Break Spring Break Paging/Segmentation TLBs Virtual Memory Virtual Memory Virtual Memory I/O, Disks Class cancelled RAID File Systems File Allocation FFS Beyond FFS Security Encryption Application Case Study and Future of OS Final Exam |
Reading
Ch. 1-4 (skim) Ch. 6 Ch. 7 Ch. 8 Ch. 9 Ch. 17.2, 17.3 Ch. 10 Ch. 11 Ch. 12 Exam Spring Break Spring Break Ch. 5 Ch. 13 FFS paper Ch. 14 |
Other Information
Class Survey Project #1: Available Project #1: Due Project #2: Available Project #2: Due Project #3: Available Exam Spring Break Spring Break Project #3: Due Project #4: available Project #4: Due Project #5: available Project #5: Due |