Marvin Solomon
office: 7367 Computer Sciences
office hours: 1:00 Tuesday and Thursday, or by appointment
office phone: 263-2844
email address:
solomon@cs.wisc.edu
office: | 1309 Computer Sciences | |
office hours: | 1:00-3:00 PM, MWF | |
email address: | mcowlish<AT>cs.wisc.edu |
Office: | 5384 Computer Sciences |
Office Hours: | 9:00-11:00 AM Monday; 9:00-10:00 AM and 4:00-5:00 PM Wednesday |
email address: | eldawy<AT>cs.wisc.edu |
Score | 55-59 | 60-64 | 65-69 | 70-74 | 75-79 | 80-84 | 85-89 | 90-94 | 95-99 |
Count | 4 | 2 | 2 | 6 | 2 | 4 | 10 | 18 | 12 |
Score | 5-9 | 50-54 | 60-64 | 70-74 | 75-79 | 80-84 | 85-89 | 90-94 | 95-99 |
Count | 2 | 2 | 2 | 8 | 6 | 16 | 12 | 10 | 2 |
Score | 85-89 | 90-94 | 95-99 | 100 |
Count | 6 | 6 | 34 | 14 |
As Jason noted:
If you're still working on your project and you are seeing some runs hang, you might want to grab new copies of Request.java, Warehouse.java, and P3.java from ~cs537-1/public/html/source/p3.
To make up for the time some of you wasted on this bug, I've extended the due date to Tuesday, March 27.
Score | 50-54 | 60-64 | 65-69 | 70-74 | 75-79 | 80-84 | 85-89 | 90-94 | 95-99 | 100 |
Count | 2 | 1 | 1 | 2 | 9 | 14 | 15 | 8 | 7 | 1 |
Score | 55-59 | 65-69 | 70-74 | 75-79 | 80-84 | 85-89 | 90-94 | 95-99 | 100 |
Count | 2 | 4 | 2 | 4 | 6 | 14 | 18 | 8 | 2 |
Score | 0-4 | 35-39 | 45-49 | 50-54 | 60-64 | 65-69 | 70-74 | 75-79 | 80-84 | 85-89 | 90-94 | 95-99 |
Count | 1 | 1 | 1 | 1 | 2 | 2 | 8 | 8 | 14 | 8 | 11 | 5 |
Comments on the grading are in the file ~cs537-1/handin/yourlogin/P1/p1_grade.txt. You can find your current record and class standing in the file ~cs537-1/handin/yourlogin/grade.
Anyone in the class can send mail to the whole list. However, please do not mail to this list unless you think your message may be of interest to a significant fraction of the class. Questions about ambiguities in project specifications, etc. should probably be sent to the Professor and/or TAs. One appropriate use of these lists would be to look for a partner for projects.
Messages previously sent to this list will be archived at https://www-auth.cs.wisc.edu/lists/classes/compsci537-1-s07/.
CS 537 is intended as a general introduction to the techniques used to implement operating systems and related kinds of systems software. Among the topics covered will be process management (creation, synchronization, and communication); processor scheduling; deadlock prevention, avoidance, and recovery; main-memory management; virtual memory management (swapping, paging, segmentation and page-replacement algorithms); control of disks and other input/output devices; file-system structure and implementation; and protection and security.
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., lists and hash tables). You will need to be able to program in Java to perform the assignments in the course.
11:00 - 12:15 | Tuesday and Thursday | 1221 Computer Sciences | |
2:25 - 3:15 | Tuesday | 1221 Computer Sciences |
The Tuesday afternoon 2:25 session is listed in the timetable as “discussion”, but it will generally be used as fourth hour of lecture, following in sequence with the other lectures. Each week, it will start with discussion of topics related to the projects and questions regarding points raised in the the lectures or the text, but when all these questions have been answered, I will continue with the regular lecture material.
Important announcements will be sent to the class mailing list or posted to the News section of this web page above, so please read your mail and check this page frequently (particularly around project time). You are responsible for all such announcements, as well as announcements made in lecture. Note that if you are not officially enrolled in the class, we cannot add you to this mailing list because it is automatically generated.
Applied Operating Systems Concepts, Seventh Edition
by Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne, John Wiley and Sons,
2004;
or
Applied Operating Systems Concepts with Java, Seventh Edition
by Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne, John Wiley and Sons,
2007.
This text is only recommended rather than required, since the main “text”
for this course is a set of online lecture notes.
This book is useful for reference, for an alternative point of view, and for
those who like the security of having a large, heavy, and expensive book
to turn to. I chose this particular text because it has been used in recent
semesters, so used copies should be available at the bookstore.
Other editions may be used interchangeably for the purposes of this course.
Another recently used text book that covers the same material is Modern Operating Systems, Second Edition by Andrew S. Tanenbaum, Prentice Hall, 2001.
The Java Programming Language, Fourth Edition by Ken Arnold, James Gosling, and David Holmes, Addison-Wesley, 2006.
There are literally thousands of books on the Java programming language and I have only looked at only a few of them, so there may very well be a better book, but this one is quite good. The fourth edition also includes “Java 5” features, which we will be using in this class. See also the summary of new features on the Java web site.
I have written a set of online lecture notes. Lots of additional helpful materials about Java are available on the web.
The following references are available online at the Java home site.
There will be five programming projects, all in the Java programming language. Unix workstations are provided for your use, but you may use any computer to which you have access that implements the Java programming language (version 1.5). However, if you do not use the Computer Sciences Department's computers, you will be responsible for transferring any required data sets or software packages to your computer and for transferring programs and results back to the CS department machines to hand them in.
The first assignment will be an easy “get acquainted” exercise designed to help you become familiar with the computing environment and the Java language, particularly the Thread feature of Java. Subsequent projects will involve process synchronization, processor scheduling, memory management, and file-system implementation. Each student should do the first assignment individually. For the remaining projects, students will be required to work in pairs. Both members of a pair will receive the same grade on a project. Feel free to discuss projects with anyone, but you must not share code with anyone but your partner. That means you may not use in any way code written by other students in this class, code from previous semesters, or code from similar courses elsewhere. In summary, the only Java code you may use is code you write, code we give you, and Java classes from the standard Java libraries. Cheating will be vigorously punished. See the Dean of Students' Code of Conduct for more details. Enough said!
Programming assignment 3 is due at the start of lecture. Other programming assignments are due at 1:00 a.m. on the dates indicated.
Sometimes the projects in this course are in C or C++, sometimes they are in Java, and sometimes they are in a mixture of languages. This semester, both lectures will be using Java. There are several arguments in favor of Java, but two in particular are most relevant to this course:
On the other hand, there are some excellent arguments for using C and/or C++ in this course.
This course will assume that all students are Java programmers at the level of someone who has completed CS 367 with an A or AB. If you are familiar with C++ but not Java, check out the excellent introduction to Java and/or my Notes on Java. See The Java Tutorials and/or the Java book for lots more information about Java.
There will be a midterm and a final exam, each of which will count for 19%
of your grade.
The midterm will be
7:15-9:15 PM Thursday, March 15, room 1240 Computer Sciences.
The final exam will be
12:25 - 2:25 PM, Wednesday, May 16, room 1240 Computer Sciences.
The first programming project (getting started) will count for 2% of your grade. The remaining four projects will account for the remaining 60% of your grade. They may not all be equally difficult (generally they will get progressively harder throughout the term), but they will all count equally.
The following schedule is tentative; it may be updated later in the semester, so check back here frequently.
Week | Dates | Topic |
---|---|---|
Lectures | ||
1 | Jan 23 - 25 | Introduction |
2-6 | Jan 30 - Feb 27 | Processes, Synchronization, Processor Scheduling |
6-11 | March 1 - Apr 10 | Memory Management and Virtual Memory |
11-14 | Apr 12 - May 1 | File Systems and Disks |
14-15 | May 3 - May 10 | Protection and Security |
Programming Assignments | ||
3 | Wednesday, Feb 7 at 1:00 am | Project 1 -- Shell |
6 | Wednesday, Feb 28 at 1:00 am | Project 2 -- Synchronization |
9 | Tuesday, Mar 27 at the start of lecture | Project 3 -- Performance |
12 | Wednesday, Apr 18 at 1:00 am | Project 4 -- File Systems, Part I |
15 | Friday, May 11 at 1:00 am | Project 5 -- File Systems, Part II |
Exams | ||
8 | Thursday, March 15 | Midterm Exam, 7:15 - 9:15 pm, Room 1240 Computer Sciences |
16 | Wednesday, May 16 | Final Exam, 12:25 - 2:25 pm Room 1240 Computer Sciences |