Office hours: Monday 4-5, Wednesdays 2-3, 249 Sci Ctr
The course projects will be in C. If you do not know C or if it has been awhile since you've programmed in C, I encourage you to look at some C programming references before the start of the semester.
Prerequisite: CPSC 035, experience in C or C++ (usually satisfied by completing CPSC 025 or 033). CPSC 025 or CPSC 033 are recommended.
|WEEK||DAY||ANNOUNCEMENTS||TOPIC||READING & ASSIGNMENTS|
|1||Sep 01||Introduction, Processes||Chapt. 1, 3
|2||Sep 08||add/drop ends (Sep 12)||Processes and Scheduling||Chapt. 3, 5|
|3||Sep 15||Sccheduling and Threads||Chapt. 5, 4
|5||Sep 29||Synchronization cont.||Chapt. 6|
|6||Oct 06||Deadlock||Chapt. 7
|7||Oct 20||Midterm (Wed night 7-9pm) (Oct 22)||Memory Management||Chapt. 8|
|8||Oct 27||Mem Mgmt, Virtual Memory||Chapt. 8, 9
|9||Nov 03||Virtual Memory||Chapt. 9
|10||Nov 10||File System||Chapt. 10, 11|
|11||Nov 17||no class Friday (Nov 21)||File System, Disks||Chapt. 11, 12
|12||Nov 24||Thanksgiving break (Nov 27)||I/0 Subsystem
the sounds of disks failing
|13||Dec 01||Protection and Security||Chapt. 14, 15
|14||Dec 08||Distributed Systems||Chapt. 16|
Final Exam (9am-noon) room 264 Sci Ctr
|20%||Midterm Exam (Wed. Oct. 22 7-9pm)|
|50%||Homework and project assignments|
We will be using QEMU for Linux kernel projects. See the On-line Resources section for more information about using qemu.
Please read through the"Computer Lab Rules" under the "Introductions" section of the CS help pages.
For Linux kernel projects, you should periodically copy the kernel source
code files you modify (just the ones you modify) into your shared project
directory, because we do not do nightly backups of the
directories that will contain your Linux code. Use
to copy files to/from your Linux VM to your project directory.
In addition, you may want to use some type of revision control software to
help you coordinate shared accesses to project files by you and your partner
and to allow a way for you to back-up working versions of your code. I'd
recommend using CVS. However, RCS is also available on our systems.
scp can be used to copy source code
from your VM to your CS Lab account.
"Collaboration Tools" documentation for more information.
Programming assignments will be submitted on-line using
cs45handin. You can submit the same assignment multiple times
up to the due date using cs45handin. Once you have
submitted your solution to an assignment, make sure to
keep a copy of it that you will not modify after you submit it (this way if
something goes wrong with cs45handin I can use the dates of your solution
files to determine when you submitted your solution).
Most assignments will require an
additional project demo. You will sign up for a demo slot during which you
and your partner will run your modified kernel for me with tests that
demonstrate that your modifications work as specified.
You and your partner are allowed to use up to 3 late days this semester for turning in programming assignments. However, at most 2 late days can be used on an individual assignment. One day late means turned in before the original time the assignment was due on the next day class meets. For example, if the original assignment is due on Monday before 1am, then if you submit it after Monday at 1am but before Wednesday at 1am it is one day late.
Use late days wisely; once you have used up your late days, I reserve the right to not accept any further late assignments from you, and if I do accept further late assignments from you, you will receive a significant late penalty on them.
Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. If you are in doubt about some help that you received, then credit the person(s) from whom you got help by citing them in a comment at the top of the file and discuss the situation with your instructor.
For this course, it is fine to help each other with using qemu, with building and booting a Linux kernel, with using debugging tools, with reading and understanding Linux kernel code, and with reading and understanding the assignments. However, you should avoid discussing the details of your solution with anyone other than your project partner, and you should never look at anyone else's code for a solution to a project (or to a similar project). In addition, there are many useful on-line Linux resources of which you should take advantage. However, you should be careful not to use these resources in such a way that it violates the spirit of our Academic Integrity statement. For example, you should not search the WWW for Linux source code solutions to similar problems (I don't know if any exist, but it is possible), nor should you post questions to news groups or mailing lists seeking a solution to the specific problem you are asked to solve. Basically, the solution and code that you submit as your own should be your own. If you are unclear about what type of collaboration is okay and what type is not, ask me about your situation before proceeding.