CS 444 Syllabus, Fall 2013

Instructor: Betty O’Neil, eoneil@cs.umb.edu
Office: S/3/169, 617-287-6455
Office Hours: MW 3:15-4:45
Class Web page: www.cs.umb.edu/cs444 (to which this syllabus is linked)
Prerequisites: CS341 (C, some x86 assembler, hardware programming, interrupts) and CS310 (serious programming, hash tables, maps, graphs)

Text: Andrew Tanenbaum, Modern Operating Systems, 3rd edition, 2008, ISBN-10: 0-13-600663-9.  You should also have Kernighan and Ritchie, The C Programming Language, ISBN 0-13-110362-8.

Topics: We will follow Tanenbaum’s order, except that we will study part of Chapter 5 early because it has useful hardware coverage.  Also, the case studies of Linux (Chap 10) and Windows (Chap 11) will be covered along with the relevant general discussion in the earlier chapters.  Android Linux will also be covered as time permits.

  1. What an operating system is: interface from user level to kernel via system calls, hardware interface underlying kernel, review of interrupts.  In particular, PC in 32-bit protected mode (lab’s SAPCs), UNIX/Linux system calls, Windows system calls. Tanenbaum Chap 1, 5.1-5.3, 10.1-10.3, 11.1-11.2.
  2. Processes and Threads: process and thread states, system calls for creation, etc. IPC (interprocess communication) and synchronization.  Scheduling. Tanenbaum Chap 2, 10.3.3, 11.4.
  3. Memory Management.  Methods for simple systems, then advancing to modern paging systems, e.g. UNIX/Linux and Windows.  Tanenbaum Chap 3, 10.4, 11.5
  4. File Systems.  Types of files, directory systems, allocation, etc. Tanenbaum, Chap 4, 10.6, 11.8
  5. I/O Systems—UNIX/Linux, Windows device management.  Tanenbaum Chap. 5, 10.5, 11.7
  6. Deadlocks and their detection, avoidance, etc., Tanenbaum Chap. 6
  7. Intro to multiprocessor operating systems.  Tanenbaum Chap. 8

Class email:  Please read your email here at least several times a week to keep posted on class announcements, corrections, problems with collecting your work, etc.  Most students set up a .forward file in their login directory to redirect local email to their main mailbox. Send email to eoneil@cs.umb.edu for help, questions, etc.  We will have a Google group for discussion of projects, etc.

Assignments:
    
Assignments will be done from the ulab UNIX machine and downloaded to the SAPC’s.  There is no in-lab work—that is, all your work can be done remotely.  Over the course of the semester we will be constructing a small operating system. Note security restrictions on access to our systems, described in How to access ulab.cs.umb.edu from offsite and transfer files, linked from the class web page.

     You will need to obtain an account on the ulab machine.  To get one run apply now, and ask for a CS444 account.   Make sure that put ‘load module ulab’ in your .cshrc, before the line with "exit".  This will set up your environment so that you can compile programs that will run on the SAPC’s.  Recall that you can only use mtip from ulab (blade57 at present.).  I assume you know how to use mtip, Tutor and gdb as well as of course C and (simple) make.   As a refresher, here are a few links that may be useful. Start with http://www.cs.umb.edu/ulab.  There you will find pointers to information on mtip, the SAPC’s,  gdb, and more. In particular, note SAPC Programming Environment, Notes on using C to access hardware registers.

      For those of you who are a little rusty on other relevant CS341 material there are a number of useful links from Prof. Bob Wilson’s CS341 page. See coding standards for basic rules for decently written C programs.

     I have a strict policy on plagarism.  You must read the ethics document (also printed below) before starting to work on the first assignment.  Also read the University student conduct document linked at the end of this page. Exams will cover programming and operational details of projects.

      Late days on programming assignments:  Each student has 5 late days for use over the programming assignments.  Any number of days can be used on each assignment, totaling no more than 5 over the term.  Write a note in your README file saying you are using 2 late days, or whatever, so I’ll know when everyone’s done.

Grading: simple point system

Midterm: 100 points, Final: 150 points, Assignments: various, about 150 points total

ACCOMMODATIONS:
Section 504 of the Americans with Disabilities Act of 1990 offers guidelines for curriculum modifications and adaptations for students with documented disabilities. If applicable, students may obtain adaptation recommendations from the Ross Center for Disability Services, M-1-401, (617-287-7430). The student must present these recommendations and discuss them with each professor within a reasonable period, preferably by the end of Drop/Add period.

STUDENT CONDUCT:
Students are required to adhere to the University Policy on Academic Standards and Cheating, to the University Statement on Plagiarism and the Documentation of Written Work, and to the Code of Student Conduct as delineated in the catalog of Undergraduate Programs, pp. 44-45, and 48-52. The Code is available online at: http://www.umb.edu/life_on_campus/policies/code/

Honesty.html:

1. README file for homework assignments. If others (students, faculty, family members, Web search, etc.) assist you, you should include with the assignment a statement giving them appropriate credit, both in README and close to the affected code.  If, on the other hand, you did the assignment with no assistance (with lines of code), you should say so explicitly (for example: "I did this assignment entirely on my own.") This should go in your README file.  In other words, the README should explain the authorship situation.

2. Discussion of homework assignments. Within reasonable limits I do not object, if you discuss assignments with others, verbally or via email.  Email to me or the Google group is encouraged. You should NOT however be looking at other people's code or old class solutions, or showing others your code or other detailed work.

3. You are expected to make reasonable efforts to ensure the security of your work. For instance, do not leave hardcopy lying around the lab. If your work is copied by another, the assumption is that you are cheating.

 4. Do your work under your provided cs444 directory.  It will be set up with appropriate protections--they should not be changed. Other students will not be able to see your homework files, but the grader and instructor can, for grading purposes.