Course Information (Fall 2009)
 
Instructor Details: Dr. Tracy Camp
Office: CH 130
Phone: 303/384-2184
Email: tcamp --AT-- mines --DOT-- edu
Office Hours: 1:30-3pm Wednesdays, or as needed
Course Details: Prerequisites: CSCI 262 and CSCI 341
       The prereqs for this course will be enforced.
Time: 2-3:15pm Tues/Thurs
Location: Green Center 265
Course URLs: CSCI 442 Home
Discussion Board
Project Submission
Textbook Web Site
Required Textbook: Operating Systems: Internals and Design Principles, 6th Edition (2009), by William Stallings, Prentice Hall (ISBN: 0136006329).
Course Description: This course introduces the essential concepts in the design and implementation of operating systems: what they can do, what they contain, and how they are implemented. Despite rapid OS growth and development, the fundamental concepts learned in this course will endure. We will cover the following high-level OS topics, roughly in this order:
  • Unix and System Scripts
  • Processes and Threads
  • Processor Scheduling
  • Process Synchronization
  • Memory Management
  • Virtual Memory
Required Work

This will be an intense yet rewarding course. There will be 4-5 programming projects based on the implementation side of the course and 4-5 homework assignments based on the analytic side. One (or two) of the programming projects might require working in groups of size three or four. All other work is to be completed individually.

Submit programming projects by 11:59pm on the due date. Submit paper copies of homework assignments at the start of class on the due date. Always turn in something rather than nothing. Nothing earns you zero points; something earns you partial points.

Programming projects should be submitted electronically to Blackboard. For Project $N$, you will submit a tar(1) file, e.g., tcamp-projectN.tar, in which the filename is the same as your username and $N$ is the project number. When untarring this file, it should create a directory with the same root name as the tar file, e.g., tcamp-projectN. Inside every tar(1) file will be a file named README with your name, a listing of all the other files in the tar(1) file and what they do, and how to compile and run your code.

In addition to the programming projects and homework assignments, we will have two exams and a final. All exams will be closed book and closed notes. The final exam will cover the entire semester's work. Participation in the course throughout the semester is also required work.

 
Student Evaluation

There are a total of 2000 points possible for this course. Grades will be assigned on the following basis.

Programming Projects Homework Assignments Exam I Exam II Final Exam Course Participation
600 points
30%*
150 points
7.5%
300 points
15%
300 points
15%
500 points
25%
150 points
7.5%+
        * some projects will be worth more than others
        + participation on ore counts

NOTE: You must pass (60% or higher) the programming
projects and final exam to pass this course. If you do not meet these requirements, you will receive an F for the course.

Late work: Each student is allocated five slip days for the programming assignments, which gives students some flexibility in managing their workload. Weekends count two days. (Each group member uses a slip day for each day the assignment is submitted after its due date, if the assignment is completed as a group.) No slip dates are allocated for the homework assignments.

Late assignments (programming or homework) lose 10% per day, except for extenuating circumstances. To do well in this course, you need to keep up with the class discussions and homework assignments.

Attendance: To emphasize the importance of attendance, 7.5% of your grade will be based on attendance and participation in class and online. I expect students to attend all classes. Your attendance is important for several reasons:

  • Coverage of material that is not in the textbook.
  • Participation in active learning, where we all learn from each other.
  • Participation in class discussions, where I learn from you.

NOTE: All students should become familiar with CSM's policy regarding the make-up of work missed due to excused absences (see Bulletin). If a student is ill and exhibits flu-like symptoms, they should not attend class, labs, or exams. Furthermore, the Centers for Disease Control are discouraging those who are ill and without serious complications from visiting a health clinic or physician. To obtain an excused absence from flu-like symptoms, please send me an email when symptoms occur. To automatically inform all instructors of an illness, see: http://inside.mines.edu/Flu.

Tentative Course Schedule

         2 weeks: Unix Scripts and Background (Chapters 0, 1, and 2)
         3 weeks: Describing and Controlling Processes/Threads (Chapters 3 and 4)
         2 weeks: Scheduling Processes/Threads (Chapter 9)
         1 week: Exam I
         2 weeks: Concurrency and Synchronization (Chapter 5)
         3 weeks: Memory (Chapters 7 and 8)
         1 week: Exam II
         1 week: Wrap-up and Review

Maintenance/Legal Clause
  • This syllabus is subject to change; if a change occurs, you will be notified.
  • This syllabus is not a legal document; common sense rules always apply, e.g., no late assignments will be accepted after the solutions are given in class.
Department Academic Integrity Pledge

Read the pledge below; it is based on the Student Honor Code passed by the ASCSM.

I pledge to uphold the high standards of academic ethics and integrity expressed by the Colorado School of Mines Student Honor Code by which I am bound. In particular, "I will not misrepresent the work of others as my own, nor will I give or receive unauthorized assistance in the performance of academic coursework". I understand that my instructor will report any infraction of academic integrity to the Department Head and that any such matter will be investigated and prosecuted fully.

Your Honor Code is posted on page 4 of CSM's Student Honor Code.

Department Policy for Programming Projects

The following policy exists for all CS courses in the MCS department. This policy is a minimum standard; your instructor may decide to augment this policy.
  1. If the project is an individual effort project, you are not allowed to give code you have developed to another student or use code provided by another student. If the project is a group project, you are only allowed to share code with your group members.
  2. You are encouraged to discuss programming projects with other students in the class, as long as the following rules are followed:
    1. You view another student's code only for the purpose of offering/receiving debugging assistance. Students can only give advice on what problems to look for; they cannot debug your code for you. All changes to your code must be made by you.
    2. Your discussion is subject to the empty hands policy, which means you leave the discussion without any record [electronic, mechanical or otherwise] of the discussion.
  3. Any material from any outside source such as books, projects, and in particular, from the Web, should be properly referenced and should only be used if specifically allowed for the assignment.
  4. If you are aware of students violating this policy, you are encouraged to inform the professor of the course. Violating this policy will be treated as an academic misconduct for all students involved. See the Student Handbook for details on academic dishonesty.


                   All projects for CSCI 442 are to be individual
                       efforts unless explicitly stated otherwise.