COSC 423 Operating Systems

Last modified: "January 8, 2022 09:38:24 by evett"
This page is maintained for archival purposes. Up to date materials are now accessed via Canvas

Instructor: Matthew Evett

Look for any symbols below!

Course Syllabus


Lecture Notes

  1. Event-driven programming and callback methods in Java. This includes modifications of some of the code we looked at in class.
  2. The Coffee and Tea code (multi-threading)
  3. Unsynchronized and the synchronized bank examples. These illustrate the use of synchronization in Java.
  4. Animation in Java.
  5. Chapter 1 of textbook
  6. Chapter 2, What's an OS?
  7. Chapter 3, Components of an OS
  8. Chapter 4, Processes
  9. Chapter 6, CPU scheduling
  10. Chapter 7, Process Coordination
  11. Code example demonstrating the dangers of Synchronization
  12. Chapter 8, Deadlocks
  13. Chapter 9, Memory Management
  14. Chapter 10, Virtual Memory
  15. Source code from Silberschatz textbook. (You should download this to your PC and decompress it there. Here is the decompressed code, for your viewing pleasure!

Assignments

To submit assignments, go to webct2.emich.edu. From there, go to our course's page. Click on the "Assignments" tab in the left-hand column.

Notes on assignments, in general

See the page on Stylistic Suggestions for programming assignments, here. Programming and other assignments should be completed by each student on their own. It is expressly forbidden for students to collaborate on assignments without the express permission of the instructor. A few friendly pointers and a bit of advice is fine, but "borrowing" or copying another's work is grounds for punitive action, including a failing grade and possible expulsion from the University.

See this page for pointers to various programming reference guides.

Grading of programming assignments

As specified in the course syllabus, program functional correctness accounts for only about 80% of the grade assigned to a program. The remainder of the grade accounts for the program's style (including header and in-line comments, indentation, identifier names) and design (how you decompose the solution, what classes you use, etc.) A fuller description of stylistic and design requirements is here.

Web Caucus for group discussion of issues

Feel free to make use of the web caucus for this class to discuss problems you are having with assignments, etc. To use the webcaucus, you must have a working EMU e-mail account (you can get one for free at the library, if you don't already have one). The URL is webcaucus.emich.edu. Once there, you want to register for the cosc423_F06 caucus.

Programming Environment

While students may certainly use their own PCs to develop and test their programming assignments, the final version of the programs must be executable under JDK1.5, on a PC running Windows XP. We will examine how to ensure this during the course.

All programming projects shall be written in Java, using only the libraries explicitly permitted by the instructor.


Java

To obtain JDK, go to Sun's site. You want to download the latest release of the JDK. If you are using a Mac, you may have to download an earlier release of the JDK. Follow the installation directions! (You may have to set your DOS PATH variable.)

If you haven't set up a Java IDE, I suggest using Eclipse.

If you are more comfortable working in a text-based environment, you can use your favorite editor and work with the JDK directly.

With Java installed, you may want to download the SDK documentation, too.

Okay, now let's look at some code. Download the code examples from Horstman and Cornell's book, Core Java. This is a zip file, which you should decompress. Now, cd into v1ch2/Welcome, and use BlueJ to open Welcome.java. From within TextPad, use Tools:Compile Java to compile the file (forming Welcome.class), then run it using Tools:Run Java Application.

Core Java source code

If you want to get really serious about understanding designing programs with Java, you might check out Josh Bloch's book, Effective Java. You can read about some of his ideas in this interview.

For a history of BSD Unix, see this interesting article.