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.
- Explain through examples how violation of good design and coding practices lead to security problems.
- Analyze how operating systems problems are addressed in different systems and understand why particular approaches were taken.