Course Syllabus: Lectures
Office Hours
Textbooks
Outcomes
Grading Policy
Schedule
MU CS Department Logo
Instructor
Dennis Brylow
Email: brylow at cs dot mu dot edu
Office: Cudahy 201C
Lab: Cudahy 310

Meetings
MWF 3:00-3:50pm, JH 107

Office Hours
Mon   12:00pm  -  1:00pm
Mon   9:00pm  -  10:00pm
Wed   12:00pm  -  1:00pm
Fri   10:00am  -  11:00am
Lab Instructors
Sam Mazzone <samuel.mazzone at marquette dot edu>
John Freeborn <john.freeborn at marquette.edu>
Oliver Laufenberg <oliver.laufenberg at marquette.edu>
Will Pawlowski <william.pawlowski@marquette.edu>
Labs
Thu   10:00am  -  11:50am   CU 310   John
Thu   Noon  -  1:50pm   CU 310   Oliver
Thu   2:00pm  -  3:50pm   CU 310   John
Thu   4:00pm  -  5:50pm   CU 310   Will

Lab Instructor Office Hours
Mon   1:00pm  -  3:00pm   CU 310   Sam
Mon   5:00pm  -  7:00pm   CU 310   John
Mon   7:00pm  -  9:00pm   CU 310   Oliver
Tue   5:00pm  -  7:00pm   CU 310   Will

Textbooks

Textbook Cover

Operating Systems: Three Easy Pieces,
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau.
Arpaci-Dusseau Books
August, 2018 (Version 1.00)
[This book is freely available at http://ostep.org/]
Textbook Cover

The C Programming Language ,
2nd Edition.
Brian W. Kernighan and Dennis Ritchie.
Prentice Hall.
ISBN: 978-0131103627

Readings will be regularly assigned from the textbooks.
Lectures will assume that students have already read the assigned chapters.

New to Linux or the Command Line? Here's a free book that helps beginners to get acclimated:

Textbook Cover

The Linux Command Line,
William Shotts.
January, 2019 (5th edition)
[This book is freely available at https://linuxcommand.org/]

Course Outcomes

This is a course on operating systems concepts, with an emphasis on building a small embedded operating system on modern RISC hardware. Upon completing this course, students will be able to:

For those of you interested in curriculum details, this course will correspond to the following components in the Joint ACM / IEEE Computer Society Taskforce report, Computer Science Curricula 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science:


Knowledge Unit Core-Tier 1 Hours Core-Tier 2 Hours
Operating Systems (OS) 4 11

Course Policies

Grades

Grades will be calculated using the following formula:
Projects 35% Weekly individual or team projects and homework assignments
In Class Activities 5% In class exercises
Written Exams 30% Midterm exams in class (3)
Lab Practical Exams 15% Live coding exercises and oral exams in laboratory (3)
Final Exam 15% Final exam

Grades will be assigned using the standard formula: A: [93, 100]; A-: [90, 93); B+: [86, 90); B: [82, 86); B-: [78, 82); C+: [74, 78); C: [70, 74); C-: [66, 70); D+: [62, 66); D: [58, 62); F: [0, 58)
At the instructor's discretion, grades may be "curved" up; grades will not be curved down.

Grades will be routinely posted in the gradebook on the course D2L site, as they become available.

Attendance

Student attendance will not be explicitly tracked in this course, and will not directly impact student grades. However, students who routinely miss class discussions or lectures should expect to be unprepared to complete the assignments and exams upon which grades so heavily depend. In short, I don't bother with attendance bean-counting because students who cut class usually fail themselves out of the course before I would need to take any action. Make good decisions.

If you know you will be missing class for a legitimate reason, I appreciate a heads-up, but in accordance with Marquette University Attendance Policies, neither require nor accept documented excuses, except in those specific cases detailed in the policy above. Please try to have a peer in the class take notes in your absence, and get any assignments in ahead of the deadline.

The size and structure of this course will not normally allow me to accept late work under any circumstances. There are enough opportunities for points in the course for most students to miss a few without severe consequences for their grades.

Academic Integrity

All students are expected to abide by Marquette University's Policy on Academic Integrity, and we will proceed under the assumption that everyone has committed themselves to the University's Honor Pledge:

I recognize the importance of personal integrity in all aspects of life and work. I commit myself to truthfulness, honor, and responsibility, by which I earn the respect of others. I support the development of good character, and commit myself to uphold the highest standards of academic integrity as an important aspect of personal integrity. My commitment obliges me to conduct myself according to the Marquette University Honor Code.

The Honor Code has particular implications for computer scientists and engineers, as well as computing professors, whose course work is so readily duplicated and shared in our modern digital world.

For my part, I will strive to ensure that your assignments and exams are engaging, challenging, and worth your investment in time and energy. For your part, I expect you will work hard, strive to learn, and present your work with honesty and integrity.

Generative artificial intelligence tools for coding assistance have now become ubiquitous. We assume that some students will make use of these tools to assist them with the programming projects. It is expected that any such tools will be listed in the authorship section of the mandatory comment block at the top of each assignment. Failure to note the contributions of a generative A/I tool will be considered a violation of the academic integrity policy. No such tools will be permitted for written exams and lab practical exams.

There will be many opportunities for you to collaborate with your peers in this course, and I strongly encourage you both to seek help when you are stuck, and to share your knowledge with your peers when you have achieved understanding. Problems will only occur if you falsely claim work as your own when it is not, or collaborate when an exam or assignment has been specified to be individual work.

In the unlikely event of an academic integrity violation in this course, Marquette University's Procedures For Incidents of Academic Dishonesty will be closely followed.

Schedule

Here is a link to the Canonical Schedule as a live Google spreadsheet.

Week Topics Readings Assignments
01 Introduction and Overview
C basics, Representation, Operators
KR Ch 1-5 Project 1: UNIX and C
02 C structs, Pointers, I/O KR Ch 6-8 Project 2: UNIX and C
03 Virtualization; Concurrency; Persistence OSTEP Ch 1-4 Project 3: Serial Driver
04 Processes; Context; Trap Handlers OSTEP Ch 5-8 Project 4: Context Switch
05 Process Scheduling OSTEP Ch 9-12
06 Address Spaces; Memory API
OSTEP Ch 13-16 Project 5: Trap Handlers
07 Address Translation; Memory Management OSTEP Ch 17-20 Project 6: Process Scheduling
08 Paging; TLBs; Concurrency OSTEP Ch 25,26 Project 7: Memory Protection
SB Spring Break
09 Threads; Locks OSTEP Ch 27-30
10 Condition Variables; Semaphores
Easter Break
OSTEP Ch 31-37 Project 8: Heap Management
11 Easter Break
File Systems
OSTEP Ch 38-41
12 Mass Storage Systems OSTEP Ch 42-46 Project 9: File Systems
13 File Systems OSTEP Ch 47-51
14 Security OSTEP Ch 52-54 Project 10: Security
15 Security OSTEP Ch 54-57
F Final Exams  
The instructor reserves the right to adjust this schedule as necessary.

[Revised 2022 Jan 24 21:41 DWB]