Courses/Computer Science/CPSC 457.W2013/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.

The test will take place on 28 Feb in class.

= Final Exam =

Open book, 1 page of notes permitted.

This is a two hour exam that will take place TBD.

It will cover the entire semester.

= Grades =

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


 * 3 programming assignments : 50% of your grade (500 points total)
 * 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.

= Assignment Policies =

Each homework assignment should be completed alone.

Each assignment has two graded components: (1) programming task and (2) written answers. Some assignments may not have a written answers 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: Submissions of homework assignments will be done via svn over ssh. The mechanics of this will be covered in a tutorial.

More details: http://pages.cpsc.ucalgary.ca/~locasto/teaching/2013/CPSC457/SUBMIT-HOWTO

= Announcements =

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


 * Please read "How To Ask Smart Questions"
 * Prof. Locasto office hours: M 10:30am to 11:30am in ICT 643, or by appointment.
 * Tutorial sessions begin on the 15th.
 * Please join the Piazza course discussion site Piazza
 * The first lecture is 8 January 2012