Skip to content

Latest commit

 

History

History
194 lines (158 loc) · 14.1 KB

index.md

File metadata and controls

194 lines (158 loc) · 14.1 KB
layout
course-single

{{ site.description }}

Upon completing this course, our goal is for you to be able to:

  • Describe how an operating system mediates interaction with:
    • CPU and RAM by virtualizing those resources by means of the process abstraction.
    • Persistent memory (hard disk, Flash memory) through the file system abstraction.
    • The Internet through the TCP socket abstraction.
  • Write useful programs that:
    • Interact directly with the CPU, RAM, keyboard, and monitor on behalf of a user.
    • Operate concurrently without errors.
  • Empirically analyze the performance of operating system components.
  • Address cybersecurity issues that arise in these contexts.

{% include resources.html content=site.resources %}


Part 1: User Space

Date Day Topic/Activity Reading Assigned Due
1/22 Wed Three Easy Pieces
Command Line
Files and Directories
Introduction to Operating Systems Survey
Shell Commands, introduction
1/24 Fri Processes
Pipes
I/O Redirection
Processes Shell Commands, complete Shell Commands, introduction
1/27 Mon Rust
File I/O
Getting Started
Programming a Guessing Game
Common Programming Concepts
std::fs
Rust Programming 1 Shell Commands, complete
1/29 Wed Ownership and Borrowing
Strings
Buffers
Understanding Ownership
Read trait
String in Rust
BufReader
BufRead trait
1/31 Fri Rust Collection Types Common Collections
2/3 Mon The Internet
Downloading a web page
Overview of TCP/IP
TcpStream
Write trait
write! macro
Rust Programming 2 Rust Programming 1
2/5 Wed Using Transport Layer Security Cryptography
2/7 Fri Unix Process API Process API
nix crate
C strings
2/10 Mon Unix System Calls Direct Execution
2/12 Wed Files and Directories Files and Directories Unix Shell Rust Programming 2
2/14 Fri File Descriptors
Pipelines
Pipelines in Rust
2/17 Mon Winter Break: No class
2/19 Wed Snow and Ice: No class
2/21 Fri Data structures in Rust Using Structs to Structure Related Data
Enums and Pattern Matching
2/24 Mon In-Class Essay 1: The Unix Shell
2/26 Wed Threads vs Processes Concurrency and Threads Web Server Unix Shell
2/28 Fri Threads in Rust
Locks
Fearless Concurrency
Locks
Locked Data Structures
3/3 Mon Concurrency Problems Common Concurrency Problems
3/5 Wed Iterators in Rust

Part 2: Kernel Space

Date Day Topic/Activity Reading Assigned Due
3/7 Fri Bare metal programming A Freestanding Rust Binary
A Minimal Rust Kernel
VGA Buffer
Pluggable Interrupt OS
Bare metal game Web server
3/10 Mon Ghost Hunter Ghost Hunter
Ghost Hunter Core
3/12 Wed Interrupts CPU Exceptions
Double Faults
Hardware interrupts
3/14 Fri Bare Metal Demos SWIM Part 1: Interface Bare Metal Game
3/17 Mon User-space vs. Kernel-space programming: Retrospective
3/19 Wed In-Class Essay 2: Processes and Threads
3/21 Fri The Story So Far SWIM Part 1: Interface
3/24 Mon Spring Break: no class
3/26 Wed Spring Break: no class
3/28 Fri Spring Break: no class
3/31 Mon Garbage Collection SWIM Part 2: Garbage Collection
4/2 Wed Memory Management: Heap Heap Allocation
4/4 Fri Allocator Designs Allocator Designs
Free Space Management
4/7 Mon File Systems I/O Devices
Hard Disk Drives
SWIM Part 3: File System SWIM Part 2: Garbage Collection
4/9 Wed File Systems File System Implementation
4/11 Fri Paging Introduction to Paging (OS in Rust)
Introduction to Paging (OSTEP)
4/14 Mon Implementation of Paging Paging Implementation
Translation Lookaside Buffers
4/16 Wed Processor Scheduling CPU Scheduling SWIM Part 4: Processes SWIM Part 3: File System
4/18 Fri Scheduling with Priorities Multi-Level Feedback
4/21 Mon Randomized Scheduling Lottery Scheduling
4/23 Wed Unix history, GNU Project, Linux kernel
4/25 Fri History of MS-DOS and Windows, evolution of GNU/Linux Free Project SWIM Part 4
4/28 Mon In-Class Essay 3: The Kernel
4/30 Wed Free Software vs. Open Source
Return of the Mac
Microkernels
5/2 Fri Three Easy Pieces
5/9 Fri 8:30-11:30am No final exam Free project
All revised work

# Assessment

A total of 10 formal projects will be assigned throughout the semester; approximately one project per week. Each project will have three levels to which it can be completed, with each level building upon the previous level. In general:

  • A Level 1 project contains a basic implementation of the core ideas explored in the project.
  • A Level 2 project is a more complete implementation of those ideas.
  • A Level 3 project goes beyond this to undertake a deeper exploration of the assignment ideas.

Each project will be evaluated via specifications (a set of criteria) for each level. Projects meeting all the criteria for a given level will receive credit for that level; projects that do not meet all the criteria will not receive credit for that level.

Each project submitted by the assigned deadline of at least Level 1 quality receives one additional credit as an on-time bonus.

Once a project is graded, if a student wishes to revise it to achieve a higher level, the student should first meet with the professor to discuss the planned revisions. The student may thereafter resubmit the revised project when ready.

Each student should have a GitHub account. Each student should create one private GitHub repository that contains all of their code for Part 1 of the course and additional GitHub repositories as specified for the Part 2 projects. The student should add Dr. Ferrer as a contributor to each repository. For each project, there will be a Teams assignment in which you will copy and paste the URL for the project's GitHub repository. When each project is due, the instructor will download the repository onto his own machine for grading.

Students are welcome to undertake projects individually or with one other student in the course. If two students work together, they should create a single submission in a single GitHub repository.

Discussion of the projects is encouraged. However, all code and solutions must be written up individually or in a collaborating pair. Copying a submission from another student or team, in whole or in part, will be considered an academic integrity violation.

Students may also complete a free project. This is completely optional, but it is an opportunity to earn project credits pursuing a topic of personal interest. The free project consists of a program written in the Rust programming language on any topic of interest to the student. Any student wishing to pursue a free project should submit a project proposal by Monday, April 21. The instructor will advise the student as to what would constitute Level 1, Level 2, and Level 3 performance on the proposed project.

All free projects are due by the end of the final exam period for the course. There is no on-time bonus for a free project; it must be submitted by the deadline to receive any credit.

A total of three in-class essays will be assigned over the course of the semester. Each essay topic is posted on the course web page. In preparing for the in-class essay, each student may make use of whatever resources they would like - readings, assignments, classmates, anything on the Internet, or any other resource.

The in-class essay itself is closed-book, closed-note, and closed-device. Paper will be provided for writing the essay, which must be submitted at the end of the class period.

The essays will be commented upon by the instructor and returned. Each student should then revise their essay, taking into account the instructor comments. The revised essay should be typed and submitted electronically. The original handwritten essay should also be resubmitted. The revised essay will be due one week after the original essays are returned.

Students are welcome to make use of additional resources when revising their essays; proper citation should be included for each resource. Plagiarism, including submitting an essay rewritten by a generative AI, is strictly prohibited. Each revised essay will then be assessed as Level 1 or Level 2, depending on the quality of the essay. Quality will be assessed according to the following criteria:

  • Writing quality, including proper spelling, usage, and grammar.
  • Demonstrated depth of understanding the essay topic.
  • Appropriate use of examples from course projects.

One additional credit will be awarded for on-time submissions of the revised essays.

Each project and essay earns one credit for each level achieved. Submitting an assignment by the specified deadline earns one additional credit. There are 52 total credits available for the semester: 4 credits for each of 10 formal projects, 3 credits for the free project, and 3 credits for each of the three essays.

Grade Minimum Project Credits Minimum Essay Credits Minimum Total Credits
A Level 2 on 10 projects Level 2 on 3 essays 47
B 30 Level 2 on 2 essays
Level 1 on 1 essay
38
C 20 Level 1 on 3 essays 29
D 12 Level 1 on 2 essays 18
  • Note: All late submissions/revisions must be received before 11:30 am on Friday, May 9, the end of the final exam period for the course.