22908 CSC 3080A - 0 - Operating Systems
This web page is http://www.bernstein-plus-sons.com/.dowling/CSC3080S12/CSC3080_Syllabus.html
Copyright © 2002, 2003, 2005, 2012 Herbert J. Bernstein and other parties. All rights reserved. ?
This is the syllabus for CSC 3080A for Spring 2012. 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.
CSC 1024N or permission of the Mathematics and Computer Science Department chair.
This Spring 2012 section is:
|Operating Systems - 22908 - CSC 3080A - 0|
Associated Term: Winter/Spring 2012
Registration Dates: Nov 14, 2011 to May 14, 2012
Attributes: Liberal Arts
Instructors: Herbert J. Bernstein (P)
Dowling On Line Campus
Lecture Schedule Type
On Line Instructional Method
View Catalog Entry
Note that, in general, Dr. Bernstein will be at the Brookhaven campus on Monday, Tuesday and Thursday afternoons and on the Oakdale campus on Wednesday afternoons. Meetings on the Oakdale campus will be in KSC 103. Meetings at the Oakdale campus are by appointment only.
For more information see http://www.bernstein-plus-sons.com/.dowling/HJB_Contact_Info.html.
The four volume Knuth set 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 text and the lectures and to get ready for a career in Computer Science.
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.
Each student has a Dowling College email account. In addition, each student is required to sign-up for a Google gmail account, so that they will have access to Google Sites and Google Blogger (blogspot.com). There will be a common course blog at http://yayahjbcsc3080s12.blogspot.com. In addition, each student is required to maintain their own blog for the course. Once you have a gmail account, you should create a blog for the course using your gmail user name followed by CSC3080S12. You will use the blog to discuss your own progress and to maintain useful brief notes for the course.
You will also need a Google Sites account to post your assignments and to maintain notes that are not appropriate for your course blog. There will be a common course web site at https://sites.google.com/site/yayahjbcsc3080s12/. Each student is required to maintain their own course web site, to which they will post their assignments. Once you have a gmail account, you should create a Google Sites course web page using your gmail user name followed by CSC3080S12.
In addition, each student will have an account on a unix system at Dowling College, on arcib.dowling.edu. Those accounts will be useful in running compilers and practicing creation of web pages.
This is an online class, with no on-site meetings. The major risk in taking an on line course is in failing to make steady progress through the semester. Therefore, all students are required both to demonstrate their progress with on-line quizzes and to attend at least one online meeting every 2 weeks with the instructor to discuss the work they are doing for this class. Students are encouraged to schedule these online meetings in groups via Skype, but they may meet the requirement with individual Skype meetings or by on-site meetings during office hours.
Students who fail to maintain regular contact with the instructor prior to the midterm will get a midterm warning and be advised to withdraw from the course.
The weekly quizzes are open-web, open-book, open-notes quizzes, but that won't work in your favor if you don't do the reading.
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 activities related to the course project (see below).
You will be required to show your notebook to the instructor via Skype.
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 or by email 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.
Students will be required to complete a systems-related programming project. 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 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