Courses/Computer Science/CPSC 457.F2014/Policies

< Courses‎ | Computer Science‎ | CPSC 457.F2014
Revision as of 16:53, 8 September 2014 by Locasto (talk | contribs) (Grades)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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


I require two textbooks for this course because it provides a concentration of peer-reviewed material and background reading to aid your studying. The second textbook also provides a very readable guide to Linux kernel development.

  • Modern Operating Systems, Third Edition by Andrew S. Tanenbaum, published by Pearson/Prentice Hall (a textbook-like tome on operating systems concepts)
  • Linux Kernel Development, 3rd Edition by Robert Love (you may find this helpful for your HW assignments)

You may optionally wish to buy this book, which is a very thorough treatment of the Linux kernel, but it is a bit out of date.

  • 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)

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

There is a midterm exam on 15 October 2014.

"One sheet of notes is permitted for the exams. No text permitted. No calculator or electronic aid of any kind is permitted."

Final Exam

To be scheduled by the Registrar.

"One sheet of notes is permitted for the exams. No text permitted. No calculator or electronic aid of any kind is permitted."

It will cover the entire semester.


You have 1000 points available to earn this semester.

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

  • Programming assignments (x3) : 60% of your grade (600 points total)
  • Midterm: 10% of your grade (100 points)
  • 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 an upcoming tutorial.

More details:


Course announcements will be posted via Piazza.