Summary

  • Course meets Tuesday & Thursday from 10-11:15 AM in Dumbach 125
  • This is an upper level course that teaches the basics of computer operating systems.
  • The schedule on this page lists the topics we will cover by date.

Office Hours

  • Doyle 309
  • Lab Thursday noon — 2 PM
    Doyle Makerspace
  • Or by appointment

Grade Review Policy

After a graded item is returned in class or in Sakai, any requests for reviewing the grade must be submitted in writing with the graded item within 1 week.

Course Outcomes

  • Explain fundamental Types of OS abstractions: processes, files,
  • Design and implement OS components: libraries, system calls, virtual memory, schedulers, filesystems, and device drivers
  • Assess system performance
  • Explain the impact of algorithms and data structures
  • Make use of concurrency in userland programs

Grading

  • Treat this course like a job where you are trying to get promoted. If you show up and do your work, you will get a good grade.
  • Lowest homework and quiz assignments will be dropped.
  • No partial credit for code that does not compile.
    • Homework: 40 %
    • Quizzes: 20 %
    • Final Project: 40 %
    Percentage Letter Grade
    91+ A
    89-90 A-
    87-88 B+
    77-86 B
    75-76 B-
    73-74 C+
    62-72 C
    60-61 C-
    50-59 D
    Below 50 F

Why?

I have one main opinion about programming, which is that deeply understanding the underlying systems you use (the browser, the kernel, the operating system, the network layers, your database, HTTP, whatever you’re running on top of) is essential if you want to do technically innovative work and be able to solve hard problems.

-Julia Evans

Scheduling Conflicts

  • If you have a (legitimate) scheduling conflict with a quiz or exam, it is possible to schedule a makeup session. You must let me know at least two weeks prior to the quiz/exam date. Legitimate scheduling conflicts include religious observances.
  • LUC's academic calendar can be found here.

Mandatory Reporter Statment

  • Each faculty and staff member at Loyola University Chicago is required to report any incidents of gender-based misconduct that they are made aware of, even if it happened in the past. Gender-based misconduct includes discrimination based on actual or perceived sex, sexual orientation, gender expression or identity, or pregnancy or parenting status; dating and domestic violence; sexual misconduct (including sexual assault, sexual harassment, and sexual exploitation); and stalking.

Collaboration

  • No collaboration is permitted on exams or quizzes.
  • Collaboration, but not copying, is encouraged on homework assignments. If you obtain a solution through research, e.g., in the library or online, cite your source completely and write up the solution in your own words.

Course Schedule

Tenative

Date Topic Details Homework
Tue 01/13 Intro; Installing Gentoo on VMware; Bootloaders GitHub Username Survey
Intro Slides
So You Want to be a Wizard
Video: shells
Video: ssh
Homework 0: Finish your Gentoo install | Gentoo Handbook | Apple Silicon Instructions | VMware Download Instructions
Thu 01/15 Intro; Installing Gentoo on VMware; Bootloaders OS Repository
Video: Gentoo Installation, Part 1
Debugging Programs (video)
Linux Tools (video)
Further Reading:
Tue 01/20 Bootloaders & Binary File Format Video: Computerphile Subroutines
Homework 0 Due
Homework 1 Assigned: Terminal Driver
Thu 01/22 ASM Intro, BIOS, Bootloaders Video: Lecture Recording
Further Reading
Tue 01/27 C Refresher Video: Pointer Review
Fixed Project Makefile
Further Reading:
Homework 1 Due
Homework 2: Input/Output | Keyboard Map | interrupt.c | interrupt.h | OSDEV
Thu 01/29 Polling I/O Quiz: PC Terminal
Video: Class Recording
Further Reading
Tue 02/03 Interrupts Further Reading:
kernel.ld
Homework 2 Due
Thu 02/05 Supervisor Mode and Privileged Operations In-Class Activity: malloc Fun | GitHub Repo
Further Reading:
Tue 02/10 Memory & Memory Allocation Further Reading:
Thu 02/12 Memory & Memory Allocation In-Class Activity: Paging | GitHub Repo
Further Reading:
Tue 02/17 Virtual Memory & Paging Quiz 3 Practice
Video: MMU
Thu 02/19 Virtual Memory & Paging In Class Activity: Linked Lists
Homework 3 Assigned
Homework 4 Assigned
Tue 02/24 Setting up the MMU on the 386 Further Reading:
Thu 02/26 Syscalls Filesystem Slides
ELF File Format
Tue 03/03 Spring Break - No Class
Thu 03/05 Spring Break - No Class
Tue 03/10 Filesystems Homework 3 Due
MMU Quiz
Thu 03/12 Filesystems Further Reading:
Tue 03/17 The FAT Filesystem Further Reading:
Activity: Filesystems 1
Thu 03/19 More FAT Filesystem Homework 5: FAT FS Driver | ide.s | ide.h | fat.h | fstest.c
Homework 4 Due
Activity: Filesystems Part 2
Tue 03/24 More More FAT Filesystem
Thu 03/26 More More More FAT Filesystem Video: Getting Started on the FAT FS Homework
Video: Accessing the RDE table
Tue 03/31 Processes
Thu 04/02 Processes II Homework 5 Due
Quiz: Filesystems
Project Proposals Due 11/14 | Proposal Guidelines
In-Class Activity: Write a Shell! | shittyshell.c | GitHub Repo
Tue 04/07 Scheduling Activity: Containers from Scratch
Thu 04/09 Virtualization elf.h
Tue 04/14 Threads II In Class Activity: pthreadexample.c
Thu 04/16 Containers Activity: Raw Syscalls | GitHub Repo
Tue 04/21 Virtualization
Thu 04/23