Lab assignments are not graded and do not contribute to your final score. They are provided purely as practice material to help you build the skills and understanding you will need for the course. This applies from Lab 2 onwards; Lab 1 is a canvas quiz and is still graded.
Your understanding of the lab material (Lab 2 onwards) is instead assessed through a 1-hour paper-based lab exam, held during the first hour of your regularly scheduled lab session, not a separate exam slot. Students with accommodations will also write the lab exam during their scheduled lab session and will use the entire 3-hour lab period to complete the assessment.
Not every lab session includes an exam, sessions without one have teaching assistants give presentations about the labs, or serve as help sessions. You are free to work through the labs however suits you best; that said, the most effective way to prepare for the lab exam is to solve the corresponding lab yourself.
Lab exam questions are designed to closely reflect the content and skills covered in the corresponding lab, although they are typically narrower and less complex than the lab itself. Most exams will center on a programming task, but depending on the lab, they may also include theoretical questions, debugging exercises, or related problems.
The purpose of the lab exam is to assess whether you understood the concepts and skills that the lab was intended to teach. The learning objectives listed in each lab description provide useful guidance about what you should understand. However, they should not be treated as an exhaustive description of what may be assessed.
NEW: RISC-V Analyzer is a static analysis tool for linting RISC-V assembly code. Learn more at the homepage below:
Git and Github are very important version control management systems that are widely used by software practitioners in the industry. The sooner students in this area become familiar with these tools, the more productive and qualified they will be. Students are expected to learn the basics about github on their own. There are very tutorials in different forms on the web. Here is one that we found very useful:
This is a short video where Quinn Pham explains how to clone a lab and how to use the command line in a terminal to issue git commands:
The git command cheat sheet that Quinn refers to is here:
If you are new to Linux, here is a short video where Quinn Pham explains important basic commands:
Debugging can be a daunting task in assembly programming. In this video, Quinn Pham walks you through a debugging task:
These instructions will enable students to remotely login to the lab machines and to use the RARS simulator that is installed there.
You may also use X2Go, an open-source remote desktop tool, to connect remotely to the computers in the Computing Science Department. Here is the Department of Computing Science page detailing how to install and use X2Go. General information about X2Go can be found here.
View one of the following pages to set up your own RARS simulator environment on a Linux, macOS, or Microsoft Windows system.
These instructions are for your personal machines only. Lab machines are already equipped with RARS. Follow the instructions above.
Lab solutions are graded using the setup that exists on the lab machines.
Many of the common code patterns and structure seen in higher level languages such as for-loops, if-statements, etc are not present in assembly programming. However, they can be recreated in RISC-V, and a collection of tutorials and examples are provided which go through the basics.
Refer to this example to learn how to format and document the code.

| Session | Day/Time | Room | TA 1 | TA 2 |
|---|---|---|---|---|
| LAB-D01 | Tuesdays (2:00-4:50 PM) | SAB 3-36 |
![]() Keya Malhotra (kmalhot2@ualberta.ca) |
![]() Dhanrajbir Singh Hira (dhanrajb@ualberta.ca) |
| LAB-D02 | Tuesdays (5:00-7:50 PM) | UCOMM 2-070 |
![]() Ishaan Bagai (bagai@ualberta.ca) |
|
| LAB-D03 | Wednesdays (5:00-7:50PM) | UCOMM 2-070 |
![]() David Xia (fangzeng@ualberta.ca) |
|
| LAB-D04 | Thursdays (2:00-4:50 PM) | CSC B-02 |
![]() Mariana Dehghan (maedeh3@ualberta.ca) |
![]() Talyn Veugelers (tveugele@ualberta.ca) |
| LAB-D05 | Fridays (11:00-1:50 PM) | UCOMM 2-070 |
![]() Patrick Zijlstra (pzijlstr@ualberta.ca) |