SLU logo

CSCI 3500: Operating Systems - Class Page

Fall 2016

Instructor David Ferry, Homepage
Course Web Site http://cs.slu.edu/~dferry/courses/csci3500/
Course meeting times Monday, Wednesday, & Friday from 1:10 - 2:00, Ritter Hall Rm. 115
Midterm exam
Oct. 7, regular class time
Final exam
Dec. 9th, 12:00 to 1:50
Office hours Monday & Wednesday from 2:00 to 3:00, Friday from 10:00 to 11:00, also by appointment

Contents
  1. Course Description
  2. Prerequisites
  3. Studios
  4. Labs
  5. Course Schedule
  6. Textbooks and Other Resources
  7. Grading
  8. Academic Honesty
  9. Academic Support

Course Description

Operating systems are the fundamental bridge between computer hardware and the software programs we use and create. As a concept, operating systems are one of the oldest software disciplines, yet they continue to adapt and reinvent themselves as the computing landscape evolves. Modern operating systems must tackle the same challenges of the original mainframes, but must also meet the varied needs of personal computers, severs, mobile/embedded devices, and virtualized systems.

The four elements of this course are lectures, studios, labs, and exams. Studios are short assigments intended to be completed primarily within class time and to augment lecture topics. Labs are longer assignments that will ask students to apply and analyze OS mechanisms. Most class periods will consist of a short lecture followed by studio time. Expect a lab assignment approximately every two weeks.

The purpose of this course is for each student to:

Topics:


Prerequisites

Please see the instructor if you're missing a prerequisite or uncertain about your preparation for this course.


Studios

Computer science is an emminently practical discipline, and studios are daily assignments intended to complement and reinforce lectures through practice. Studios will be completed in a team of two students. Students from different teams may discuss studios, but sharing of code or solutions is strictly prohibited.

Studios are due in two batches. All studios assigned before the midterm will be due the Friday before the midterm. Similarly, all studios assigned after the midterm but before the final will be due the Friday before the final exam. Studios will be graded on a trimodal scale: complete, partial credit, or no credit. Studios that are turned in late or not turned in at all will recieve no credit, studios graded as partial will recieve 80% credit.


Labs

There will be approximately seven lab assignments for this course. These are programming assignments whose purpose is to apply course concepts and to analyze operating system mechanisms. As such, each lab will require a written report detailing your findings in addition to a code submission.

Some labs will require a team of two students, while others are individual projects. Students from different teams may discuss the lab assignments only during course meeting times. Students from the same team are of course encouraged to discuss and work on lab assignments at any time.

Labs submitted on time (as determined by electronic time stamp) are eligible for full credit. Labs submitted up to 24 hours late will be given a ten percent penalty. Labs submitted between 24 and 48 hours late will be given a twenty percent penalty. Labs submitted after 48 hours late will not be given credit, except in the case of extenuating circumstances pre-approved by the instructor.

The following labs have been assigned:


Course Schedule

A tentative course schedule is below. Note that this schedule may change over the course of the semester. When changes occur, students will be given enough advance notice so that readings and other preparation may be accommodated.
Date Topic Readings Assignments
1 Aug 22 Intro to OS MOS 1.1 - 1.3 Lab 1 Assigned
2 Aug 24 Types of OSes, OS concepts MOS 1.4 and 1.5 Studio 1
3 Aug 26 Lab 1 Discussion
(ecb_crypt example)
Studio 2
4 Aug 29 System calls and OS architectures MOS 1.6 - 1.8
man syscalls
Lab 1 Due
Studio 3
5 Aug 31 Processes MOS 2.1 Studio 4
Lab 1 Due
6 Sep 2 fork(), exec(), wait(), and kill() Studio 5
Lab 2 Assigned
7 Sep 5 No Class - Labor Day
8 Sep 7 Lab 2 Discussion Studio 6
9 Sep 9 Pipes, stdin, stdout MOS 2.2 Studio 7
10 Sep 12 Threads Studio 8
11 Sep 14 Pthreads, C++11 threads MOS 2.3 Studio 9
12 Sep 16 Race conditions, critical sections, locks, and atomicity MOS 2.5.1 Lab 2 Due
Studio 10
13 Sep 19 Mutexes, semaphores Studio 11
14 Sep 21 Lab 3 Discussion Lab 2 Due
Lab 3 Assigned
15 Sep 23 Atomic Instructions Studio 12
16 Sep 26 OpenMP, Cilk Plus MOS 2.4
17 Sep 28 Batch and interactive scheduling
18 Sep 30 Real-time scheduling All assigned studios due
19 Oct 3 Cooperative and Preemptive Scheduling Lab 3 Due
20 Oct 5 Midterm review
21 Oct 7 Midterm Exam
22 Oct 10 Memory management MOS 3.1 Studio 13
23 Oct 12 Address spaces and swapping MOS 3.2 Studio 14
24 Oct 14 Virtual memory and paging Studio 15
25 Oct 17 No class - Fall Break
26 Oct 19 Exam Discussion Midterm Reinforcement
27 Oct 21 Page tables and the TLB Studio 16
28 Oct 24 Lab 4 Discussion Lab 4
29 Oct 26 Page Replacement Algorithms Studio 17
30 Oct 28 Linux Memory Maps Studio 18
31 Oct 31 Files and the File System Studio 19
32 Nov 2 File allocation on disk Studio 20
33 Nov 4 Directory structure and Inodes
34 Nov 7 OSI and TCP/IP Models of Networking Lab 4 Due
Studio 21
35 Nov 9 Physical and Data Link Layers Studio 22
36 Nov 11 Network Layer Studio 23
37 Nov 14 Transport Layer Studio 24
38 Nov 16 Session Layer
39 Nov 18 Presentation and Application Layers Studio 25
40 Nov 21 Lab 5 Discussion Lab 5 Assigned
41 Nov 23 No class - Thanksgiving Break
42 Nov 25 No class - Thanksgiving Break
43 Nov 28 Security Concerns - CIA
44 Nov 30 Secure Systems and a Trusted Computing Base
45 Dec 2 Permission Domains and Permission Management All assigned studios due
46 Dec 5 Final Exam Review Lab 5 Due
47 Dec 9 Final Exam - 12:00 to 1:50

Textbook and Class Resources

Required Course textbook: Modern Operating Systems, 4th Ed. by Tanenbaum and Bos. A classic computing textbook on the fundamentals of operating systems, with a bent towards Unix-like operating systems.

Linux skills references:

References for Linux software development.

Software resources:

Linux kernel hacking references:

We aren't doing any kernel hacking in this course, but these are great references if you're interested.


Grading

There are three activities for which you will receive credit in this course: studios, labs, and exams. Studios are daily guided assignments primarily designed to familiarize students with course concepts and development tools (i.e. knowledge and comprehension tasks). Lab assignments will ask students to apply general course concepts and analyze OS design alternatives. A midterm and final exam will evaluate your technical understanding of course concepts.

Studios are graded on the following scale: complete, partial credit, or no credit. Studios will not be turned back with detailed comments. Labs and exams will be graded on a points scale and will be turned back with detailed comments.

Make up exams will only be given for severe and documented reasons.

Your grade will be determined as follows:

Activity Grade Percentage
Studios 30%
Labs 30%
Midterm 20%
Final 20%

Grading is done on a straight scale (uncurved) with a 90%, 80%, 70%, and 60% guaranteeing an A-, B-, C-, and D- respectively.


Academic Honesty

Most work assigned in this course, other than exams and some labs, is expected to be completed collaboratively. Student teams may change from assignment to assignment, but the sharing of written work or significant portions of code between teams is strictly prohibited.

Students are expected to adhere to the academic integrity and honesty policies as defined by both the University's academic integrity policy and the College of Arts & Sciences academic honesty policy. The course staff will make final determinations on what constitutes cheating. If in doubt, please ask first.

Some specific guidelines for this course:


Academic Support

In recognition that people learn in a variety of ways and that learning is influenced by multiple factors (e.g., prior experience, study skills, learning disability), resources to support student success are available on campus. Students who think they might benefit from these resources can find out more about:

Students with disabilities or suspected disabilities are strongly encouraged to both bring any additional considerations to the attention of the instructor and make full use of the university's Disability Resource Center.