Course description
Introduces the basic concepts underlying computer operating systems and computer networks and provides hands-on experience with their implementation. Covers the basic structure of an operating system: application interfaces, processes, threads, synchronization, interprocess communication, processor allocation, deadlocks, memory management, file systems, and input/output control. Also introduces network architectures, network topologies, network protocols, layering concepts (for example, ISO/OSI, TCP/IP reference models), communication paradigms (point-to-point vs. multicast/broadcast, connectionless vs. connection oriented), and networking API's (sockets). Uses examples from many real operating systems and networks (UNIX, MS-DOS, Windows, TCP/IP, Ethernet, ATM, and token rings) to reinforce concepts.
prerequisites
The official prerequisite for this course is CS 2600. This course will be project-centric, and all students will complete in projects in groups of two (or possibly three, if necessary). Thus, to succeed in this course, you must be able to work in a group. I will allow you to form your own groups, and the course staff will serve as a matching service if necessary. As you are free to choose your partner(s), I will not be sympathetic to complaints at the end of the semester about how your group-mates did not do any work.
It is also highly recommended that you become familiar with using a debugger, as this will greatly aid you in completing the projects. At a high level, you should be motivated, eager to learn, willing to work hard, and make up, on your own, any prerequisite deficiencies you may have.
attedance and participation
This is a junior-level course; I will not mandate you to come to class (you are still responsible for all the material covered in class). The class projects are a major part of this course, and please be aware that you will be working in groups of two. Lastly, note that 5% of your grade is based upon class participation. This is to encourage you to voice your ideas in class and to post them to the forum. Minimally, I must know your name by the end of the term in order for you to get any points for class participation.
We will be using
Piazza as a course discussion/bulletin board. You are expected to check it at least once every few days, use it as the first place to ask questions, and answer others' questions. The course staff will regularly monitor the board, and your participation will count towards your grade.
Homeworks
Homework assignment and solutions will be posted here as they become available.
Homework 1 is due at the beginning of class on January 30th, 2012.
Homework 2 is due at the beginning of class on February 6th, 2012.
Homework 3 is due at the beginning of class on February 13rd, 2012.
Homework 4 is due at the beginning of class on February 22nd, 2012.
Homework 5 is due at the beginning of class on February 29th, 2012.
Homework 6 is due at the beginning of class on March 21st, 2012.
Homework 7 is due at the beginning of class on March 28th, 2012.
Homework 8 is due at the beginning of class on April 4th, 2012.
Homework 9 is due at the beginning of class on April 11th, 2011.
Homework 10 is due at the beginning of class on April 18th, 2012.
Projects
Project descriptions will be posted here as they become available.
Project 1 is due at 11:59:59pm on February 8th, 2012. The milestone for project 1 is due at 11:59:59pm on February 1st, 2012. No slip days may be used on the milestone deadline.
Project 2 is due at 11:59:59pm on March 16th, 2012 (Be sure read the FAT Implementation Notes or Inode Implementation Notes). The first milestone for project 2 is due at 11:59:59pm on February 20th, 2012, and the second milestone is due at 11:59:59pm on February 27th, 2012. No slip days may be used on the milestone deadlines.
Project 3 is due at 11:59:59pm on April 2nd, 2012 (Be sure read the Implementation Notes). The milestone for project 3 is due at 11:59:59pm on March 26th, 2012. No slip days may be used on the milestone deadline.
Project 4 is due at 11:59:59pm on April 18th, 2012.
C Bootcamp Projects
C Bootcamp project descriptions will be posted here as they become available.
C Bootcamp Project 1 is due at 11:59:59pm on January 11th, 2012. No slip days may be used.
C Bootcamp Project 2 is due at 11:59:59pm on January 15th, 2012. No slip days may be used.
C Bootcamp Project 3 is due at 11:59:59pm on January 18th, 2012. No slip days may be used.
C Bootcamp Project 4 is due at 11:59:59pm on January 22nd, 2012. No slip days may be used.