CSCI 420 - Operating Systems and Concurrency

Spring 2017

Course Overview:

In this course, we will study the three main concepts of modern operating systems design: Virtualization, Concurrency, and Persistence. We will also tudy how they are implemented in practice. We will use the Rust programming language as a tool for investigating these concepts.

At the end of this course, you will be expected to be able to:

Dr. Gabriel Ferrer
M.C. Reynolds 312

Office Hours:
By appointment. To make an appointment with me, visit From there, you can see my availability and select an appointment time.

Also, please feel free to stop by whenever my door is open.

Class Web Page:

Lecture Time: A3 (10:10-11:00, MWF)

Final Exam Period: Friday, May 5, 8:30-11:30 am

All texts for this course are freely available online. Each reading assignment is directly linked on the schedule. Grading:
There are a total of 1,000 points available over the course of the semester. The thresholds for earning each letter grade are as follows:
Letter gradePoints to achieve

Here are the semester's assignments and the associated points for each:
Assignment CategoryTotal Value
Programming Assignments (10)300
Redox Presentations (2)100
Midterm Exam150
Final Project200
Final Exam250
Programming Assignments: There will be ten programming assignments. There will typically be one assignment per week until Spring Break, at which point they will all be completed. You may optionally work on each assignment with one other student. Both students should submit a solution, identifying the other student with whom they worked in the comments. Grading criteria will be given for each assignment.

Revisions: After assignments are graded, you are welcome to revise and resubmit your work. I will grade anew each submitted revision, and average the original and revised grades together to produce a new grade for that assignment. Revisions may be submitted anytime until the start of the final exam.

No late work will be accepted. Any work not submitted on time is a zero. However, you may submit a solution after the deadline to qualify under the revision policy above. In effect, this means that late work can earn up to half credit.

Redox Presentations: After Spring Break, groups of two or three students will give 50-minute presentations discussing how the operating systems concepts we have explored in the course are implemented in the Redox operating system. Each student will participate in two presentations, each of which is worth 50 points.

Final Project: Each student will undertake a final project that explores a concept from this course in depth. Final projects may be undertaken by teams. Possible topics include: Exams: There will be a midterm exam in class on Friday, February 24, worth 150 points. There will be a cumulative final exam on Friday, May 5, from 8:30-11:30 am, worth 250 points.

Accommodations: It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Julie Brown in the Office of Academic Success (505-2954; to begin the accommodation process. Any student seeking accommodation in relation to a recognized disability should inform the instructor at the beginning of the course.


DateDayTopic/ActivityReadingAssignment Due
Three Pieces of OS
Command Line
Introduction to Operating SystemsNone
1/20FridayCommand-Line Shell
I/O Redirection
Shell Assignment #1
Command-Line Arguments
Rust ExampleShell Assignment #2
1/25WednesdayDiscussion of Rust
File Systems
Rust Syntax/Semantics (4.1-4.7)
Files and Directories
1/27FridayOwnership, Lifetimes, BorrowingOwnership (4.8-4.11)Rust Programming #1
2/1WednesdayMore RustRust Syntax/Semantics (4.12-4.24)None
Concurrency and Threads
Fearless Concurrency with Rust
Concurrency in Rust
Rust Programming #2
2/6MondayServer-side socketsTcpListenerNone
2/8WednesdayAddress SpacesAddress SpacesNone
2/10FridayCreating ProcessesProcesses in Rust
Process API
Web Server #1
2/13MondayFile DescriptorsStdio
2/15WednesdayMore RustRust Syntax/Semantics (4.25-4.34)Rust Shell Implementation #1
2/17FridayExecuting ProcessesDirect ExecutionNone
2/20MondayFile System ImplementationFile System ImplementationNone
2/22WednesdayReview for MidtermNone Rust Shell Implementation #2
2/24FridayMidterm ExamNoneNone
2/27MondayPerformance AnalysisNoneNone
3/1WednesdayPerformance AnalysisNoneNone
3/3FridayMemory Hierarchy
Address Translation
Hierarchy of Memory and Caches
Address Translation
Rust: The Stack and the Heap
3/8WednesdayTranslation Lookaside BuffersTLBsNone
3/10FridaySwappingSwapping Mechanisms
Swapping Policies
Web Server #2
3/13MondayFree Space ManagementFree Space ManagementNone
3/15WednesdayRaw PointersRaw Pointers (4.35)
Unsafe (4.36)
3/17FridayRedoxRedox Book, Chapters 1 and 2Simulating Virtual Memory
3/20MondaySpring BreakNoneNone
3/22WednesdaySpring BreakNoneNone
3/24FridaySpring BreakNoneNone
3/27MondayRedoxRedox Book, Chapters 4, 5, 6.4None
3/29WednesdayExploring Redox Source CodeNoneNone
3/31FridayFinal Project Overview
Flash Drives
Flash-based SSDsNone
4/3MondayRedox Presentation #1NoneNone
4/5WednesdayRedox Presentation #2NoneNone
4/7FridayFinal Project Topic PresentationsNoneFinal Project Topic Documents
4/10MondayRedox Presentation #3NoneNone
4/12WednesdayRedox Presentation #4NoneNone
4/14FridayProgress ReportsNoneFinal Project Progress Report #1
4/17MondayRedox Presentation #5NoneNone
4/19WednesdayRedox Presentation #6NoneNone
4/21FridayProgress ReportsNoneFinal Project Progress Report #2
4/24MondayRedox Presentation #7NoneNone
4/26WednesdayRedox Presentation #8NoneNone
4/28FridayProject PresentationsNoneFinal Project
5/1MondayProject Presentations
Course Evaluations
5/5FridayFinal Exam PeriodNoneFinal Exam