Courses/Computer Science/CPSC 457.W2012/Policies

= Topics / Syllabus =

The major topic areas are threefold (in accordance with the calendar's course description)
 * performance measurement (inspection of state, history, timing, resources; measurement techniques and tools)
 * concurrency (threads, processes, critical sections, locking)
 * resource management (schemes and algorithms for scheduling and allocating time and space multiplexed resources; sharing)

This link provides a overview of the Concept Map for this class (PDF file).

The course will cover roughly these general topics, time permitting:


 * synchronization primitives; threads and concurrent execution; critical sections; locking; deadlock, livelock
 * Basic operating system designs and structures, OS history
 * IDT; interrupts; system initialization; privilege levels; segment descriptors
 * hardware support for segmentation and paging; page permissions
 * traps and interrupts; call gates
 * System calls
 * process supervision; ptrace; debugging
 * binary file format; ELF
 * Process creation, meta-data, management, and scheduling
 * Thread management from the kernel viewpoint
 * Memory hierarchy, Memory management, virtual memory, DMA; page faults, page replacement
 * Device I/O; disk scheduling algorithms
 * Files and file systems; attributes, VFS; file system case study
 * File locking
 * Network stack, filtering architecture
 * kernel instrumentation; kprobes; SystemTap

= Textbook =

I require one textbook for this course because it provides a concentration of peer-reviewed material and background reading to aid your studying.


 * Modern Operating Systems, Third Edition by Andrew S. Tanenbaum, published by Pearson/Prentice Hall (a textbook-like tome on operating systems concepts)

I realize, however, that textbooks are expensive, so I encourage you to obtain the text in ways that fit your budget.

I also (highly) recommend to aid you in your assignments:


 * Understanding the Linux Kernel, 3rd Edition by Daniel P. Bovet and Marco Cesati, published by O'Reilly. (a technical introduction to Linux and OS concepts as expressed in Linux)
 * Linux Kernel Development, 3rd Edition by Robert Love (another technical book about Linux)

I only recommend books that I keep on my own shelf. You may get these at the school bookstore or any other source (e.g., Amazon) that you feel gives you the best price and delivery.

You may also be interested in this guide to user-level programming:


 * Advanced Programming in the Unix Environment by Richard W. Stevens

but it is in no way required for this course (although it does include useful reference material, including information on pthreads).

= Midterm Exam =

1 page of notes permitted.

You have 1 hour and 15 minutes to complete the in-class test. It will cover a selection of the material from the start of the semester until the lecture before this exam.

= Final Exam =

Open book, 1 page of notes permitted.

This is a two hour exam that will take place on 19 April from noon to 2pm.

It will cover the entire semester. You will be asked to:


 * demonstrate knowledge of segmentation and paging on x86
 * write code
 * analyze code
 * demonstrate knowledge of most scheduling and resource allocation algorithms we covered in class

= Grades =

Your performance in this class will be assessed with the following items:


 * 5 programming assignments : 50% of your grade (500 points total; 100 points each)
 * a midterm exam : 20% of your grade (200 points)
 * a final exam : 30% of your grade (300 points)

Each item will be given a numerical score out of total points. The final percentage grade will be calculated by summing the total points you earn divided by 1000. This percentage will then be converted to a final letter grade for the University grading system. Percentage scores at or above 95% will receive an A+, while those at or above 90% will receive an A, and those at or above 85% will receive an A-. Percentage scores at or above 80% will receive a B+, while those at or above 75% will receive a B, and those at or above 70% will receive a B-. Percentage scores at or above 65% will receive a C+, while those at or above 60% will receive a C, and those at or above 55% will receive a C-. Among passing scores, those below 55% will receive a D. Percentage scores below 50% will receive an F.

For example, if you receive the following marks: for a total of 770 out of 1000, your percentage grade will be 77%, which will earn a letter grade of 'B'
 * Assignment1: 85, Assignment2: 90, Assignment3: 55, Assignment 4: 60, Assignment 5: 75
 * Midterm: 185
 * Final: 220

= Assignment Policies =

Each of the five assignments will be done as a two-person team.

Team assignments as of 20 Jan: Teams (teams updated 3 Feb)

By the way, the UofC runs an LDAP directory service (see: http://www.ucalgary.ca/it/directories/identity/ldap); part of this enables the public email directory at http://contacts.ucalgary.ca/

Each assignment has two graded components: (1) joint programming task and (2) individual answers. Team members will receive the same points on part (1) and individual scores on part (2). For example, if part (1) is graded at 75 points, and team member one earns 10 points on part (2) and team member two earns 5 points on part (2), then team member one earns 85 points on the assignment and team member two earns 80 points on the assignment. Team members are required to work together on part (1). Team members are encouraged to collaborate on part (2), but answers must be original. Each team member will submit a statement of who did what work on part (1) -- see "Submission Process" below for more detail. Some assignments may not have an individual component.

Late work is not accepted, barring an extraordinary personal emergency (these should be rare, and will be dealt with fairly and with common sense). You have until 11:59pm Mountain Time on the due date to submit your answers and code. It is much better to submit partially complete work than to expect or depend on an extension.

Assignments vary in difficulty, but they will be graded on the same scale.

All programs must compile (i.e, `make' succeeds with no warnings) and all kernels must boot. Assignments that don't compile and kernels that don't boot will receive a grade of zero.

You must cite all sources of information (web sites, books, articles). For example, if you found a particular implementation trick from an online article, you should give the URL and date accessed and identify the code snippet or explanation you used in formulating your answer or code. Not doing so will be considered plagiarism and your assignment will receive a grade of zero and be forwarded to the departmental process responsible for dealing with cheating and plagiarism.

Submission Process
Submission Process: The submission guidelines are described here. Submissions of homework assignments will be done via svn over ssh. The mechanics of this were covered in a tutorial, and an example is posted on the UofC wiki here: Example SVN Repository Checkout

SVN Repository Access: You have svn over ssh access to the machine

ec2-50-19-41-44.compute-1.amazonaws.com

Your access is constrained to svn operations only. Your repository is located at

/home/USERNAME/repository

where "USERNAME" is either your team name (e.g., team31) or your individual username (e.g., locasto).

= Announcements =

Course announcements are posted here (e.g., due dates, assignments, grades).


 * 11 March: HW5 is released. It is due Saturday April 14. This is a firm deadline.
 * The final exam will take place Thursday 19 April 2012 from noon to 2pm. (no room assignment yet)
 * 14 Feb: HW4 is released. It is due Saturday 24 March. (updated to 31 March)
 * 3 Feb: HW3 is released. It is due Saturday 3 March. (updated to 6 March)
 * 28 Jan: HW2 is released. It is due Saturday 11 Feb.
 * There will be no tutorial session on 1 March.
 * The midterm exam will now take place on 1 March. There will not be a guest lecture.
 * Team repository keys were released this morning (24 Jan)
 * HW1 was released yesterday. It is due next Saturday (28 Jan)
 * The UofC is running a programming contest. See this (large) PDF flyer for more information.
 * HW1 is postponed by a few days. New date will be announced soon.
 * Please make sure you have a CPSC account so that you can access the lab machines in the Math Sciences Bldg if you need to.
 * Prof. Locasto will be away at ACM SIGCSE from 29 February through 2 March (inclusive). You will have a guest lecture on 1 March. Prof. Locasto will not hold office hours on 28 February or 1 March. He will be available for consultation via Skype by appointment only during this time.
 * Fee Payment Deadline: January 27th, 2012
 * Last Day to Add/Swap a Class: January 23rd, 2012
 * Last Day to Drop a Class: January 20th, 2012
 * Please read "How To Ask Smart Questions"
 * Prof. Locasto office hours: TR 3pm to 4pm in ICT 643, or by appointment.
 * Tutorial sessions begin on 17 January and end on 12 April.
 * Please join the Piazza course discussion site Piazza
 * The first lecture is 10 January 2012