Labs are your opportunity to refine your understanding of programming concepts covered in class, assignments, and lecture. Repetition is an important part of programming skill development; lab exercises are designed to promote this practice. We want you to see problems from different perspectives. So you can expect a lab exercise to ask you to complete a task similar the ones you will be working on in your assignments.

If you want to become a strong programmer, then you should view labs as an opportunity to hone your skills. The more code you write, the better you will get, trust us!

Lab Overview

There will be a total of 20 labs held this quarter. You are free to attend any of the labs that cover topics of interest or have value to you. You must complete the lab exercise during the lab time you have registered to attend. Late submissions (we will allow a 10-15 minute grace period) will not count towards your lab total. Therefore, it is better to submit incomplete work than to submit late or not at all.

Each lab you complete will be worth 6 points. To receive the full lab credit of 50 points for the entire course, you must complete a minimum of 8 labs. If you complete 8 labs and receive full credit for each, you will be awarded a 2 point bonus. Otherwise, you may need a 9th lab to get you to the full 50 points.

A few tips when attending labs:

Lab time is to be used for lab exercises only.

Do not ask your lab TA or tutor for help with class assignments.

Do ask your lab TA or tutor for help with the lab exercise.

Arrive on time and find your TA or tutor (when in-person) to request a link to the lab exercise.

Labs should be completed individually, though you can discuss the exercise conceptually with a classmate.

Lab Schedule


Lab schedule last revised 2/28.

The following lab schedule is mostly set. However, if we determine that during the quarter there are concepts that are not resonating with a significant portion of the class, we may revise a lab topic to accommodate. We will make an announcement when any changes to the lab schedule occur.




Wk 1

No Lab

No Lab

inputs and functions

Wk 2


working with files


Wk 3

No Lab

testing with assert

working with modules

Wk 4

namespaces and naming

writing and using classes


Wk 5

No Lab

No Lab

No Lab

Wk 6



create a protocol

Wk 7

managing data

HTTP requests

request processing (canceled)

Wk 8

No Lab

advanced inheritance


Wk 9

exception handling strategies

callback functions

responsive GUI’s

Wk 10

Tkinter event loop



The topics presented here are intentionally high-level and abstract. You will find out what the actual exercise for each topic will be when you arrive at the lab, not before. If you need special accommodations (time, remote, alternative material delivery) for labs, please let us know. We are willing to work with you on an individual level to ensure that you are able complete the required labs.

How we will grade your submission

We want labs to be low-stress and fun for you, so don’t feel pressured to get everything right. We will typically just review your code before assigning a grade. If you would like feedback or to discuss your work in detail, feel free to reach out to your TA.

Your goal should not be perfection! You will have plenty of time for that on your assignments. Rather, simply put forth your best effort to complete the exercise in the time allotted. If we see that you have tried you will receive some credit, regardless of whether your code works or not.

Labs will be graded on a 6 point scale, with the 6 points being allocated completely to whether or not you submitted something that meets all of the above requirements. The following rubric will be used:

Attended lab | 1.0 pt

Did the student attend lab?

Did the student work on the exercise?

Exercise work | 3.0 pts

Did the student sufficiently attempt to complete the exercise?

Did the student write a reasonable amount of code for the exercise?

Exercise complete | 2.0 pts

Did the student complete the exercise?

Does the student’s program sufficiently complete the exercise?

Good luck. Try to have some fun with your labs! This work should not be stressful. Remember, choose the labs that are right for you. It is in your best interest to attend labs that cover concepts that you are not as familiar with when writing code rather than the labs that you think will be easy.