In this class, we study principles and implementations of operating systems and networking. The operating system manages hardware resources and provides a simplified interface for programs to use these resources. Networking allows different computers to communicate and potentially act as a larger virtual system. These topics are closely related; networking is often managed by the operating system (and always requires use of the hardware it manages) and the operating system uses the network to provide services like the file system. To facilitate our study of these topics, we will learn the C language, which provides low-level access to the hardware and is often used in operating systems and networking.
We meet Monday, Wednesday, Thursday, and Friday during 5th period (1:20-2:30). On Thursday, we meet in the Cat lab (SMC-E011). The other days, we meet in SMC-A112.
There will be no class April 16 so you can work on your midterm.
Our textbook is "Modern Operating Systems" by Andrew Tanenbaum (3rd edition).
This book only covers the operating systems part of the course. For references on C, the standard references are
If you find yourself struggling in this course, get help right away. The term will move quickly and concepts in this course build on one another so you can't afford to get too far behind. Don't hesitate to come by my office or email me a question.
Week 1: Overview of operating systems and C.
Week 2: OS history. Processes. Memory management.
Week 3: File system.
Week 4: Scheduling. Networking protocol stacks. Midterm.
Week 5: Interprocessor communication. Threads.
Week 6: Deadlock.
Week 7: Network layer: IP. Begin transport layer: UDP.
Week 8: Checksums and error correction. TCP. Name service: DNS.
Week 9: Web: HTTP. Email: SMTP, MIME, POP, IMAP.
Week 10: Data link layer: Ethernet. ALOHA.
Most assignments in this class will involve programming, though we will do some written assignments as well. Lab assignments will not be graded directly, but many of them will be assigned as homework. In addition, we will have a midterm exam the week of April 14 and a final during the finals period. Both will be take-home exams. The final will be cumulative, but emphasizing material since the midterm.
Be aware that I draw my examples for lecture from student assignments. Don't be surprised if something you submit ends up projected on the screen during class. The purpose of this is to demonstrate important concepts and to provide material for discussion, not to embarrass you. I will endeavor to use these examples anonymously by removing names and any other identifying features.
You should plan on submitting all work by the due date, but I know that sometimes this is difficult. Therefore, you get two "late days" that may be used on homework assignments during the term. Each allows you to submit one homework 24 hours late without penalty. They can be used for the same or different assignments. After these two days, assignments lose 10% of their points for each 24 hours they are late. Late submissions will not be accepted once solutions have been posted so let me know if you intend to work on something past its normal deadline. Individual extensions beyond these two days will require extraordinary circumstances.
I assign extra credit problems infrequently. I will however give extra credit for attending colloquium talks sponsored by the CS department and submitting a short writeup about the talk. Give a quick summary and any impressions you had in a couple of paragraphs (~1 page). It doesn't have to be brilliant prose; the main purpose is for me to see what YOU got out of the talk. This offer applies to any qualifying talk you are not otherwise getting credit to attend and is due within a week of the talk (slight extensions possible, but I want you to still remember the talk...).
If flunk day falls on the day something is due or the day before, that assignment is extended by one day. Flunk day also acts as a free "late day".
Regular attendance is expected, but there will not be a specific penalty for missing lecture. You are responsible for your own education. This means that you need to find someone to turn in homework if you are absent on the due date and you must find a way to learn the material covered during absences. In addition, please send me an email if you will be missing class so I know what is going on.
Exams in this class must be completed individually. You are allowed to talk with your classmates about homework. When you do this, however, you must do two things:
The same policies apply to getting help from inanimate sources. If you use the web or a textbook other than the one we're using, you must cite this source. As in collaborations with another person, you are expected to write you own solution; do not copy text or code from any source. In addition, you may look at other sources for examples or conceptual help, but not actual solutions. Some problems assigned for this class may have been previously assigned to other classes, but you are expected not to deliberately seek solutions. (If you come across one accidently, let me know and I will give you a modified assignment.) Please feel free to contact me if you have any questions about this policy.
At the end of the term, all of your work will combined into an overall percentage in the class based on the following weights:
| Homework | 45% |
| Midterm | 25% |
| Final | 30% |
The range of scores mapping to each grade will be determined at the end of the term. The mapping will not be stricter than the "standard" 90/80/70/60 and may be more generous. In general, spend your time learning the material rather than worrying about your grade, but feel free to talk with me if you are concerned about it.