24308 CSC 080A - 0 - Operating Systems
This web page is http://www.bernstein-plus-sons.com/.dowling/CSC080/CSC080_Syllabus.html
Copyright © 2002, 2003 Herbert J. Bernstein and other parties. All rights reserved.
This is the syllabus for CSC 080A for Spring 2003. As the course moves forward, students should return to this page frequently for updated material.
Introduction to the structure of multiprogramming computer operating systems.
Topics include: memory management, multiprogramming, virtual memory,
job and process scheduling, concurrency, sharing, synchronization, processor
management, deadlock detection and avoidance, device and file management.
Prerequisites: CSC 071, MTH 017.
This Spring 2003 section is:
|Operating Systems ( 3.00 ) 24308 CSC 080A - 0|
|College:||Arts & Sciences|
|Department:||Math & Comp Science Department|
|Days||Time||Location||Schedule Type||Date Range|
|M||5:30 pm - 8:10 pm||Kramer Science Center 102A||Lecture||Jan 29, 2002 - May 16, 2002|
Note that, in general, the instructor will be at the Oakdale campus on Mondays evenings, Tuesday, Wednesday and Thursday afternoons. If at all possible, please use email to schedule meetings in advance to avoid conflicts with other students and other obligations of the instructor.
For more information see http://www.bernstein-plus-sons.com/.dowling/HJB_Contact_Info.html.
Students are expected to have their text books no later than the second week of class.
Attendance will be taken at all class meetings. All absences must be explained in writing (or via email). Students who miss 2 or more lectures must meet with the instructor to review their progress in the course. Grades will be reduced for unexcused absences (see grading policy, below).
All students will be required to actively particpate in classroom discussions and to work problems at the board in class. Many assignments will be given for drill. All completed assignments must be brought to class on the due date. Students will be required to turn in some of those assigments for grading. Students will be given daily brief quizzes related to, but not necessarily identical to, earlier assignments. Quizzes will often be based on the assigned readings, asking questions that have not yet been discussed in class. There will be no makeups for these quizzes. Students will be required to complete a systems-related programming project, which is to be done as a group programming effort. The "default" project is to create a "shell". An open-book midterm and an open-book, open computer/calculator final will be given. In general, no assignments will be accepted late and no makeups will be given for missed quizzes or examinations. Requests for exceptions to this policy will be considered only for the most pressing reasons (illness requiring hospitalization, death in the family, reserve call-up, etc.), must be submitted in writing in a timely manner, and will be granted only if the instructor has sound reason to believe that the student is highly likely to master the material of the course within the current semester.
The syllabus and the course objectives that follows are derived in part from the IEEE/ACM "Computing Curricula 2001 Computer Science" - Final Report - (December 15, 2001) by the Joint Task Force on Computing Curricula, IEEE Computer Society, Association for Computing Machinery.
For the introductory material, see the text and see CSC080_Introduction.html
For devices and files, see the text and CSC080_Devices_Files.html.
For security, see the text and CSC080_Security.html.
Each student will be expected to display a solid grasp of systems programming by working on a suitable project. Students are encouraged to work in groups. Each member of each group will be required to explain to the class some major aspect of the group project, and to respond to questions from the class and from the instructor on the project. Students may propose their own project no later than the 4th week of class. If no project is proposed, the instructor will assign a project involving the design and creation of a useful shell under Linux or Windows.
Some students may not have an adequate preparation in programming to undertake the homework assignments and the course project. In general systems programming is most comfortably done in C or some other language with explicit access to pointers and with manually controlled garbage collection. However, a good knowledge of, say, java, should be enough for most students to adapt to the demands of the course. For those students who have difficulty in breaking free of the strictures and conventions of java, it may help to consult:
from the Cornell University CS414 Operating Systems course by Emin Gün Sirer. Our thanks to Gueorgui Kitchoukov for pointing out this useful resource.
Please consult the course assigments page frequently.
Demonstration implementation of the "Banker's Algorithm" as described A. S. Tanenbaum, "Modern Operating Systems", 2nd ed., Prentice Hall, Upper Saddle River, NJ, 2001.
Demonstrates use of malloc for memory allocation.
Demonstrates crude use of command line.
The original design of the Banker's Algorith is due to Dijkstra (1965)
The purpose of this code is to demonstrate a common "systems" programming style using a mixture of C and C++. The code is intentionally non-modular, something simply "dashed off" while transcribing an idea from a book directly into code. Final code would be extensively reworked and modularized.
Reverses a file byte by byte. Demonstrates use of getopt to process the command line, use of a temporary file, file manipulations.
Using VNC via SSH: vnc.html
If you're interested in joining with your fellow students in developing and maintaining a web site, or pursuing your exploration of computer hardware or software, you might want to consider joining the Dowling Computer Club. Just follow the link for further details:
Dowling College Computer Club Web Site