Systems 2: Software Architecture and Design-From virtual machines to compilers
Professor | Dr K Darcy Otto |
Title | Systems 2: Software Architecture and Design |
Code | CS 4382 |
Credits | 4 |
Term | Fall 2024 |
Times | Mon/Thurs 13h40-15h30 |
Location | Dickinson 117 |
Delivery | Fully in-person |
Contact | |
Office Hours | Mon/Thurs 15h30–16h30, or by appointment |
Have you ever wondered what a computer is and how it actually works? In this course, we’ll answer the software half of this question. We will start with virtual machines and develop a high-level language, write a compiler, and an operating system. By the end, we will have developed a software hierarchy that makes the hardware we designed in Systems 1 useable.
We will begin by developing a virtual machine, an important layer that allows software to operate without considering the specifics of the underlying hardware. Then, we will develop a high-level programming language, designed to be both powerful and user-friendly (reminiscent of Java). And finally we will design and implement a compiler that translates human-readable code into a structured format that the virtual machine understands.
Our exploration of the software hierarchy will culminate in developing a simple operating system, the ultimate orchestrator of hardware and software resources. Our operating system will manage tasks such as executing programs, memory access, and input/output operations, making the computer you have developed effective for a wide variety of tasks.
By the end of the course, you will have a comprehensive understanding of the software stack that powers modern computer systems. You will also gain hands-on experience in developing the components that enable computers to perform complex tasks, from running applications to managing system resources. This course will also equip you with the knowledge and skills to bridge the gap between raw hardware and the high-level applications that we interact with daily, completing your journey from circuits to a fully operational modern computer.
An overarching objective of this course is to help you develop as a student of the liberal arts. True students of the liberal arts are able to reflect on the context in which they live, and reason about what it means to live a meaningful and happy life. Thus, they are able to be more than just children of their own time. But this means we must be willing to put our ideas to the test, see our own errors, and develop intellectual courage and humility. It also helps not to take ourselves too seriously.
You may chose either Option A or Option B for a grading scheme. Option B adds a final project, and reduces the weight of the course meetings and oral examination.
Check-in Meetings | 50% | Exercises |
Oral Examination | 50% | Comprehensive |
Check-in Meetings | 30% | Exercises |
Oral Examination | 40% | Comprehensive |
Final Project | 30% | Subject to approval |
Check-in Meetings: Several times during the term, you will meet me during office hours. I will ask you to show me your work from class, and you should be prepared to demonstrate and explain your exercise answers, as well as answer questions about concepts from the course.
Examination: The examination is comprehensive and will be a series of oral questions, related to the topics covered in the course.
Final Project: If you choose Option B, you will propose and complete a group project in coördination with the professor. A proposal must be approved in order to submit your final project.