CS213 Syllabus
CS213 Syllabus
Description
The primary goal of CPSC 213 is to help you develop a model of computation that is
rooted in what really happens when a program executes.
In the first half of the course you will implement a simple instruction set in a hardware
simulator and then examine how features of C are implemented in this instruction
set. We will refer back to Java when considering memory management and
polymorphism and to Dr Racket when considering functions as parameters. You will
also develop an ability to read and understand small assembly-language programs.
In the second half of the course, devices, asynchrony and thus asynchronous
programming are introduced. Asynchrony is used to motivate threads and threads to
motivate synchronization. You will see both how these abstractions are implemented
and how they are used. You will see the connection between thread switch and
procedure call. You will be introduced to the notion of atomicity and see why atomic
memory-exchange operations are needed to implement synchronization. You will
also examine the difference between busy and blocking waiting and solve a set of
problems using monitors and condition variables and semaphores in C.
Topics
● Numbers and Memory
● Static Scalars and Arrays
● Instance Variables and Dynamic Allocation
● Static Control Flow
● Procedures and Stack
● Dynamic Control Flow
● I/O Devices and Asynchronous Programming
● Virtual Processors (Threads)
● Synchronization
Contacts
Use Piazza to contact the course staff when your issue is related to course content,
including questions about material presented in class, questions about assignments,
or logistical questions. Given that your question may be answered by any of the
course staff, as well as other students if your question is public, you should expect
faster turnout there as compared to email.
Textbook
The primary textbook for the course is the 213 Companion.
Assessment
Your grade in the course will be based on the following components:
● 2% Class Participation — full marks for 80% on in-class iClicker
questions
● 3% Lab Participation — full marks for 80% participation in 1-hour
group labs
● 20% Assignments (11) — best 8 of first 9 plus assignments 10 and 11
● 25% Quizzes (10) — first attempt can be improved by up to 70% by
second attempt (details below)
● 20% Midterm — improved by your Final Exam (details below)
● 30% Final Exam
To pass the course you must achieve a mark of at least 50% on the unweighted
average of the midterm and final exams (note that it is not required to achieve a 50%
on either of them individually).
Lecture Participation
This component of your grades will be based on your answers to iClicker questions
posted in class. For each question, answering it is enough to count for one point,
regardless of if you got the answer correct. Getting the question correct counts for
one additional point. Obtaining 80% of the points available throughout the term is
enough to qualify for full marks in the lecture participation component.
Lab Participation
Be sure that you attend the lab and work with your group and the TA on the solution.
Full marks will be granted for active participation, regardless of whether you figure
out any part of the answer yourself.
Quizzes
There is a 30-minute quiz every week that assesses the same learning goals as the
assignment you complete that week. There are multiple versions of each quiz
question and you get two chances at each quiz. The second attempt is due three
days after the first; if a given quiz is due on a Monday, then the re-take is due that
Thursday. Your mark on each quiz is the maximum of your first attempt and 70% of
your second attempt plus 30% of your first. So, for example, if you get 70% on your
first attempt and 100% on your second attempt, your mark would be 91%.
Midterm
You can improve your midterm grade with your final. The way this works is that
every learning goal assessed on the midterm is assessed again on the final. If you
do better on the final-exam question for a learning goal, then your midterm mark for
the same goal will be improved to 80% of your final mark. So, for example, if
Midterm Question 3 and Final Question 2 both assess the same learning goal(s),
and you get 70% on Midterm Question 3 and 95% on Final Question 2, your midterm
mark for Question 3 will be improved to 76% (i.e., 95% x 80%).
Late Days
You are allowed 2 late days for assignments during the term; however, they cannot
be used on the same assignment. You should email [email protected] to
inform the course coordinator that you will be using a late day prior to the due date of
the assignment.
For assignments submitted in groups (i.e., with a partner), you are responsible for
the code you submit, even if it was partially or mostly implemented by your partner. If
your partner engaged in academic misconduct while developing part of the
assignment, you may be liable for the same penalties as your partner. So, make sure
that you both work on all parts of the assignment, instead of simply splitting the work
blindly.
Quizzes are individual work. You must not consult any resource other than the
permitted resource listed here (e.g., online or another person) while taking a quiz.
Permitted resource: a page (slides, companion, or your notes) describing the
instructions in the ISA. Here is an approved version download.
Lecture iClicker answers attributed to you must have have been entered by you
while you were "attending" the lecture. You must not ask anther student to answer
for you.
Video recordings are provided for registered students only. You must not
re-distribute recordings to anyone in any form.