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 |
March 1st |
Final exam |
May 13th, 12:00 - 12:50 |
Office hours | See my schedule |
Operating systems are the fundamental bridge between computer hardware and the software programs we create and use. 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 assignments 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.
Topical outline:
Assessment Objectives- at the completion of this course, students will be able to:
fork()
and Pthreads)
Catalog Description:Theory and practice of operating systems, with emphasis on one of the UNIX family of operating systems. File organization and database systems. Focus on a multi-user system in the client-server model. Hands-on experience.
Please see the instructor if you're missing a prerequisite or uncertain about your preparation for this course.
Computer science is an eminently 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 approximately quarterly. The midterm exam and other cirumstances may modify this, see the complete course schedule below.
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 receive no credit, studios graded as partial will receive 60% credit.
There will be five 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.
Date | Topic | Readings | Studios | Labs |
---|---|---|---|---|
Jan 14 | Intro to OS | MOS 1.1 - 1.3 | Make sure you can login for next time |
Lab 1 Assigned |
Jan 16 | Types of OSes, OS concepts | MOS 1.4 and 1.5 | Studio 1 | |
Jan 18 | Lab 1 Discussion (ecb_crypt example) |
Studio 2 | ||
Jan 21 | No class: Martin Luther King Day | |||
Jan 23 | System calls and OS architectures | MOS 1.6 - 1.8man syscalls |
Studio 3 | Lab 1 Due |
Jan 25 | Processes | MOS 2.1 | Studio 4 | |
Jan 28 | fork() , exec() , wait() , and kill() |
Studio 5 | Lab 2 Assigned | |
Jan 30 | Lab 2 Discussion | Studio 6 | ||
Feb 1 | Pipes, stdin , stdout pipe_demo.c dup2_demo.c |
MOS 2.2 | Studio 7 | |
Feb 4 | Threads | Studio 8 | ||
Feb 6 | Pthreads, C++11 threads thread_demo.c c11threads.cpp |
MOS 2.3 | Studio 9 | |
Feb 8 | Race conditions | MOS 2.5.1 | Studio 10 Studios 1 through 7 Due |
|
Feb 11 | Locks, Mutexes, Atomic Instructions | Studio 11 | Lab 2 Due | |
Feb 13 | Atomic Instructions | Studio 12 | Lab 3 Assigned crypt_demo.c |
|
Feb 15 | Lab 3 Discussion | |||
Feb 18 | OpenMP, Cilk Plus | MOS 2.4 | Studio 13 | |
Feb 20 | Batch and interactive scheduling | Studio 14 | ||
Feb 22 | ||||
Feb 25 | Lab 3 Due | |||
Feb 27 | Midterm review (example questions) | Studios 8 through 14 Due | ||
Mar 1 | Midterm Exam | |||
Mar 4 | Memory management | MOS 3.1 | Studio 15-a | |
Mar 6 | Address spaces and swapping | MOS 3.2 | Studio 15-b | |
Mar 8 | Virtual memory and paging | Studio 16 | ||
Mar 11 | No class: Spring Break | |||
Mar 13 | ||||
Mar 15 | ||||
Mar 18 | Exam Discussion | |||
Mar 20 | Page tables and the TLB | Studio 17 | ||
Mar 22 | Lab 4 Discussion | Lab 4 Assigned | ||
Mar 25 | Page Replacement Algorithms | Studio 18 | ||
Mar 27 | Linux Memory Maps | |||
Mar 29 | Files and the File System | Studio 19 | ||
Apr 1 | File allocation on disk | Studios 15-a through 19 Due | ||
Apr 3 | Directory structure and Inodes | Studio 20 | ||
Apr 5 | OSI and TCP/IP Models of Networking | Studio 21 | ||
Apr 8 | Physical and Data Link Layers | Studio 22 | Lab 4 Due | |
Apr 10 | Network Layer | Studio 23 | ||
Apr 12 | Transport Layer | Studio 24 | ||
Apr 15 | Session Layer | |||
Apr 17 | Presentation and Application Layers | Studio 25 | ||
Apr 19 | No class: Good Friday | |||
Apr 22 | No class: Easter Monday | |||
Apr 24 | Lab 5 Discussion | Lab 5 Assigned | ||
Apr 26 | ||||
Apr 29 | Security Concerns - CIA | Studios 20 through 25 Due | ||
May 1 | Secure Systems and a Trusted Computing Base | |||
May 3 | Permission Domains and Permission Management | Lab 5 Due | ||
May 6 | Final Exam Review | |||
May 13 | Final Exam - 12:00PM to 12:50PM |
All studios and labs will be submitted via individual course Git repositories that are housed at SLU. You will find your repository already has a directory structure that provides a place for all lab and studio assignments. Your work must be in the appropriate location for the instructor to find it and count it for credit.
A short guide to using SLU's git resources
Reccomended 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. This book is not required for the course, rather it is a secondary source of information that provides a more comprehensive textbook-like presentation of the material. I will not be assigning homework from the book or taking test questions from the book.
Linux skills references:
References for Linux software development.
vi
tutorial
vi
tutorial
emacs
tutorial
emacs
tutorial
Software resources:
scp
manual page: Transfer files between your Mac/Linux machine and the departmental Linux machines.
Linux kernel hacking references:
We aren't doing any kernel hacking in this course, but these are great references if you're interested.
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 | 20% |
Labs | 50% |
Midterm | 15% |
Final | 15% |
Grading is done on a straight scale (uncurved). The following scores are guaranteed. The grading scale may be curved upwards (in your favor) at the discretion of the instructor.
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.
Some specific guidelines for this course: