Syllabus
Information
This syllabus is meant to give you the information necessary to succeed in this course. If something is unclear, missing, or difficult to work around given your specific circumstances, please reach out. In general, I want to be reasonable and support your learning and your humanity, and I expect you to act in good faith in return. As this is the first offering of a brand new course, the syllabus may evolve over the semester, and this will be announced via Ed.
Instructor: Milda Zizyte (CIT 429, milda@brown.edu)
Pre-requisites: one of CSCI0330, 1310, or 0300.
Reach us: All announcements and other communication will be done through the course EdSTEM board. This will also be the fastest place to get questions answered. If you have a question for the staff that you are not comfortable posting on Ed, please email cs1952ytas@lists.brown.edu (please do not email individual TAs!). To reach Milda, please use her email. Note that HTAs/UTAs do not handle extensions, accommodations, grade inquiries, or dean’s notes.
Description
How does a computer program actually turn into the electrons moving inside of your computer? What are the relevant metrics and tradeoffs for designing a computer, and what impact do these tradeoffs have on our software? In this course, we cover computer organization and design, from a software lens. Topics include instruction set architectures, processor design and pipelining, memory hierarchies, program flow optimization, I/O, and emerging applications. Homeworks and final project will use powerful architecture simulators and explore general and specialized hardware for various applications. Course is lecture-driven with participation components throughout.
Learning goals
By the end of the course, students should be able to:
- Trace how an assembly program gets executed on a computer processor
- Measure the efficacy of a computer architecture using metrics such as throughput, clock speed, power usage, and complexity
- Connect how computer architecture decisions (at the instruction set and hardware level) affect computing applications such as software performance, multithreading, compilers, and security
- Implement architecture concepts on simulators with various levels of abstraction
- Translate an instruction-set architecture specification into a processor implementation
- Recognize the optimizations provided by pipelining and design control signals to eliminate pipelining hazards
- Understand the components of a memory hierarchy and explain tradeoffs between various cache topologies
- Define and distinguish between various techniques for instruction-level and data-level parallelism
- Conceptualize the role of computer processor design in historical and market contexts
- Analyze modern papers on emerging computer architectures
- Appropriately match performance tradeoffs of modern computers to modern computing applications while obeying cost and power constraints
Assessment
The course will be graded based on in-class activities, homeworks, and the final project. The course is not curved, and grade cutoffs will be roughly on the 70%/80%/90% C/B/A split (possibly adjusted based on the difficulty of the assignments as we work through the first offering of the course – this will be communicated as the semester progresses).
In-class activities (10% of grade): Computers are complicated, and digesting information about architecture specifics is not the most effective way to really learn the topic. The goal of this portion of the grade is for you to truly engage with the concepts being taught: together as a group, we will analyze design decisions, derive our own architecture implementations, and trace data and control signals through a processor and memory. Lectures that have an activity component will feature a short handout that you will complete during class. We will not start in-class activities until shopping period is over.
Homeworks (60% of grade – 8% HW1, 13% each HWs 2-5): In this class, you will become familiar with two architecture simulators, which work at different levels of abstraction. You will work directly with these simulators in the homeworks. You will implement code to simulate hardware, come up with representative workloads for various optimizations, and work through the details of the design of various computer architectures. Homeworks will be graded on the correctness of your code, your analysis of the performance of these implementations, and your understanding of the relevant designs.
Final project (30% of grade): Computer architecture needs to grow and evolve in order to keep up with emerging computing applications. In the final project, you will work in groups to assess hardware tradeoffs and appropriately select a hardware configuration for a computing application of your choice. Working with constraints such as power usage, you will choose benchmarks, measure performance in simulation and on real hardware, and communicate your analysis. Before getting started on the implementation and analysis, you will get feedback on the proposal of your final project.
Course materials and costs
Beyond lectures and assessments, the other time commitment for the class is background reading, which will be listed for most lectures. We recommend completing it before the lecture and referencing it for the homework.
Textbook: Computer Organization and Design: the Software/Hardware Interface by Patterson and Hennessy.
Note: multiple editions of this book exist. We will primarily be using the RISC-V edition, which is available for free via the Brown University library (listed readings will be in reference to this edition). We will cover emerging applications and other topics in other readings. The additional readings will be accessible through Canvas or through the library.
Time expectations
The CCC requires a time commitment of 180 hours for the semester from students (an average of 12 hours/week). 3 hours/week are spent on lecture, so you are expected to spend at least 9 hours/week on average doing readings and assignments.
Absence and Extenuating Circumstance Policies
Attendance: Formal attendance is not taken, but you are expected to attend class and participate in the in-class activities. As stated in the Assessment section, this will be graded based on work you complete and hand in during class. While it is possible to pass the class with a 0 in this portion of the grade, it would be very difficult to miss every activity and get an A.
I understand that family obligations, illnesses, job interviews, exams in other classes, mental health days, snoozed alarms, etc happen. Not every class day will have an activity, and the final grading will be such that you can miss roughly 10-15% of the activities and still get full points in this portion. If you have missed or are going to miss more than a handful of classes over the semester, contact me to come up with a plan to make up the activities.
Late work: In general, homework should be submitted by the due date listed on the assignment page. We understand that life gets in the way, so you can use 2 late days per assignment, no question asked (the difference between a due date and a late due date is that the subsequent assignment will come out after the due date but possibly before the late due date). If extensions and accommodations beyond this are necessary, please reach out. If you are an undergraduate student that needs a multi-day extension, please get a dean’s note. In general, my goal is to make sure that the work we grade is the best work you can put forth, and I am happy to make a plan to get you caught up. Amended 2/23: This policy is relatively lenient to allow us to fairly judge your learning. However, it does not mean that deadlines are unimportant in this course. Deadlines exist for your benefit, the course staff’s benefit, and your classmates’ benefit. For you, deadlines are designed to impose a limit on how much work is out at any given time, and to allow you to plan your time. For the course staff, deadlines allow us to manage our time and resources by only needing to provide support for one assignment at a time. They also allow us to plan our grading, which also benefits your classmates, because it allows us to get grades out on time. If you request an extension without a dean’s or doctor’s note, I expect you to have put in good-faith effort to complete the assignment before the due date (let alone the late due date).
Classroom community
This is a brand-new offering of a course, in a subject that hasn’t been taught in the department for several years. As we roll out brand-new assignments and brand-new lectures, there might be some hiccups along the way. My intention is to build trust with you so that we can communicate about these hiccups and smooth them out. As such, I will actively be asking for and following up on your feedback about the course (with the intent of demonstrating to you that your feedback is valuable). The policies in this document are subject to change based on our discussions, and will be communicated clearly ahead of time. As a group, you, the TAs, and I will have continued discussions about the trajectory of the course and the community we want to build in class.
“Computer Systems” is a loaded term which might evoke (positive, negative, or neutral) feelings based on your past experiences or what you’ve heard your peers say about the area. The TAs and I believe that anyone with an interest in CS belongs in a systems course and can succeed. One of the overarching goals of building this course is to find a balance between challenging you by putting you in that sweet spot of slight discomfort where learning happens, and not discouraging you. The course staff’s role is to provide you with constructive feedback and encouragement and respond to your feedback in a productive manner. Your own role is to believe in your capabilities, and to create a welcoming environment for the other students in the class. In particular, if you have prior experience in the topic or if you find yourself catching on with the material quickly, be mindful to lift up the students around you. Casual statements about how simple an assignment or topic is are not productive, and can negatively impact others’ learning.
This course has a major participation and collaboration component. My goal is to foster a welcoming and inclusive environment, where your identities and experiences are honored. If you do not feel like this is the case at any point in the course, please let the course staff know.
I am always open to inspecting my own biases or changing the course content/format to better suit students’ needs. If you have concerns, again, please reach out to me personally or submit anonymous feedback. You can also come to the TAs, or contact the department’s student advocates. Department staff and faculty resources include Lauren Clarke (department manager), Tom Doeppner and Kathi Fisler (the directors of undergraduate studies), and Roberto Tamassia (department chair).
Accessibility and Accommodations Statement
Brown University is committed to full inclusion of all students. Please inform me early in the term if you may require accommodations or modification of any of course procedures. You may speak with me after class, during office hours, or by appointment. If you need accommodations around online learning or in classroom accommodations, please be sure to reach out to Student Accessibility Services (SAS) for their assistance (sas@brown.edu, 401-863-9588). Undergraduates in need of short-term academic advice or support can contact an academic dean in the College by emailing college@brown.edu. Graduate students may contact one of the deans in the Graduate School by emailing graduate_school@brown.edu.
Academic integrity policy statement
This class encourages collaboration and cooperation, but also expects that you submit your own work for homeworks. Talking through high-level ideas with other students is accepted and encouraged, but copying someone else’s code/analysis is not allowed. If in doubt about this policy, ask!
From the University’s Academic Code (page 5), “A student’s name on any exercise (e.g., a theme, report, notebook, performance, computer program, course paper, quiz, or examination) is regarded as assurance that the exercise is the result of the student’s own thoughts and study, stated in his or her own words, and produced without assistance, except as quotation marks, references, and footnotes acknowledge the use of printed sources or other outside help.” Assistance includes AI tools, such as ChatGPT and CoPilot.