Studies the structure, components, design, implementation, and internal operation of computer systems, focusing mainly on the operating system level. Reviews computer hardware and architecture including the arithmetic and logic unit, and the control unit. Covers current operating system components and construction techniques including the memory and memory controller, I/O device management, device drivers, memory management, file system structures, and the user interface. Introduces distributed operating systems. Discusses issues arising from concurrency and distribution, such as scheduling of concurrent processes, interprocess communication and synchronization, resource sharing and allocation, and deadlock management and resolution. Includes examples from real operating systems. Exposes students to the system concepts through programming exercises.
We will use Piazza for all communication, please register for Piazza here.
Studies the structure, components, design, implementation, and internal operation of computer systems, focusing mainly on the operating system level. Reviews computer hardware and architecture including the arithmetic and logic unit, and the control unit. Covers current operating system components and construction techniques including the memory and memory controller, I/O device management, device drivers, memory management, file system structures, and the user interface. Introduces distributed operating systems. Discusses issues arising from concurrency and distribution, such as scheduling of concurrent processes, interprocess communication and synchronization, resource sharing and allocation, and deadlock management and resolution. Includes examples from real operating systems. Exposes students to the system concepts through programming exercises.
The class will consist of 3 or 4 projects with the following weights.
The final grade for a student is calculated as the weighted average of the preceding list and rounded up to the nearest integer. The mapping to a letter grade uses the following scale
You are expected to attend all lectures.
If you have to miss a lecture. Materials covered for each lecture, readings, tutorials, assignments, are available on the course web page.
Assignment extensions are at the discretion of the instructors. If you would like to discuss a possible extensions talk to the course instructors in advance.
You are expected to read, understand and follow the University's policies on Academic Integrity
During assignments you are encouraged to discuss the problem with classmates on piazza or other forums. You are however not allowed to share solutions.
All work submitted for assignments expected to be completed individual must be your own work. You are not allowed to share code. Code that is identical or similar will be penalized and reported to the appropriate University authorities.
All work submitted for assignments expected to be completed as a team must be the team's work. You are not allowed to share code with people outside your team or with another team. Code that is identical or similar will be penalized and reported to the appropriate University authorities.
If you require support during the course due to disability please ensure that you are already registered with the University's Disability Center and contact your course instructors in order to coordinate any support needed during the course.
The schedule is tentative and might change during the semester.
The book is available on line and there is an option to purchase a hardcopy of the book. We will be using some of this book's chapters.
The book is a classic reference of Operating Systems. Covers OS concepts and provides examples from existing OSes.
Another classic reference. The book is more implementation focused with case studies that cover some of the popular OSes.
This is "the" C book, covers the language and some of the standard C libraries. This is a classic.
Provides a thorough treatment of the C language, common libraries and portability. This is one of the best reference books on C.
Online book with a hands on approach that covers topics only through examples.
If you are new to Unix and you want to get the basics down this is a must.
Old but classic, explores some of the core algorithms and structures that make up the UNIX operating system as well as their relationship to the user interface.
A gateway to HOWTOs, guides and manuals that you can read online.
info
and man
programs.
Covers computer architecture and assembly language.
Covers advanced topics on memory hierarchy design, instruction sets, instruction level parallelism. More of an advanced book on the topic; the next book to read after "Computer Organization and Design, Fourth Edition: The Hardware/Software Interface"
Covers x86 assembly. This is what most computers use these days.