24308 CSC 3080A - 0 - Operating Systems
This web page is http://www.bernstein-plus-sons.com/.dowling/CSC3080S05/CSC3080_Syllabus.html
Copyright © 2002, 2003, 2005 Herbert J. Bernstein and other parties. All rights reserved. â
This is the syllabus for CSC 3080A for Spring 2005. 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 2025 (or CSC 1071), MTH 1017.
This Spring 2005 section is:
|Operating Systems ( 3.00 ) 24308 CSC 3080A - 0|
|College:||Arts & Sciences|
|Department:ˆ||Math & Comp Science Department|
|Days||Time||Location||Schedule Type||Date Range|
|TR||2:30 pm - 3:50 pm||Kramer Science Center 102A||Lecture||Jan 28, 2002 - May 16, 2005|
Note that, in general, the instructor will be at the Oakdale campus on Monday, 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.
This three volume set by Knuth is an essential reference for any serious computer scientist. There will be no specific assignments from Knuth, but reading it may well help in understanding the required texts and the lectures.
The Gottfried book is an inexpensive C text and will help with the most important language used for modern operating systems.
A hard bound laboratory notebook. An inexpensive back-and-white covered composition book will suffice but it must be bound (not looseleaf).
Keeping clear written records is an important part of working in any scientific field. It is particularly important in Computer Science, where there are very complex, non-obvious decisions to make.
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. As per department policy students who miss more than 2 lectures before the midterm will be given a midterm warning and advised to withdraw. 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.
Every student will be required to maintain a contemporaneous hardbound notebook recording all significant activities related to this course. The notebook should record the major topics discussed, questions about the subject matter of the course and the answers when they are found, and all activites related to the course project (see below). The instructor will borrow the notebooks several times during the year and grade them for thoroughness, clarity and relevance to the course. Only the portions of the notebook that are dated, written in the student's own hand and on the permanent pages of the notebook will be considered in the grading.
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 CSC3080_Introduction.html
For devices and files, see the text and CSC3080_Devices_Files.html.
For security, see the text and CSC3080_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 Algorithm 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