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. Above all, I value timely, honest, and respectful communication (to me, respectful also means human, as in, please don’t use AI to write your emails to me). If there’s a concern, the earlier I hear about it, the easier it will be to address. As this is an evolving course, the syllabus may be amended over the semester, and this will be announced via Ed if needed.
Instructor: Milda Zizyte (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 (linked at the top of the course website). 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. Per University policy, 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, quizzes, and the final project. The course is not curved, and grade cutoffs will be roughly on the 70%/80%/90% C/B/A split. For students taking the course S/NC, a C equivalent or higher gets an S.
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. All lectures will be interactive to some degree, but lectures that have a graded activity component will feature a short handout or notecard that you will complete during class for credit. The first graded in-class activity will be in the second week of class (lecture 4).
Homeworks (50% of grade – 6% HW1, 11% 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. A lot of the concepts in the homeworks introduce concepts a step or two beyond the ones we’ve seen in lecture. 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.
Quizzes (20% of grade – 5% each): There will be an in-person, 25-minute quiz after each of homeworks 2-5, focused on covering the conceptual material that was relevant to the homework. At the bottom of each homework assignment, we’ll give you a list of topics to review for the corresponding quiz. The quizzes will not be designed to trick you, and the hope is that, as long as you are engaging with lectures and engaging with all parts of the homework, you will do well. The dates can be seen at the bottom of the schedule page of the website. The first 25 minutes of each quiz date will be spent on the quiz, and the remaining time will be used for lecture. Students with SAS extra time accommodations will take the exam at the starting at the same time in a separate room and will be able to review lecture capture for the lecture they missed. You are allowed to bring a notesheet (printed or handwritten) to the quizzes, but cannot access other written/electronic resources.
Final project (20% 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.
Textbooks: Computer Organization and Design: the Software/Hardware Interface by Patterson and Hennessy and Computer Architecture: A Quantitative Approach by Hennessy and Patterson.
Note: multiple editions of these books exist. We will be using the RISC-V edition of Patterson and Hennessy and the fifth edition of Hennessy and Patterson. Both books are available free through the Brown library, linked on the resources and schedule pages of the website. Readings will be posted on the schedule page and will indicate whether the reading comes from P&H or H&P.
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 reviewing notes, doing readings, and working on the 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 have 5 late days to use over the course of the semester, and can use 2 late days per assignment. You do not have to tell us that you’re using a late day. 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.
To be honest, I would rather be much more relaxed about this policy, but I’ve found that this actually ends up being detrimental to students. 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. The homeworks are scoped in accordance to the 9 hours/week of non-lecture work as described above, so starting the work the day before it’s due is mathematically inadvisable. 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
I aim to improve my courses every semester, which means that assignments/lectures/activites are always changing. Quizzes are new this semester. For three of the assignments (and potentially the final project), we’re using a cutting-edge simulator used by researchers in academia and industry, and I’m still figuring out the right way to introduce such a large tool in a classroom setting. There might be some hiccups along the way as the course evolves. 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), Kathi Fisler (director 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, and neither is collaboration where you’re looking at each others’ screens when writing the homeworks. 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. It’s very easy to read over AI output, be convinced that it’s reasonable, and hand it in as part of an assignment. In my past experience, including specifically in this course, such work often does not stand up when scrutinized at the level of rigor we expect in this course. Just like in the real world, you are expected to stand behind and be able to fully explain the work you turned in. Do not undermine your own credibility (and rob yourself of your own learning) by turning in slop.