0% found this document useful (0 votes)
477 views

CS213 Syllabus

This document provides a course syllabus for CPSC 213 that covers the following topics: - The primary goal is to develop an understanding of computation from the hardware level up. Students will implement an instruction set in a simulator and examine how programming languages are compiled. - The course covers devices, asynchrony, threads, and synchronization. Students will learn how these concepts are implemented and used in programming. - Assessment includes assignments, quizzes, a midterm, and a final exam. The midterm can be improved based on performance on overlapping questions in the final exam.

Uploaded by

Carrie Liu
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
477 views

CS213 Syllabus

This document provides a course syllabus for CPSC 213 that covers the following topics: - The primary goal is to develop an understanding of computation from the hardware level up. Students will implement an instruction set in a simulator and examine how programming languages are compiled. - The course covers devices, asynchrony, threads, and synchronization. Students will learn how these concepts are implemented and used in programming. - Assessment includes assignments, quizzes, a midterm, and a final exam. The midterm can be improved based on performance on overlapping questions in the final exam.

Uploaded by

Carrie Liu
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Course 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.

All administrative questions should be directed to our course coordinator at


[email protected].

You can contact Robert at [email protected], Jonatan at [email protected], and


Jordon at [email protected].

See the Contacts page.

Textbook
The primary textbook for the course is the 213 Companion.

Additional material is found in the book: Computer Systems: A programmer's


Perspective (3rd edition), by Randal Bryant and David O'Hallaron.

See the Textbook and References page.

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.

After this Course You Will ...


● Be a better and full-stack programmer.

○ have a deeper understanding of the features of a programming


language;
○ understand the execution of your program at various levels of
abstraction;
○ be able to more easily learn new programming languages;
○ be able to evaluate design tradeoffs in considering languages
most appropriate for solving a given problem.
● Appreciate that system design is a complex set of tradeoffs: a system will
not have exactly one optimal answer, there are often many sub-optional
answers. Experience with tradeoffs prepares you to deal with tradeoffs in
design in real world programming scenarios.
● Develop distinctions between static and dynamic components of programs
and systems and be able to describe their implications.
● Utilize synchronization primitives to control interaction in various situations
including among processes, threads, and networked communication.
● Understand how computer systems work.

Course Learning Outcomes


1. Using a hardware based model of execution, reason about the limitations,
vulnerabilities and idiosyncrasies of the behaviour of a particular program,
specifically concerning performance, bugs and security vulnerabilities.
2. Using a hardware based model of data, reason about how programs
access data using different types of variables, including the implicit and
explicit use of memory references.
3. Translate a statement from a high-level programming language into
assembly language; from a large block of assembly language, identify
groups of instructions that correspond to high level language features and
then write an equivalent high level programming language expression.
4. Identify and correct memory management bugs, particularly in languages
with explicit deallocation, and use best practices to write code that is less
likely to incur such issues.
5. Compare and contrast how Java and C are translated into a language the
CPU understands; identify common features that are implemented in
significantly different ways in either language (for instance, memory
management, and the duality of subtype polymorphism in Java and
function pointers in C). In doing so, explain the tradeoffs associated with
each.
6. Reason about the execution of concurrent programs, incl. real time
interrupts, and use both asynchronous programming and threads to write
concurrent and/or parallel programs. Explain the tradeoffs associated with
each.
7. Solve problems using monitors, condition variables and semaphores.

Course Rules and Academic Integrity — READ


THIS CAREFULLY
Most assignments will be individual work; some assignments may allow you to work
with no more than one partner. You must not share any portion of your assignment
with anyone else. You must not consult online or other resources that include any
portion of a solution to an assignment. You must not use a tutor to help you with the
assignment. All work that you submit via handin (or by any other means) is assumed
to be your own work unless you explicitly indicate otherwise.

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.

Violation of these course rules constitutes academic misconduct. Other examples of


misconduct and a more detailed description can be found on the Academic Conduct
page.

You might also like