The discussion section is not ``optional'': it is at least as important as the lectures. The primary focus of the discussion meetings will be topics related to the projects (including introduction to the Java programming language), but time will also be available for answering any questions you have regarding points raised in the the lectures or the text.
The following references have been collected locally for fast access.
There will be five programming projects, all in the Java programming language. Sun SparcStation workstations running the Solaris dialect of the Unix operating system are provided for your use, but you may use any computer to which you have access that implements the Java programming language. 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.
The first assignment will be an easy ``get acquainted'' exercise designed to help you become familiar with the computing environment and the Java language. Subsequent projects will involve process synchronization, processor scheduling, disk scheduling, and file-system implementation. On all but the first project, 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.
Note: Programming assignments are changed from semester to semester. A master list of projects assigned in the past is available.
Cheating will be vigorously punished. See the student handbook for more details. Enough said!
Assignments are due at the beginning of class (9:30 a.m.) on the date indicated. Over the entire semester, you have three late days of credit. You can use these late days on different assignments (e.g., one day on each of three assignments) or all three days on one assignment. Late days may not be used for the last assignment.
Most students taking this course will be familiar with C++ but not Java. Why, then, did we choose Java? There are several arguments in favor of it.
On the other hand, switching to a new programming language is always a bit dislocating. Fortunately, there are excellent resources are available to ease the transition. The Java Programming Language by Arnold and Gosling is amazingly good. It is neither an introductory programming primer (the authors assume you already know how to program) nor a reference manual (although a reference manual is available online), but a readable introduction to the language, which takes you all to the way from getting started to everything you need to write quite sophisticated programs in Java. This book is available at the University Bookstore. You are strongly encouraged to buy it.
I have also gathered a variety of other resources together, including a online tutorial that is far more extensive than the short tutorial I wrote, and a reference manual for the standard class libraries you will be using.
There will be a midterm and a final exam, each of which will count for 25% of your grade. The first programming project (getting started) will count for 2% of your grade. The remaining four projects will count for 12% each.
The following schedule is tentative; it may be updated later in the semester, so check back here frequently.
|Weeks 2 - 6
|Processes, Synchronization, Processor Scheduling
|Chapters 4 - 7
|Week 3, first lecture
|Project 1 Due
|Week 6, second lecture
|Project 2 Due
|Weeks 6 - 11
|Memory Management and Virtual Memory
|Chapters 8 - 9
|Week 8, first lecture
|Project 3 Due
|7:25 - 9:25 pm, Room to be announced.
|Weeks 11 - 14
|File Systems and Disks
|Chapters 10 - 12
|Week 11, second lecture
|Project 4 Due
|Protection and Security
|Chapters 13 - 14
|Week 15, second lecture
|Project 5 Due
|Two hours, date and time to be announced.