Syllabus and Course Information
Syllabus and Course Information
Course Objectives
CS 233 has several goals:
The rst 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 nite state machines and more. Speci cally we will test the following objectives:
Students should be able to design modest combinational circuits (20-30 gates) from an natural
language (e.g., English) speci cation
Students should be able to design nite state machines of moderate complexity (10-20 states) from a
natural language speci cation. Furthermore, they should be able to implement these FSMs using a
collection of gates and ip ops.
Students should be able to analyze the design of a simple processor and modify a Verilog
implementation to implement new instructions.
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 speci cally test
the following objectives:
Students should be able to translate small (20 line) C programs that include conditionals, loops,
function calls, recursion, data structures, and pointers into MIPS assembly, observing calling
conventions and stack management.
Students should be able to translate short (30 line) MIPS programs to corresponding C programs
including function prototypes.
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 in uence 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 speci cally test the following objectives:
Students should be able to de ne and provide examples of the key implementation ideas of modern
computers (abstraction, caching, hierarchy, indirection, pipelining, parallelism, speculation).
Students should be able to analyze performance questions to identify what phenomena and/or
numerical values are required and compute a result if these are provided.
Students should be able to identify the hardware structures in a pipelined processor and
cache/memory systems and explain their role.
While the previous goals focus primarily on single-processor systems, the last goal presents hardware
mechanisms for implementing parallel processing. Speci cally, 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 speci cally
test the following objectives:
Provided a small piece of code executing on a shared memory parallel computer, students should be
able to recognize synchronization, coherence, and consistency pitfalls that could impact the execution’s
result or performance.
Lecture
We have 50-minute lectures, three times a week. Bring a writing implement and an i>clicker to lecture,
because they will be interactive.
Discussion Sections
First hour in 1111 Siebel; second hour in 0218SC. If you have a laptop, bring it to the rst hour.
Unless otherwise announced, there will be a quiz in each week’s section, typically conducted near the end
of the rst hour:
The quiz covers material the same material that was covered in the worksheet of that same section
and one or more lectures preceding that section
The quiz will differ by discussion section based on your TA, but should be similar in dif culty
There will be some opportunities for extra credit based on the groups you are assigned to
These quizzes are intended to be formative (i.e., help you understand the degree to which you
understood the material) and together are only worth 2% of the course grade.
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 rst part of this course follows the rst 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 rst 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 nd 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 nd they don’t
refer to the book. Any of the second, third, or fourth editions are ne.
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 can, however,
provide little assistance in getting this software running on your machine.
Website
cs233.github.io has the schedule and lecture and section notes. Just about all course materials will be
distributed on the web.
Piazza
We’ll be using Piazza. Piazza 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:
Piazza is meant for general questions, such as asking for homework clari cations or addressing
administrative issues. More speci c or personal problems are usually better handled via email or in
person.
Use meaningful subject lines. “Segfault when accessing pixels in extractMessage” is much more
informative than just “My head is falling off!” This makes it easier for other people to nd posts that
they are interested in.
On a related note, before you post a question, check to see if somebody else has already asked the
same thing.
i>clicker
This class will use i>clickers. These are radio-frequency remotes, keyed to each individual student, which
will allow anonymous (to other students, but not to the staff) responses to questions asked in lecture. Past
research has shown these to be very effective at improving student/lecturer interactions, which in turn are
known to improve student learning (which is what we care about) and, consequently, student grades (what
you care about).
You need to get one at the bookstore (new or used), and bring it to every lecture. 3% of your nal grade will
depend on lecture participation (participating means answering the question using your i>clicker, without
considering whether your answer was correct or incorrect). You can miss up-to 3 lectures where i>clicker
was used and still obtain full credit for lecture participation. You need to answer at least 50% of the day’s
clicker questions to get attendance credit. In addition, extra credit of up-to 2% will be awarded for the
correct answer. Notice this 2% will be extra credit. We will use the i>clicker from the rst day of lectures, so
bring it as soon as you have it.
You will need to register your i>clicker at the i>clicker web site. Your Student ID is your netID, which is your
email address without the @illinois.edu. Your remote ID is in the back of your i>clicker. Even if you
registered your i>clicker in a previous semester, you need to do it again this semester; otherwise we will not
be able to assign you your i>clicker points for cs233. If you cannot read the remote ID on the back of your
i>clicker, please go to the Customer Service Counter at the Illini Union Bookstore. A station has been set up
there so that you can retrieve the Remote ID. Notice that you can use your i>clicker even if you have not
registered, although you will need to register at some point to obtain the i>clicker points.
Grading
Labs (25%)
There will be 15 labs throughout the semester, each weighted equally. See Lab Submission Policy below.
Final (10%)
We’ll have a comprehensive nal to cover the material that follows midterm 7 and a sampling of the
material from the rest of the semester. Due to the timing, there will be no 2nd chance opportunity for this
exam.
Attendance (5%)
Attendance will be taken in both lecture (using i>clickers) and discussion sections. i>clicker participation is
3% of your nal grade, and weekly quiz grades are 2% of your nal grade. Students will have 3 free lecture
absences. We will drop the two lowest weekly quiz scores for all students. These free absences are provided
to accommodate for cases where a student may miss class due to interviews, conference, illness, etc.
Extra Credit
As noted above, i>clicker performance (correct answers) will be worth up to 2% extra credit. For each
day, we’ll divide your number of correct answers by the maximum number of possible points that day
to get your percentage for the day. We’ll then average all the day percentages to get your overall
performance percentage, which we’ll multiply by 2% and award as extra credit.
Discussion sections are organized into groups sharing a table. If you get >= 8 points on a quiz, you get
1 point of extra credit for everyone else on your table who also got >= 8 points. This extra credit counts
towards the 2% for weekly quiz grades.
Some labs will have small extra credit components. Details will be present in those lab handouts.
On very rare occasions there are other opportunities for extra credit.
Partners: For most labs, you can work individually or with 1 partner. 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 le, 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.
You can choose whether to take the second-chance exam. If you do not show up to the second-chance
exam, you keep your rst-chance exam score.
You may show up for the second chance exam and read through as many questions as you want
without saving responses. For the computerized exams, if you save any answer in PrairieLearn, your
exam will be automatically submitted and will be graded. If you do not save any answers, we will
discard your exam. For Exam 7, you will specify on the cover sheet which questions you want graded.
If your second-chance exam is not graded, you will keep your rst-chance exam score. If your second-
chance exam is graded, your nal score for that exam will be composed 90% of your highest exam
score and 10 % of your lowest exam score. As such, you are encouraged to study for each attempt and
take them to the best of your ability. For example,
If you earned a 70% on the rst-chance of an exam and show up to your second-chance exam but
do not save any answers, you will keep your 70% for the exam.
If you earned a 50% on the rst-chance of an exam and earn an 80% on your second-chance exam,
you will earn 50 * .1 + 80 * .9 = 77%
If you earned a 50% on the rst-chance of an exam and earn an 20% on your second-chance exam,
you will earn 50 * .9 + 20 * .1 = 47%
For the computerized exams, the rst chances are purely autograded. The second chances are
autograded, and submissions which don’t get full credit on the autograder are hand-graded for partial
credit.
Regrades
For computerized exams, regrade requests must be submitted within 48 hours of your exam. Regrade
requests must be submitted either as issues during your exam or as a private piazza post after your exam.
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.
Grades
Assignment and exam grades will be available via the 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+).
90% - 100% A
80% - 89% B
70% - 79% C
Cheating
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. All parties involved will receive a 0 on
that assignment or exam and their nal course grade reduced by one letter grade (e.g., A->B, B->C, etc.). A
second offense will result in a failing grade for the class.
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.
Accomodations
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 accomodations with the computer-based testing facility, please see
https://cbtf.engr.illinois.edu/#dres
Mental Health
As a student you may experience a range of issues that can cause barriers to learning, such as strained
relationships, increased anxiety, alcohol/drug problems, feeling down, dif culty concentrating and/or lack of
motivation. These mental health concerns or stressful events may lead to diminished academic performance
or reduce a student’s ability to participate in daily activities. As a course staff, we are concerned about
advancing the mental health and well-being of our students. If you or someone you know is feeling
overwhelmed, depressed, and/or in need of support, services are available. You can learn more about the
broad range of con dential mental health services available on campus via
https://www.mckinley.illinois.edu/medical-services/mental-health