ECS 150: Operating Systems (Fall ‘24)
Sam King
A little bit about me
Graduated from UCLA, Stanford, Michigan
Been a professor since ‘06, like teaching
Usually teach Systems, Security, and iOS!
Professor at UIUC from ‘06 - ‘14
Started a company in ‘12, moved to California in ‘13
Started a company in ‘12, moved to California in ‘13
Davis High, class of ‘93
Company acquired by Twitter in ‘14, left UIUC
Head of Fraud and Identity @ Lyft ‘16 - ‘17
Back in academia in ‘18 (Go Aggies!)
CS @ UCDavis!
Research interests, define the notion of a digital identity for the 21st century:
Started a company based on my research
An SDK to let your users scan credit cards in your app while cleanly stopping stolen cards.
Run on over 1 billion (!) devices
Bouncer acquired by Stripe in 2021, I went on leave for 2.5 years
Head of Fraud and ML from 2021 - 2023
Oversee the integration of Bouncer’s tech into Stripe
Responsible for the fraud ML that runs on every single Stripe transaction
Back from leave in 2023 (Go Aggies, again!)
Still work on digital identities for the 21st century
Research on biohacking and type 1 diabetes
Built an iOS app that acts as an artificial pancreas!
Unique industry experience for an academic
What is an operating system?
An operating system is...
Manages the underlying physical hardware
Provides abstractions to software running above
In this class we’ll talk a lot about the illusion that operating systems provide and the physical reality (hardware, etc) that they must manage to provide this illusion
Operating systems as an illusionist
Why study operating systems?
It’s required :)
Might write an operating system
Understand how things work behind the scenes
Debug programs that you write that run on top of operating systems
Operating systems are critical for modern software development
Problem: writing apps is a lot harder than traditional software
ECS 150 Goals
Work with system level abstractions directly
Understand how things work behind the scenes
Some experience with OS implementation details
(Small) taste of what it’s like to write modern software
What about LLMs?
LLMs are amazing technology that will help experts build software faster
You are likely not experts!
You can think of them as providing a higher level of abstraction for working with software
This class will give you some of the fundamentals to start to become an expert
Not true!
Approach to the class
Lectures on M/W/F @ 11am (Sam)
Discussion section on Friday @ 10am (TAs)
Graded materials
Four projects, mostly small projects meant to get you some hands on experience with the concepts that we’re talking about in class
A midterm and a final
Topics for this quarter
Projects will increase in difficulty and time
Build some command line utilities
Build a shell
Modify a web server
Build a distributed file server
Exams
Midterm: Processes, system programming, threads, and concurrency
Final: All of the material from the midterm + Networking, APIs, file systems, and thread implementation
In general, in our exams we will have a heavy emphasis on programming, understanding code, and finding bugs in code.
We’ll use gradescope + open source textbook
Gradescope for autograding projects
We’ll provide GitHub Codespaces for you to work on your projects
Operating Systems: Three Easy Pieces
Grade breakdown
Curved grading
Expectation is that the average is in the C+/B- range
Will adjust as more grades come in
Will be transparent
General information
Meet Anirudh, Hari, and Sai
Q/A
Q: Are you going to open up enrollment?
A: No. We’re limited by the size of the classroom so I can’t increase enrollment
Q: Can I get a PTA?
A: No. Please work with the CS advising office if you feel that you have a reason to need a PTA.
More information