|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|
||Oct. 7, regular class time
||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|
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:
Please see the instructor if you're missing a prerequisite or uncertain about your preparation for this course.
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.
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:
|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
|4||Aug 29||System calls and OS architectures||MOS 1.6 - 1.8
|5||Aug 31||Processes||MOS 2.1||Studio 4
Lab 1 Due
Lab 2 Assigned
|7||Sep 5||No Class - Labor Day|
|8||Sep 7||Lab 2 Discussion||Studio 6|
||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||
|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
|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|
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.
scpmanual 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:
Grading is done on a straight scale (uncurved) with a 90%, 80%, 70%, and 60% guaranteeing an A-, B-, C-, and D- respectively.
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:
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.