Summary

  • Course meets Tuesdays and Thursdays from 3:00-4:15 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.

Required Materials

  • Raspberry Pi Development System You are required to buy and build the development systemfor this class. Parts are available from pishop.us
  • A limited number of pre-built kits will be made available by the autonomous vehicle club. The cost of those kits will be a little bit higher than the total parts cost on pishop.us.
Part Number Description Cost
DigiKey | Pishop Raspberry Pi 4 2/4/8GB RAM $35
DigiKey | Pishop | Amazon USB-C Power Supply $7.95
DigiKey | Pishop | Amazon SD Card $9.95
DigiKey | Pishop Heat Sink Kit $1.95
DigiKey | Pishop | Amazon SD Card Reader $5.95

Office Hours

  • Doyle 309
  • Tuesday: 12:15 - 1:15PM
  • Lab Thursday: 4 - 6 PM
  • Or by appointment
TA Jack West

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
Tue 01/19 Intro; Installing Gentoo GitHub Username Survey
Thu 01/21 More Gentoo fun! Homework 0: Finish your Gentoo install
Tue 01/26 Tools: git, make, gcc, vim Homework 0 Due
Raspberry Pi OS Install
Debugging Programs (video)
Linux Tools (video)
Thu 01/28 Raspberry Pi OS: Intro Pi OS Repo
Homework 1: Clearing the bss segment in your kernel
Further Reading: Grad Reading: | Paper Review Format
Tue 02/02 C Refresher Homework 1 Due
Further Reading:
Thu 02/04 C Refresher Homework 2 Assigned
Further Reading: Grad Reading:
Tue 02/09 Polling I/O Further Reading:
Thu 02/11 Spring Break: No Class
Tue 02/16 Intro to Memory-Mapped I/O Homework 2 Due
Homework 3 Assigned
In-Class Activity: Writing hexdump
Further Reading:
Thu 02/18 Interrupts Homework 3 Due
Homework 4: Bare Metal LED Blinky
Quiz 3 (Sakai)
In-Class Activity: Delays using system timer
Further Reading
Grad Reading:
Tue 02/23 Execution Level and Privileged Operations Homework 4 Due
Homework 5 Assigned: Pi OS Serial Driver | rprintf.c rprintf.h
In-Class Activity: Playing with Excecution Levels | code
Further Reading:
Thu 02/25 Memory & Memory Allocation Homework 5 Due
Homework 6: Setting up Interrupts on AARCH64
In-Class Activity: malloc Fun
Further Reading: Grad Reading
Tue 03/02 Virtual Memory & Paging Homework 6 Due
Homework 7: Write a page frame allocator
In-Class Activity: Paging
Further Reading:
Thu 03/04 Setting up the MMU on the Pi Video:Virtual Address Formats in 64-bit ARM
ARM64 Page Table Tool
mmusetup.S | mmu.c | mmu.h
AARCH64 Paging Activity
Grad Reading:
Tue 03/09 Spring Break: No Class
Thu 03/11 Syscalls Grad Reading:
Tue 03/16 Filesystems Homework 6 Due
Homework 7: FAT FS Driver | gpio.h | sd.h | sd.c | fat.h
Further Reading:
Thu 03/18 The FAT Filesystem Filesystem Slides
ELF File Format
Grad Reading:
Tue 03/23 Processes 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.
    • Do something with the Vuzix M4000 smart glasses
Thu 03/25 Processes II In-Class Activity: Write a Shell! | shittyshell.c
Grad Reading:
Tue 03/30 Scheduling Homework 7 Due
Project Proposals Due | Project Proposal Guidelines
Further Reading:
Thu 04/01 Threads Grad Reading Further Reading:
Tue 04/06 Threads II In Class Activity: pthreadexample.c | Coordinate Rotation Threading Lab
Thu 04/08 Containers Activity: Containers from Scratch
Grad Reading
Tue 04/13 Virtualization
Thu 04/15 Grad Reading
Tue 04/20
Thu 04/22 Mid-Project Scrum Grad Reading
Tue 04/27
Thu 04/29