Welcome to CSE 421/521

  • Meet the CSE 421/521 staff!

  • Introduction to course content

  • Overview of course policies

Why I’m Here

I took the red pill

Why I’m Here

  • I took CS161 @ Harvard—​now also known as CSE 421/521 at the University at Buffalo—​from Margo Seltzer in 2001

  • At that point I was a physics major, but I wouldn’t be for long…

  • …​because I discovered that I loved building computer systems and teaching people about them.

  • I would up in graduate school (where I TA’d this course many times).

  • And graduate school landed me right back here to begin the cycle again.

So be careful: this class can be transformative!

Took this class

Became a professor

Why Are You Here?

Introducing the 2015 Course Staff


Your new best friends

Introducing the 2015 Course Staff

We probably have the best course staff ever this year: a mixture of new TAs, veteran volunteers, and a large group of "ninjas"—students returning from last year to help out.

Official Teaching Assistants
  1. Jerry Ajay

  2. Ali Ben Ali

  3. Xu Zhen

Ali and Jerry will teach recitations, and all three TAs will mark all graded work.

Unofficial Teaching Assistants
  1. Yihong Chen

  2. Scott Haseley

  3. Carl Nuessle

  4. Guru Prasad

  5. Jinghao Shi

These blue group graduate students will help with office hours and work on tool development. All are former 421/521 students!

  1. Dan Conway

  2. Gela Malek Pour

  3. Isaac Reath

  4. Benjamin Rueda

  5. Mark Simpson

  6. Yousuf Zubairi

Our ninjas are all (excellent) returning 2015 undergraduates. You’ll see them in office hours and they are also helping develop course infrastructure.

Operating Systems Briefly Defined

Operating System:
  1. A computer program that

  2. multiplexes hardware resources and

  3. implements useful abstractions.

The OS is just another computer program! (If a large, complex, mature and mission critical one.)

Multiplexing allows multiple people or programs to use the same set of hardware resources—​processors, memory, disks, network connection—​safely and efficiently.

Abstractions--processes, threads, address spaces, files, and sockets—​simplify the usage of hardware resources by organizing information or implementing new capabilities.

Motivating This Class

  • How many of you have participated in OS development?

  • How many of you regularly program in languages that use operating system abstractions directly?

  • So why study operating systems? Why is this class even offered? Why is it required?

Remind me

What’s this for again?

Why Study Operating Systems?

  • Reality: this is how computers really work, and as a computer scientist or engineer you should know how computers really work.

  • Ubiquity: operating systems are everywhere and you are likely to eventually encounter them or their limitations.

  • Beauty: operating systems are examples of mature solutions to difficult design and engineering problems. Studying them will improve your ability to design and implement abstractions.

Why Program Operating Systems?

  • Design: programming operating systems stresses the importance of careful design and specification before coding begins. You will learn the value of design, probably the hard way.

  • Difficulty: operating systems are large existing code bases where new solutions have stringent performance requirements. Programming operating systems will make you a better programmer and improve all of your subsequent work.

  • Debugging: debugging operating systems is challenging due to their multi- threaded nature and the lack of typical debugging support provided to applications. Again, debugging operating systems will sharpen your debugging skills.

Course Structure

  • Conceptual learning…​

    • Lectures

    • Recitations

    • Exams

  • …​by doing (programming).

Learning Objectives: Conceptual

When you finish CSE 421/521 you will:
  1. understand the abstractions supported by modern operating systems

  2. be able to describe how operating systems policies and mechanisms safely and efficiently multiplex hardware resources

  3. be able to analyze historical, current, and emerging operating system designs and features

The main way we will know that you are learning is by your participation in class and recitations.

You will be tested for mastery on exams.

Conceptual Progression

  • Introduction to operating system abstractions and structure.

  • Abstracting and multiplexing:

    • the CPU—​interrupts, context, threads, processes, processor scheduling, thread synchronization.

    • memory—​memory layout, address translation, paging and segmentation, address spaces, translation caching, page fault handling, page eviction,

    • swapping.

    • storage—​spinning disks and Flash, spinning disk scheduling, on-disk layout, files, buffer cache, crash and recovery.

  • Virtualization.

  • Networking (time permitting)

Learning the Concepts

  • Attend class.

  • Come to class on time:

    • Music starts as soon as I can get into the room…​

    • Lectures will start at 2:05PM sharp and finish by 2:50PM.

  • Ask questions during class.

    • I’m very flexible about how much we cover this semester.

    • I would rather teach less and have everyone understand it.

    • Our back-and-forth during class is the one of the few indicators I have of how much you are absorbing…​


Figure 1. Modern Operating Systems by Andrew Tanenbaum
Figure 2. The C Programming Language by Kernighan and Ritchie

Material presented in lecture takes priority over anything you find in a book or online.

Learning Objectives: Programming

When you finish CSE 421/521 you will:
  1. be able to design and implement well-structured systems software

  2. utilize appropriate synchronization primitives

  3. identify and correct bugs in complex multi-threaded systems

  4. be able to formulate and test performance hypotheses

We will know that you are learning by your participation in class, recitations, and office hours, and your use of online testing resources.

You will be tested for mastery by each programming assignment.

Programming Progression

All due dates Friday @ 5PM EST.

  • ASST0: Introduction to OS/161—​Due Friday 2/12 @ 5PM.

    • Become comfortable using standard UNIX development tools.

    • Learn to navigate the OS/161 source tree.

    • Configuring, building and running your first kernel.

  • ASST1: Synchronization Primitives—​Due Friday 2/12 @ 5PM.

    • Design and implement locks and condition variables.

    • Use them to solve several toy synchronization problems.

Did You Think It Would Be That Easy?

Thought I was done

Then noticed ASST3

Programming Progression

All due dates Friday @ 5PM EST.

  • ASST2: System Calls and Process Support—​due Friday March 11th @ 5PM.

    • The file system system calls: open(), close(), read(), write(), lseek(), dup2(), chdir(), and getcwd(). does this work

    • The process-related system calls: fork(), execv(), waitpid(), \_exit().

    • Several process scheduling algorithms.

  • ASST3: Virtual Memory—​due Friday May 13th @ 5PM.

    • TLB fault handling

    • Paging to disk

    • Several TLB entry and page replacement algorithms

    • sbrk()


  • OS/161 is an instructional operating system developed by David Holland at Harvard University.

  • It attempts to strike a balance between Linux and other extremely-mature systems—​too difficult to hack on—​and existing instructional operating systems frameworks—​not realistic enough.

  • Your OS/161 kernel runs in an emulator, sys161, which emulates an MIPS r2000/ r3000 instruction set architecture (ISA).

  • Using sys161 allows us to simplify debugging and hardware support.

10,000 Hours

  • While many operating systems concepts are elegantly simple, implementing them is not.

  • Therefor, this class is not easy:

    • 3.52 (-0.57) and 4.03 (-0.06) on "Appropriate Workload" score in 2013 course evaluations for 421 and 521 respectively (90%+ response rate).

  • However, this class is also worthwhile:

    • 4.14 (+0.31) and 4.59 (+0.76) overall rating (2013).


Learning is hard

2013 Student Feedback

  • "This has been without a doubt the best class I have taken at UB."

  • "Prof. Challen holds the most engaging, thoughtful, and useful lectures I have experienced at UB."

  • "My favorite computer science course ever!"

  • "I would really recommend this class to anyone who values a true challenge and professionalism."

  • "This is the best class and best instructor i ever had."

  • "Very good teacher. Engages the entire class. Love it."

  • "This was easily the best course I have taken at UB."

  • "Learned the most from this course out of all my courses, regardless of the fact that the course is pretty hard."

  • "…​I think I learned more in this from the projects in any other course ever."

  • "One of the most beneficial courses I have taken at UB."

  • "Definitely the best CS course at UB in my opinion."

  • "AWESOME course!!"

  • "The best course I have taken in UB so far!"

  • "Probably the best course offered in Computer Science Dept."

  • "This was the best courses I took at UB, in fact the best course i have taken so far ever."

  • "The best course I have attended so far"

  • "One of the best classes I’ve ever come across"

Questions about Content?

ops-class.org Website

  • It’s not ready…​ but should be soon.

  • We’re in the process of making a lot of improvements this year, so please bear with us…​

  • If it interferes with the deadlines we’ll adjust them. ASST0 should be posted by the end of the week and you will be provided access to the resources you need to complete it.


  • Conceptual--(50%)

    • 5%--Preterm Exam (Wednesday)

    • 15%--Midterm Exam

    • 30%--Final Exam

  • Programming--(50%)

    • 5%--ASST0

    • 10%--ASST1

    • 15%--ASST2

    • 20%--ASST3

The preterm exam is free points: 5% for showing up and doing your best. If you do not take the preterm your midterm and final exam scores will be scaled appropriately.

Continuous Choose-Your-Own Grade Programming Evaluations

  • Almost all assignment grading in CSE421/521 is automated.

  • Therefore…​ you can have your code graded repeatedly whenever you like.

  • Therefore…​ you can stop each assignment whenever you are satisfied with your grade.

  • We are still deciding how to handle the hand-graded parts of the assignments…​ stay tuned.

Continuous Choose-Your-Own Grade Details and Caveats

  • Assignments are done in pairs, so find a partner who is interested in achieving the same grade as you are.

  • Note that we do not allow students to work alone except in extremely unusual circumstances.

    • "I want to work alone" does not represent one of these situations!

  • Assignments are cumulative and we will not distribute solution sets without a significant penalty.


  • We will sign you all up for a mass email list.

  • We also have a Discourse forum linked off the website which is the best way to get help quickly.

Using Email

  • If you need to email the course staff (staff@ops-class.org), please consider the following:

    • Is this information likely to be available on the website? If yes, go find it!

    • Is the answer to this question likely to benefit other students? If yes, use Discourse.

  • Before you email me directly, please also consider the following:

    • Is this something that the course staff could answer? If yes, email them.

  • Here’s the bottom line: the more time we spend answering repetitive email, the less time we have available to help you with real problems.

Getting Help: Recitations

  • Ali and Jerry will be holding recitations. Unfortunately recitations this year are for undergraduates only and one is at 8AM.

  • Recitations this year will cover a mix of conceptual and assignment-driven material.

  • We will also try to post some screencasts this year!

Getting Help: Office Hours

  • All TAs and Ninjas will be holding office hours.

    • We are hoping to have around 40 hours of office hours scheduled per week, meaning that you have plenty of opportunities to complete the challenging CSE 421 assignments.

  • Office hours are the best place to get help on the programming assignments.

  • CSE 421/521 office hours will be in Davis Hall in locations announced on the calendar, but probably near Davis 301B or in the Second Floor atrium.

  • Just come in and do the assignments during office hours—​that way, when you get stuck, you are in the right place.

Getting Help: Working in Pairs

Partner groups are jointly responsible for joint work.

  • If any part is plagiarized, both partners fail.

  • If any part is plagiarized, both partners fail.

  • If you have concerns about work your partner has submitted, immediately approach the course staff.

  • If you do not we will assume later that your consent was given.

  • It is entirely your responsibility to ensure that your team’s submission is fair and reflects your contributions.

Pair programming assignments for CSE 421/521 are very clear about what kinds of collaboration are permitted. We consider violating these expectations to be cheating.

Getting Help: Helping Each Other

  • The course staff will be working as hard as you—​and sometimes harder—​but there are many of you and few of us. Look to your left and your right: these are your comrades.

  • Good classes come through CSE 421/521 as a team.


  • Simple rule: talking about code is collaborating, talking in code (or exchanging code) is cheating.

    • Unless you are talking to your partner in which case anything goes.


  • I take cheating very seriously:

    • Not because I am vindictive and mean…​

    • …​ but because I believe in protecting and honoring those of you that work hard and play by the rules.

I will find cheaters

No matter how long it takes


  • We will use an online service to detect and investigating code similarity.

    • It is very fast, so we can use it on every submission.

    • It is very accurate.

    • We will compare your assignment against everything we can think of: this years', last years', anything you can find online, assignments submitted at Harvard, etc.

    • I have a huge repository of old assignments now. If you can find it, I’ve already got it.

And when I do

I’ll be mad


  • We catch and fail cheaters. Not for the assignment: for the entire class.

Cheated in 421/521

Got an F

Cheated in 421/521

Got an F

Cheated in 421/521

Got an F

Didn’t deflate footballs

Got an F for copying code in 421/521

Cheated in 421/521

Not really!

Didn’t cheat in 421/521

Runs own business!

Questions About Collaboration?

Inclement Weather

  • If Buffalo Public Schools are closed, we will not have class.

  • If the University at Buffalo is closed, we will not have class.

Must do office hours!

Questions About Course Policies?


  • Pre-class music: if you have suggestions, please stop by my office hours. One request per student per semester and requests must be made in person.

  • Does UB think your name is "., foo bar", and it isn’t actually "., foo bar"? Please let us know (staff@ops-class.org).


I don’t speak foreign!

Next Steps

  1. Sit tight for more details to appear online.

  2. Find a partner!

    • I will hold office hours Wednesday 1/27 from 11AM to 1PM if you have questions about the course and want to chat in person.

    • Recitations and office hours will start next week.

    • The preterm exam will be Wednesday. Please bring a pen or pencil and your UB ID card.