Syllabus and Course Information


Quick Links

Course Description

Fundamentals of computer architecture: digital logic design, working up from the logic gate level to understand the function of a simple computer; machine-level programming to understand implementation of high-level languages; performance models of modern computer architectures to enable performance optimization of software; hardware primitives for parallelism and security.

Course Learning Objectives

CS 233 has several goals:

  1. Grasp basic principles of combinational and sequential logic design.
  2. Have a high-level understanding of how to design a general-purpose computer, starting with simple logic gates.
  3. To provide you with a mental model of how high-level language programs get executed on computer hardware
  4. To introduce you to the organization and performance analysis of modern computers,
  5. Expose you to the hardware-level mechanisms for exposing parallelism.

The first two goals we will address together as we teach you the principles of logic design through the implementation of a processor capable of executing a subset of the MIPS instruction set architecture (ISA). Along the way we will discuss how computers represent numbers, understand the decode/execute model, the design of finite state machines and more. Specifically we will test the following objectives:

As computers execute programs in machine language, we will address the third goal through an extensive discussion of machine language and its human readable counterpart, assembly language. We will demonstrate how features of modern programming languages (e.g., function calls, recursion, pointers, dynamic memory allocation, etc.) are implemented in assembly language. In addition, topics like compilation, linking, I/O programming, and interrupt programming will be covered. We will specifically test the following objectives:

The fourth goal will be addressed in three ways: 1) We will present an overview of the organization of modern computers (processor, memory, I/O system) demonstrating the key challenges and ideas (e.g., pipelining, caching, indirection, etc.) that influence their design, 2) we will present both theoretical and practical performance analysis techniques and analyze the performance of many parts of modern machines (processors, memory, caches, disks, networks), and 3) we will write code in high-level languages and assembly to optimize program execution. We will specifically test the following objectives:

While the previous goals focus primarily on single-processor systems, the last goal presents hardware mechanisms for implementing parallel processing. Specifically, we will discuss SIMD execution, cache coherence, memory consistency, and hardware synchronization primitives. As part of this discussion, we introduce concepts of race conditions, false sharing, and the need for memory barriers. We will specifically test the following objectives:


Class Meetings

Class meets twice a week (Monday, Wednesday) for 1 hour, 50 minutes each meeting. Class will meet synchronously during scheduled times. If possible, we will offer one additional class meeting time for students who are living in different time zones due to COVID-19. Students are expected to attend at least one of these meeting times.

Students will be assigned to a team of 3-4 students (mostly teams of 4). Twice a week, your team will complete a collaborative, team-based exercise that will dig deeper into the core concepts in the pre-flights. If everyone on your team has completed and understood the pre-flights, we expect that these collaborative exercises will take about 1 hour and should take less than 2 hours. Everyone in your team will share the same score. You are encouraged to work together, checking and challenging each other’s understanding as these collaborative exercises will be graded such that you will need to answer each question correctly only once but you will lose points for incorrect submissions. At the end of each collaborative exercise, one team member (on a rotating basis) will be required to submit a write up, documenting code and design decisions. You will provide peer reviews of your teammates.


Textbook

All textbooks are optional. Copies of the textbook (as well as others) are on reserve at Grainger Library.

Logic and Computer Design Fundamentals, by M. Morris Mano and Charles R. Kime. (Published by Prentice-Hall), 2008. Fourth Edition 2008 ISBN: 0-13-198926-X

Computer Organization & Design: The Hardware/Software Interface, by David A. Patterson and John L. Hennessy. (Published by Morgan Kaufmann) Second Edition: 1998 ISBN: 1-55860-428-6 Third Edition: 2004 ISBN: 1-55860-604-1 Fourth Edition 2008 ISBN-13: 978-0123744937

Verilog HDL: A Guide to Digital Design and Synthesis, by Samir Palnitkar. (Published by Prentice Hall). Second Edition:2003 ISBN: 0-13-044911-3

The first part of this course follows the first book Logic and Computer Design Fundamentals, but much of this material is available in an appendix of Computer Organization & Design: The Hardware/Software Interface.

Some of the discussion sections in the first part of the course consist of Verilog problems, for which the Verilog HDL book can be used as a reference. However, the Verilog material covered in this course is very basic, and you should be able to find on-line any references needed.

The second and third part of this course follows the book on Computer Organization & Design: The Hardware/Software Interface very closely, so it is highly recommended, but many students find they don’t refer to the book. Any of the second, third, or fourth editions are fine.

Computing Resources

We will use the Engineering Workstations (EWS) for the labs in this class. The web page that provides locations for of EWS labs also provides the names of machines if you wish to work remotely.

Throughout the semester, we will be using iverilog, gtkwave, gcc/g++, and SPIM, all of which are installed on the Linux EWS machines, but many of which you can set up on your own machine. We will provide as much assisstance as we can in getting this software running on your machine, but we cannot guarantee that we can help you get it working.

Website

cs233.github.io has the schedule and course notes. Just about all course materials will be distributed on the web.


Campuswire

We’ll be using Campuswire code 0183 to add the course. Campuswire is designed to reduce the time to getting your question answered and for easy navigation, but this in part relies on your appropriate usage. Please follow the following guidelines:


Grading

Component Percent Notes
Final Exam 10% Comprehensive
Quizzes 55% 5% for each quiz (11 quizzes)
Preflights 7.5% Due 9am (CT) day of GROUP assessments
GROUP 7.5% 5% completion, 2.5% attendance
Labs 20% (drop lowest) Part 1 deadlines (Thursday 8pm), no late deadline
    Part 2 deadlines (Sunday 8pm), 48-hour late deadline
Extra Credit 3% (or more) Can be earned from extra credit assessments and other sources like surveys

All grades will eventually be available via the Compass grade book. Please verify the accuracy of your grades often during the semester! Typos are unfortunately very possible in a class with many students.

Letter grades will be assigned based on your overall numeric score. Also, the top and bottom 1% in each range will receive plus and minus grades (i.e., 99% and above get an A+, [91%-99%) get an A, [90%,91%) get an A-, [89%,90%) get a B+). We reserve the right to lower these thresholds but we will never raise them.

Preflights (7.5%)

We will have web-based preflights before each class meeting that will be worth 7.5% of your overall grade. These pre-flights will provide you with links to introductory videos and will be available in PrairieLearn. These preflights are intended to prepare you to contribute to your in-class group work. Most questions in the preflight will need to be answered correctly multiple times to receive full credit. Aside from the first few class meetings, preflights must be finished prior to class meetings to receive credit.

Preflight videos will also be accessible on my MediaSpace and ClassTranscribe.

Group Work (7.5%)

GROUP FAQ

Initially, all students will be assigned to a team of 3-4 students to work on longer, collaborative assessments in PrairieLearn during class meetings called GROUP assessments. Later, we will provide opportunities for you to choose your team. Each team will receive one instance of the GROUP assessment and all team members will share the same grade on that instance of the assessment. GROUP assessments will help you dive deeper into the course content and prepare you for the lab assignments. Most questions in GROUP assessments will need to be answered only once. It is in your best interest to make sure that all team members agree on the answer and that you check each other’s work before making submissions. Students are expected to start GROUP assessments during class meetings and most are expected to finish them during class time. Teams have up to 24 hours from the time they open the assignment to complete it.

Completion (5% of final grade): Teams will earn 5% of their final grade based on the points they accumulate during the GROUP assessments. Attendance/Participation (2.5% of final grade):

Extra Credit (at least 3%)

Extra Credit is available only to students who earn at least 75% of attendance/participation points for GROUP assessments (after the participation multiplier). If you aren’t willing to help your team and classmates learn, you are not eligible for extra credit.

We will have at least 3% of extra credit available throughout the semester. 3% available through Extra Credit homework assessments and then more through other means.

Labs (20%)

There will be regular 13 labs throughout the semester and Lab SPIMBot as the final lab assignment each weighted equally. We will drop your lowest scoring lab assignment. See Lab Submission Policy below.

Quizzes (55%)
Final (10%)

We’ll have a comprehensive final to cover the material that follows Quiz 11 and a sampling of the material from the rest of the semester.


Lab Submission Policy

Submission: Code will be submitted through Github and occassionally PrairieLearn. Like any workplace would, we expect you to correctly check in your code. We will grade whatever was checked in most recently at the deadline. We won’t be lenient if you forget to check in your code or check in the wrong version. You can verify which version of your code is checked in using the web interface for Github.

Partners: For most labs, you can work individually or with up to 2 partners. The exceptions are labs declared as individual, and the SPIMbot tournament lab, where you must work in groups of two or three. You will specify your partners using the partners.txt file, by including the netids of all collaborators (your netid + any partners), one per line.

Late Submission: One lab’s second part (other than the SPIMbot tournament) can be submitted up to 48 hours late without penalty. Otherwise, a 10% penalty every 12 hours (or part thereof) will be assessed, up to a maximum of 48 hours. See our Submission Policy page for more details.

Style: Good style is important whenever writing code; We reserve the right to assign a 0 to any assignment that demonstrates total disregard for standard good style conventions.

Regrades

Regrade requests for quizzes must be submitted within 48 hours of your quiz. Regrade requests must be submitted either as issues during your quiz or as a private Campuswire post after your quiz.

For labs, regrade requests must be submitted within 48 hours of the grade being released. The grade release announcements will have directions for asking grade-related questions and requested regrades.


Academic Integrity

Academic integrity is an important issue in general. The University expects you all to be familiar with Rule 33 in the Code of Policies and Regulations Applying to All Students. If we are able to pick out two nearly identical assignments out of 400, then cheating has likely occurred.

Do NOT post your code into public code sharing tools such as Github. While you may not be cheating, you are enabling other students to cheat which is against the student code.


Accommodations

Disabilities

To obtain disability-related academic adjustments and/or auxiliary aids, students with disabilities must contact the course instructor and the Disability Resources and Educational Services (DRES) as soon as possible. To contact DRES, you may visit 1207 S. Oak St., Champaign, call 333-4603, e-mail disability@illinois.edu or go to the DRES website.

For instructions on how to handle accommodations with the computer-based testing facility, please see https://cbtf.engr.illinois.edu/#dres

Mental Health

As a course staff, we are concerned about advancing the mental health and well-being of our students. Diminished mental health, including significant stress, mood changes, excessive worry, substance/alcohol abuse, or problems with eating and/or sleeping can interfere with optimal academic performance, social development, and emotional wellbeing. The University of Illinois offers a variety of confidential services including individual and group counseling, crisis intervention, psychiatric services, and specialized screenings at no additional cost. If you or someone you know experiences any of the above mental health concerns, it is strongly encouraged to contact or visit any of the University’s resources provided below. Getting help is a smart and courageous thing to do – for yourself and for those who care about you. Also, let’s lookout for each other and help others get the help that they need!

Counseling Center: 217-333-3704, 610 East John Street Champaign, IL 61820

McKinley Health Center:217-333-2700, 1109 South Lincoln Avenue, Urbana, Illinois 61801

Religious Observances

Illinois law requires the University to reasonably accommodate its students’ religious beliefs, observances, and practices in regard to admissions, class attendance, and the scheduling of examinations and work requirements. You should examine this syllabus at the beginning of the semester for potential conflicts between course deadlines and any of your religious observances. If a conflict exists, you should notify your instructor of the conflict and follow the procedure at https://odos.illinois.edu/community-of-care/resources/students/religious-observances/ to request appropriate accommodations. This should be done in the first two weeks of classes.


Statement on Racism and Inclusion

The intent is to raise student and instructor awareness of the ongoing threat of bias and racism and of the need to take personal responsibility in creating an inclusive learning environment.

The Grainger College of Engineering is committed to the creation of an anti-racist, inclusive community that welcomes diversity along a number of dimensions, including, but not limited to, race, ethnicity and national origins, gender and gender identity, sexuality, disability status, class, age, or religious beliefs. The College recognizes that we are learning together in the midst of the Black Lives Matter movement, that Black, Hispanic, and Indigenous voices and contributions have largely either been excluded from, or not recognized in, science and engineering, and that both overt racism and micro-aggressions threaten the well-being of our students and our university community.

The effectiveness of this course is dependent upon each of us to create a safe and encouraging learning environment that allows for the open exchange of ideas while also ensuring equitable opportunities and respect for all of us. Everyone is expected to help establish and maintain an environment where students, staff, and faculty can contribute without fear of personal ridicule, or intolerant or offensive language. If you witness or experience racism, discrimination, micro-aggressions, or other offensive behavior, you are encouraged to bring this to the attention of the course director if you feel comfortable. You can also report these behaviors to the Bias Assessment and Response Team (BART) https://bart.illinois.edu/. Based on your report, BART members will follow up and reach out to students to make sure they have the support they need to be healthy and safe. If the reported behavior also violates university policy, staff in the Office for Student Conflict Resolution may respond as well and will take appropriate action.

Sexual Misconduct Reporting Obligation

The University of Illinois is committed to combating sexual misconduct. Faculty and staff members are required to report any instances of sexual misconduct to the University’s Title IX Office. In turn, an individual with the Title IX Office will provide information about rights and options, including accommodations, support services, the campus disciplinary process, and law enforcement options.

A list of the designated University employees who, as counselors, confidential advisors, and medical professionals, do not have this reporting responsibility and can maintain confidentiality, can be found here: wecare.illinois.edu/resources/students/#confidential.

Other information about resources and reporting is available here: wecare.illinois.edu.

Family Educational Rights and Privacy Act (FERPA)

Any student who has suppressed their directory information pursuant to Family Educational Rights and Privacy Act (FERPA) should self-identify to the instructor to ensure protection of the privacy of their attendance in this course. See https://registrar.illinois.edu/academic-records/ferpa/ for more information on FERPA.


Late Add FAQ

If you want to take the course but have not been able to register, please refer to the Registration FAQ