CSCI 346 / Spring 2016
The final exam will be Tuesday, May 17, 11:30 - 2:00 PM, in Swords 328. If you have not made arrangements with me and confirmed by email, you must take the exam during the regularly scheduled time. It should take 2 - 2.5 hours to complete. The format will be similar to the midterm exam. This exam is comprehensive, with material drawn from the midterm exam and all previous homework and projects. However, it will be biased heavily towards material covered in the second half of the course. That is, less emphasis on hardware and interrupts, the command shell, process/PCB management, and scheduling algorithms, and more emphasis on: IPC, shared memory, synchronization, resource allocation, deadlock, memory management, virtual memory, page replacement, demand paging, and perhaps a very little bit on filesystems.
Office hours will be held:
Some review materials (also look at the text and recent projects and homeworks).
This course is intended for students who are planning to major or minor in Computer Science.
This course provides the student with a general model of operating systems principles and current implementation techniques. The principles and mechanisms which underlie operating systems services will be covered. Topics include process and thread abstractions including inter-process communication and synchronization, file management, memory management and virtual memory, file systems, protection schemes, distributed systems principles, and device handlers. Students will complete a medium-size systems software project.
Operating Systems Concepts, Eighth Edition
Silberschatz, Galvin and Gagne.
ISBN: 0470128720 / 978-0470128725
There will be several assignments involving C/C++ programming and shell scripting, of varying levels of difficulty and duration. There will also be several written assignments in which you will answer questions about operating systems concepts. Emphasis will be roughly evenly split between programming projects and written assignments. There will be a midterm and a final exam.
The final grade will be computed approximately as follows:
There will be one evening mid-term exam and one final exam. Additionally, smaller in-class quizes may be given.
If you cannot attend these exams, please see the instructor immediately to arrange an alternative time.
You will receive 3 flex days for the semester. Each time you turn any programming project or homework late will use up some of your flex days. After you have used up your flex days, penalties will apply. The maximum possible score for an assignment will be reduced by 10% for each day or portion of a day that the assignment is turned in late. So the maximum possible score for an assignment turned in up to 24 hours late is 90%, and the maximum possible score for an assignment turned in up to 48 hours late is 80%, and so on. The penalty will be determined when all parts of the assignment (both electronic and paper copies, if needed) are received by the instructor or the department administrative assistant. In no case will late work be accepted after the solution is published or graded assignment is returned to the class.
Please refer to the math and CS department honor code policy.
A typed discussion log is required for each and every assignment. No work will be accepted without a written discussion log.
In general, you may refer to your texts, your class notes, and your course instructor for help. You may also consult public literature (books, articles, web sites) for general information and examples, but you should not seek or use published solutions to assignments. You may also talk with with fellow students about general information and strategies for solving assignments, but not specific solutions or code. If you are in doubt about what is acceptable, be sure to ask the course instructor.
Clarification about online sources: It is fine to use Google to look for snippets of publicly available code that might help you with assignments, and it is okay to use a limited amount of such code in your own work. You should not take entire solutions or large amounts of code from the web. And you must clearly comment your code to indicate which code and ideas are purely your own, which code or ideas are borrowed or adapted from elsewhere, and where the other code or ideas came from.
In all cases you must cite each source of ideas you adopt in your discussion log for each assignment. You should never present another person's work as your own. By clearly indicating any sources you consult and the people with whom you collaborate, you are giving credit where it is due. If you borrow or adapt code, and if the code is good, then you will get some credit for having found it (you won't get credit for writing it, since you didn't). If you borrow bad code, the fault is all yours.
For each assignment, you must keep a log detailing every collaboration you had with someone else and every source you consulted when completing the assignment. Each log entry must include: the date and time, the source, the length of time spent talking or reading, and a summary of discussion or material read. You don't need to include the course textbook, the lecture notes, or the instructor, since it is assumed you will consult these sources. Even if you did not discuss anything with anybody and never consulted any other sources, you must still submit a discussion log that says just that.