This course is an introduction to operating systems. After completing this course, students should be able to:
Explain how operating systems provide the abstractions with which programmers and users are familiar.
Work effectively with a partner.
Design, implement, modify, and analyze complex software systems
Undertake different types of design projects including: implementing to a well-defined interface, designing appropriate interfaces to provide specified functionality, extending an existing body of code Read more about CS 161: Operating Systems
This course explores practical attacks on modern computer systems, explaining how those attacks can be mitigated using careful system design and the judicious application of cryptography. The course discusses topics like buffer overflows, web security, information flow control, and anonymous communication mechanisms like Tor. The course includes several small projects which give students hands-on experience with various offensive and defensive techniques; the final, larger project is open-ended and driven by student interests.