Summary

  • Course meets Mondays and Wednesdays from 4:15-5:30 PM in Cuneo Hall 210
  • 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

Neil Klingensmith
  • Doyle 309
  • Tuesday: Noon - 2PM
  • Or by appointment
TA Haosen Han
  • Doyle Lower Level
  • Thursday: 6:30 — 9 PM

Lab Kits

Option 1: Raspberry Pi

Option 2: Laptop

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.
  • Each person will get five slop days to turn in assignments late. You can use up to two days per assignment.
  • 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

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
Mon 08/26 Intro GitHub Username Survey
Wed 08/28 C Refresher Video: Install Ubuntu on Asus Vivo Laptop
Debugging Programs (video)
Linux Tools (video)
Mon 09/02 Labor Day: No Class
Wed 09/04 Raspberry Pi OS: Intro Video: Raspberry Pi OS Quickstart
Pi OS Repo
Video: Homework 1 Getting Started
Homework 1: Clearing the bss segment in your kernel
Further Reading:
Mon 09/09 C Refresher Homework 2 Assigned
luc.nmconnection
Boot Process Slides
Class Video
  • Goes in /etc/NetworkManager/system-connections/ directory.
  • Needs permissions 0600
  • Edit with your LUC username/password.
Further Reading:
Wed 09/11 Polling I/O In-Class Activity: Delays using system timer
IO Slides
Homework 3 Assigned
Further Reading:
Mon 09/16 Interrupts Interrupt Vector Table in AARCH64
Further Reading
Wed 09/18 Execution Level and Privileged Operations Homework 1 Due
Homework 2 Due
Homework 4 Assigned: Pi OS Serial Driver | rprintf.c rprintf.h
In-Class Activity: Playing with Excecution Levels | code
Further Reading:
Mon 09/23 Memory & Memory Allocation Homework 3 Due
In-Class Activity: malloc Fun | GitHub Repo
Further Reading:
Wed 09/25 Virtual Memory & Paging Homework 4 Due
Homework 5: Write a page frame allocator
In-Class Activity: Paging | GitHub Repo
Further Reading:
Mon 09/30 Virtual Memory & Paging Quiz 1 Practice
Wed 10/02 Setting up the MMU on the Pi Homework 7: Set up MMU in PiOS
Video:Virtual Address Formats in 64-bit ARM
ARM64 Page Table Tool
mmusetup.S | mmu.c | mmu.h
Mon 10/07 Fall Break: No Class
Wed 10/09 Syscalls Quiz: Virtual Memory
Homework 5 Due
Homework 8: FAT FS Driver | gpio.h | sd.h | sd.c | fat.h
Further Reading:
Mon 10/14 Filesystems Filesystem Slides
ELF File Format
Wed 10/16 The FAT Filesystem Homework 7 Due
FAT Cheatsheet
Project Ideas
  • Get linux 4 sam or Accelerated Linux running on a microcontroller
  • Linux Kernel Hacking
    • Mod a Linux driver like ftdi_sio to log all data it receives
    • Build Linux for RISCV and add a custom MMU driver
  • PiOS Extensions:
    • Get video working on your Pi
    • Implement writes for your FAT FS driver
    • Write a shell for PiOS and get it to load processes.
Mon 10/21 More FAT Filesystem Filesystem Slides
fs.c
Canonical Kernel Dev Screening Questions | Code Snippit
Wed 10/23 Processes In-Class Activity: Write a Shell! | shittyshell.c | GitHub Repo
Mon 10/28 Processes II Further Reading:
Wed 10/30 Scheduling Homework 8 Due
Mon 11/04 Virtualization Project Proposals Due | Project Proposal Guidelines
Wed 11/06 Containers Activity: Containers from Scratch
Mon 11/11 Guest Lecture: Shea Lutton, VP of Cloud @ Cloudera
Wed 11/13 Containers
Mon 11/18 Threads In Class Activity: pthreadexample.c | Coordinate Rotation Threading Lab
Further Reading:
Wed 11/20 Mid-Project Scrum
Mon 11/25 Project Work Session/Office Hours
Wed 11/27 Thanksgiving Break: No Class
Mon 12/02
Wed 12/04
Mon 12/09 Final Presentations