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.
completing and submitting projects
For the C Bootcamp homeworks and the projects, we will be using resources and scripts that are available on the CCIS Linux machines. You need to have access to the CCIS Linux machines; if you do not have an account, be sure to
sign up for a CCIS account as soon as possible.
You are welcome to use your personal machine if you wish. If you wish to remotely access CCIS resources, you should have an ssh client installed on your machine (they are available for all major operating systems). If you wish to compile and run code on your own machine, we recommend using a Linux distro or Mac OS X (it may be possible to get the code to compile on Windows, but you're on your own). Note that many of the testing scripts assume that they are being run on the CCIS network. Regardless, all of your submitted code
must compile and run on the CCIS Linux machines.
Homeworks
Homework assignment and solutions will be posted here as they become available.
Homework 1 is due at the beginning of class on September 24th, 2012.
Homework 2 is due at the beginning of class on October 1st, 2012.
Homework 3 is due at the beginning of class on October 10th, 2012.
Homework 4 is due at the beginning of class on October 17th, 2012.
Homework 5 is due at the beginning of class on October 24th, 2012.
Homework 6 is due at the beginning of class on November 5th, 2012.
Homework 7 is due at the beginning of class on November 14th, 2012.
Homework 8 is due at the beginning of class on November 19th, 2012.
Homework 9 is due at the beginning of class on November 26th, 2012.
Homework 10 is due at the beginning of class on December 3rd, 2012.
Projects
Project descriptions will be posted here as they become available.
Project 1 is due at 11:59:59pm on October 3rd, 2012. The milestone for project 1 is due at 11:59:59pm on September 26th, 2012. No slip days may be used on the milestone deadline.
Project 2 is due at 11:59:59pm on October 29th, 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 October 11th, 2012, and the second milestone is due at 11:59:59pm on October 22th, 2012. No slip days may be used on the milestone deadlines.
Project 3 is due at 11:59:59pm on November 19th, 2012 (Be sure read the Implementation Notes). The milestone for project 3 is due at 11:59:59pm on November 8th, 2012. No slip days may be used on the milestone deadline.
Project 4 is due at 11:59:59pm on December 12th, 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 September 9th, 2012. No slip days may be used.
C Bootcamp Project 2 is due at 11:59:59pm on September 10th, 2012. No slip days may be used.
C Bootcamp Project 3 is due at 11:59:59pm on September 14th, 2012. No slip days may be used.
C Bootcamp Project 4 is due at 11:59:59pm on September 19th, 2012. No slip days may be used.