CPSC 110 Syllabus


Land Acknowledgement

UBC's Point Grey Campus is located on the traditional, ancestral, and unceded territory of the xʷməθkʷəỷəm (Musqueam) people. The land it is situated on has always been a place of learning for the Musqueam people, who for millennia have passed on their culture, history, and traditions from one generation to the next on this site.


Welcome to CPSC 110! Computation, programs and programming play a vital role in the work of scientists, engineers, artists and other professionals: they allow us to organize, store, analyze and visualize information; create animations, music, and online communities; control devices in our environment; develop computational models and simulations; and much much more.

The major goal of this course is to introduce students to a systematic method for solving hard design problems. Going forward in your career you will of course learn additional techniques, but the design method covered in CPSC 110 will serve you well whenever you face a difficult design problem — whether it is program design or a problem from another field entirely. Previous students have said:

Studying computer science inspired me to think about problems differently and take a more systematic approach to them. Program design is applicable not only to computer science, but numerous areas of life. It is essential in the development of problem solving skills.

The course is designed to be interesting, accessible and useful for all UBC students — CS majors and non-majors alike. No prior programming experience is assumed, and very little math and science background is required. The course will also prepare you to learn more Computer Science skills and concepts in the future, either through formal courses or on your own.

Learning Goals

The learning goals for CPSC 110 are as listed below:

  1. Understand a systematic design process.
  2. Understand that programs are written both to run on computers and for people to read.
  3. Understand the relation between information and data.
  4. Understand that the structure of the data a program operates on determines many elements of the program's structure.
  5. Understand that one can replace repetitive code with an abstraction in a systematic way. Understand that this is at the heart of designing libraries.
  6. Understand that programs can be described using notations other than code, and that these models can facilitate program design.


CPSC 110 uses a variety of resources and online platforms. It is important that you are familiar with them and this section provides an overview of the resources you will be using this term.

Resource Description
Course Team


  • Norm Hutchinson (he/him): norm@cs.ubc.ca

Course Coordinator

  • Emily Fuchs (she/they): cpsc110-admin@cs.ubc.ca
    • Please note that the Course Coordinator's work hours are 8:30am-4:30pm Monday to Friday, and that they generally do not respond to emails outside of their work hours. You can expect to receive a response within 5 business days during standard workload periods and within 7 business days during peak workload periods (e.g., before the add/drop deadline).

Teaching Assistants

  • You can find the current term's TAs on the Course Team page. In a course as large as 110 we do not share TAs' emails to protect their privacy, but TAs are available to support you during labs, office hours, and on Piazza.
Office Hours

Office hours are a great place to get help with the course material, work on practice problems, and make friends. We encourage you to attend office hours as often as possible, not just when you need extra help. You are welcome to attend any office hours session regardless of your lecture or lab section. The instructor and TA office hours schedules will be posted on Piazza once the term begins.

Course Topics Schedule

This schedule allows you to determine when your specific lecture and lab section covers which material (please check your course schedule in the Student Service Centre to see which lecture and lab sections you are registered in, and when they meet). Problem set deadlines and midterms are also included on the course topics schedule. We recommend you bookmark this schedule and refer to it often, as you are responsible for all the material from all the modules that are listed.

For each week there are 3 rows:

  • The first row is the edX module covered by a lecture on that column's day. Midterms are also shown in this row.
  • The second row is the number and name of the lab on that column's day.
  • The third row indicates problem set deadlines on that column's day.
DrRacket We will be using the programming tool DrRacket this term. You can learn more about DrRacket on the Setup page. We strongly recommend that you do not perform any large updates (or operating system changes) to your computer or to DrRacket during the term, but especially not right before exams.
edX Edge

This course is based on the edX Systematic Program Design series, and therefore much of the material we will use through the term will be hosted on a special version of edX called edX Edge. This includes:

  • EdX modules, including videos and questions, which you will work through before and after lectures
  • Materials to support problem sets and labs

Although we will be using edX extensively throughout the term, you should treat the numbered section materials in edX like a textbook. That is: most of the numbered section edX material will pertain to our course, but if there are differences between lecture and edX then what you see in lecture takes precedence.


The course discussion forum is hosted on Piazza, which we will use throughout the course for the following:

  • Posting important announcements, such as information about exams
  • Asking/answering questions about the course material

Your grades for all components of the course (lectures, labs, problem sets, midterms, etc.) will be available through Canvas. You can also find Zoom links for lecture and online office hours through the Zoom tab on Canvas.

NOTE: We do not check or respond to messages sent through Canvas mail. Your first target if you have a question is to ask it on Piazza. But, if you have a personal matter that requires you to contact your instructor or the Course Coordinator, please email them directly.


Lectures and online office hours will be held on Zoom. All other course activities are in-person.

iClicker Cloud You will use iClicker Cloud to respond to lecture participation questions during lecture, which are worth 10% of your final grade in the course. Please note that you must attend your registered lecture section to receive credit for your answers.
Gradescope We occasionally use Gradescope to facilitate hand grading of exams, however, as mentioned above your grades will be available through Canvas. You do not need to sign up for Gradecope and we will provide instructions outlining how to access Gradescope after the first midterm.
Practice Exams

This page contains copies of exams from previous semesters. Do not assume that this term's exams will exactly follow the format of previous exams. Also note that some elements of the course change every term. The most recent exams are the best practice, the old exam topics will be relevant, but some details of the questions will be less relevant.

We are in the process of deploying auto-graders for practice exams! Here are a couple of important caveats:

  • This is a time consuming process. Because the underlying auto-grader functionality has been evolving rapidly, we have to bring each grader up to date before we can deploy it. (Remember, software is always changing.) As a result, not every practice exam has a grader.
  • Practice exams are indicative of questions we have asked before, but do not assume they include every kind of question we might ever ask. You should also practice with problem sets, labs, and the problem bank.
  • Most importantly, do not assume that the way one of these graders assesses a problem or assigns weights to a problem is exactly what will happen on an exam.
  • There may be mistakes in the practice exams or practice exam graders. If you see a mistake, please report it on Piazza.


As a CPSC 110 student, you are responsible for reading, understanding, and following these policies. If anything is unclear to you, please ask for clarification on Piazza. Unfortunately, claiming that you unintentially violated a course policy because you didn't understand it is not a valid excuse, and the consequences will be the same regardless of your intention and/or understanding.

Policy Description
Academic Integrity

Part of the course team's job is to guide your growth as a member of the academic community. Upholding academic integrity by engaging with existing knowledge respectfully and contributing your own work is essential to this. Sometimes students who are experiencing a lot of pressure or stress feel that the only way to deal with the situation is to cheat. Please do not do this. Instead, reach out to the Course Coordinator and we will find a way to help you through the difficulties you are facing. Cheating is never the right or only option, and every student we have had to report for academic misconduct has regretted their actions and wished that they had made a different choice.

The Department of Computer Science has a detailed Policy regarding collaboration on academic work in addition to UBC's Academic Honesty and Standards Policy and definition of academic misconduct. As a UBC student, it is your responsibility to read, understand, and follow these policies.

In CPSC 110, our specific rules about academic integrity and collaboration are as follows:

  1. All work that you submit in the course must be your own work. This means that you must start your designs from scratch (i.e. entirely from the beginning without using anything that already exists), or from a starter file that the course team provides. Submitting any amount of copied code is considered academic misconduct. This includes, but is not limited to, referencing or copying:
    • Any solutions or code found online, including code produced by generative AI tools (e.g., ChatGPT).
    • Any solutions or code developed by another person.
    • Any solutions or code posted by the course team in a previous or current term of CPSC 107 or CPSC 110.
    • Any solutions or code you wrote during a previous term of CPSC 107 or CPSC 110.
    • Any solutions or code you wrote during another course.
  2. You must abide by our problem set Policy. That is:
    • You can work on each problem set alone or with one other student in the course. You can work with different partners throughout the term, but each problem set must be done either alone or with only one other student. If you choose to work with a partner, every submission of your problem set must contain both students' CWLs in the CWL tag.
    • You are not permitted to discuss the problem set with anyone other than your partner, if you choose to work with a partner. Working through problem sets on your own or with a partner results in the highest degree of learning and prepares you for exams.
    • The Piazza discussion forum is the only place that you are permitted to ask questions about problem sets.
  3. No collaboration of any kind is permitted during the midterms or during the final exam.
  4. You can discuss lecture problems, practice problems from the problem bank, and practice exams with other students and TAs during lectures, labs, and office hours, but again, you are not permitted to copy or share any code.

Any violation of the rules listed above will result in a 0 on the work containing misconduct and will be reported, in writing, to the Dean of Science's office.

Respectful Environment

Everyone involved with CPSC 110 is responsible for understanding and abiding by the UBC Statement on Respectful Environment for Students, Faculty and Staff. The statement speaks to our freedoms and our responsibilities, and provides the guiding principles to support us in building an environment in which respect, civility, diversity, opportunity and inclusion are valued.

Additional Resources

Health & Safety

Everyone's safety and wellbeing are our top priority and it is important that we all feel safe and comfortable while engaging in in-person course activities together. While there is no general requirement to wear a face covering (mask) on UBC premises, please respect the choices of individuals who choose to do so.

Do not attend in-person course activities if you are ill and/or experiencing any symptoms (e.g., fever, coughing, sneezing, etc.) that put others at risk. Stay home and take the time you need to rest and recover. Please see the Absences/Missing Assignments section for information on what to do if you are unable to attend in-person course activities due to illness.


Students who are registered with the Centre for Accessibility must book their exams for CPSC 110 through the CFA exam portal in order to receive accommodations, such as extended time or a private space. Unfortunately the course team is not able to provide accommodations to students who are not registered with the CFA, or to students who do not register for their exams through the CFA exam portal before the specified deadline. Please note that students do not need to send their accommodation letters to the course team, as we can access a copy in the CFA exam portal.

Absences/Missing Assignments

Attendance is mandatory and all material from the course is examinable. We are not able to provide extensions (a later due date/deadline) for any assignments in the course under any circumstances.

Please note that an exam scheduled outside of class time that conflicts with a regularly scheduled lecture or lab is not considered a conflicting responsibility. When an exam outside of class time conflicts with a regularly scheduled lecture or lab, it is the course with the exam's responsibility to provide scheduling accommodations. Students are responsible for contacting the instructor or Course Coordinator for that course well in advance of the exam to request accommodation.

If you miss a lab, problem set, or midterm, you may be able to receive an exemption and you should submit an academic concession form no later than 7 days after the missed assignment. Please note that the academic concession form will close for the term at 11:59 PM on Friday, April 19.

Receiving an exemption for a lab, problem set, or exam means that you you will not receive 0 for missing that assignment. Exemptions are recorded as "EX" in Canvas — this is our way of indicating that we need to omit that grade when calculating final grades at the end of the term. Note that recieving an exemption does not excuse you from needing to know the course material that you missed — it is your responsibility to catch up on any course material that you miss.

If you do not reqest academic concession for a missed assignment in accordance with this Policy or UBC's Policy on academic concession, you will receive 0 for that assignment. As stated in the Assignments and Grading section, your lowest lab grade and your lowest problem set grade will be dropped at the end of term, in addition to any exemptions granted by the Course Coordinator.

If you miss a lecture:

  • Work through the lecture activities for practice while reviewing the lecture recording. Post on the Piazza discussion forum and/or attend office hours if you need additional support.
  • We are not able to provide exemptions for missed lecture participation questions, but we automatically drop 1 week (2 classes) of students' lowest lecture grades to allow for the occasional missed lecture or technical issue.

If you miss a lab:

  • Submit an academic concession form no later than 7 days after the lab section you missed. Work through the lab for practice and post on the Piazza discussion forum and/or attend office hours if you need additional support.
  • Students are only permitted to attend their registered lab section and cannot attend a different lab section to complete missed lab work.

If you miss a problem set:

  • Submit an academic concession form no later than 7 days after the problem set you missed. Work through the problem set for practice aand post on the Piazza discussion forum and/or attend office hours if you need additional support.
  • Do not email your problem set to the course team if you miss the deadline. Students are responsible for ensuring that they have enough time to resolve errors and submit their work before the cooldown period and deadline. We do not accept any problem set submissions via email under any circumstances.

If you miss a midterm:

  • Submit an academic concession form no later than 7 days after the midterm you missed. Work through the midterm questions for practice and post on the Piazza discussion forum and/or attend office hours if you need additional support. Try to do this before reviewing the solutions if possible, but make sure that you do review the solutions at some point.

If you miss the final exam:

  • Students who miss a final exam must apply for deferred standing through their faculty's academic advising office no later than 48 hours after the final exam they missed. Please see the Standing Deferred and Supplemental exams page for more information.
  • Note that students who do not complete sufficient labs, problem sets, and midterms during the term or who are otherwise not considered to be in good academic standing may not qualify for deferred standing.
Regrade Requests

If you believe one of your lab or problem set grades is incorrect, you may be able to receive a regrade and you should submit a regrade request form no later than 7 days after grades have been released for that assignment. Do not submit a regrade request form before final grades for the assignment are released on Canvas. Regrade requests for exams must be submitted through Gradescope and we will share share further details on Piazza after the first midterm. We do not accept regrade requests for lecture questions or lecture starters. Please note that the regrade request form will close for the term at 11:59 PM on Friday, April 19.

You must specify which parts of your solution you believe were graded incorrectly, explaining why your answer should be marked correctly with reference to the rubric and the posted solution, if available. Regrade requests that either question the rubric or do not explain why the answer should be considered correct according to the rubric will not be considered. Note that we reserve the right to regrade the entirety of any assignment submitted. When requesting a regrade, your old grade will be discarded and your new grade could be higher or lower. Any regrade request that does not comply with this Policy will be denied without written reply.

Examples of unacceptable explanations are:

  • I disagree that this is a failing assignment.
  • The rubric puts too much weight on this.
  • I do not understand why my answer is incorrect.

Examples of good explanations are:

  • Item 3 of the rubric says that the signature should be Number -> Image, which is what my answer has.
  • Item 5 of the rubric asks whether the template is apparent. I have preserved the template structure as required in my function definition.
Wait List

Course instructors and staff in the Computer Science Department do not have the ability to register students in courses that are full or restricted. Please do not contact instructors, Course Coordinators, or CS Advising to ask about your wait list position or bypassing the wait list.

CPSC 110 follows the CS Department's wait list Policy until the first day of classes (Monday, January 8). On Monday, January 8, registration in the course and on the wait list(s) will be blocked and students who are already registered on the wait list(s) will be moved into the course according to the priorities described in the CS Department's wait list Policy linked above. This means that if you want to get into the course, you need to register in the course or on one of the waitlists by the end of the day on Sunday, January 7. However, please note that registering for the wait list does not guarantee that you will get in to the course.

If you are not registered in the course or wait list(s) before registration is blocked, then you will not be able to take the course that term, even if all of the students on the wait list are moved into the course and seats appear to open up. There are a few reasons behind this policy, the most important being that our data shows that students who are moved in to the course after the first day have a significantly difficult time catching up and doing well in the course. Some other reasons are that CPSC 110 is usually overenrolled by 10-15% when registration opens and remains overenrolled up to the add/drop deadline, and that this approach more straightforward since students spend less time wondering whether or not they are going to get into the course and can focus their energy elsewhere.

We recognize that the demand for CPSC 110 is very high due to it being a pre-requisite for other Computer Science courses and a required course for a number of programs. Please know that the department is doing its best to expand the course, however, our main priority is setting students up to do well in the course rather than overexpanding it at the expense of students' learning experience.

UBC Policies and Resources to Support Student Success

UBC provides resources to support student learning and to maintain healthy lifestyles but recognizes that sometimes crises arise and so there are additional resources to access including those for survivors of sexual violence. UBC values respect for the person and ideas of all members of the academic community. Harassment and discrimination are not tolerated nor is suppression of academic freedom. UBC provides appropriate accommodation for students with disabilities and for religious and cultural observances. UBC values academic honesty and students are expected to acknowledge the ideas generated by others and to uphold the highest academic standards in all of their actions. Details of the policies and how to access support are available here.

Assignments and Grading

The intended grading schemes for the course are below, followed by grading policies and a detailed description of how each component is graded. The instructors reserve the right to change the grading scheme for the course at any time, however, if the grading scheme is changed after the add/drop deadline, we will notify you as required by UBC's syllabus Policy. Please note that it is not possible to adjust the grading scheme for an individual student under any circumstances, except when an exemption has been provided for one or more of the midterm exams.

Grading Scheme
Component Weight
EdX Module Questions 0%
Lectures 10%
Labs 10%
Problem Sets 15%
Midterm 1 15%
Midterm 2 20%
Final Exam 30%

Grading Policies

Midterm Exemption Policies

Component Description

Lecture topics are shown on the schedule and each lecture has a corresponding page in the Lecture Index. You should check these pages daily as they contain information on how to prepare for lecture, how to participate during lecture, and what to review after lecture.

Prior to lecture you will be expected to work through one or more edX numbered videos. Most lectures will begin with iClicker Cloud questions based on the pre-work you did on edX. There may also be additional iClicker Cloud questions throughout lecture, based on the work we are doing at that time. Answering these questions correctly during lecture is what constitutes your lecture grade in the course.

During lecture, there will be a mix of instruction and you working on short programming exercises that you submit to the auto-grader through SPD handin. While submitting the exercises during lecture does not contribute to your lecture grade, working through them with the instructor during lecture is essential to your learning. You will receive real-time feedback from the auto-grader during lecture, and you have until 10:00 PM on the day of your lecture to continue working on the exercies if you are not able to finish them during lecture. Keep in mind that the best way to learn the material is to work through the lecture exercises with feedback from the auto-grader, before you review the solutions.

Lecture recordings will be provided after each lecture. Please note that these lecture recordings are a supplement, not an alternative to attending your lecture section. Our lectures are based on live activities which research shows improves learning. You should use the recordings for review or to catch up if you must, on occasion, miss a lecture.


Lab topics are shown on the schedule and each lab has a corresponding page in the Labs section of edX. You must go to the specific lab section that you are registered in and you must arrive at your lab on time. If you do not attend your lab on time and participate actively and respectfully throughout the entire 2 hours and 50 minutes, you will lose all or part of your lab grade that week.

Labs involve the design of one or more programs graded by the auto-grader, as well as a check-off question asked by your TA that you must answer before leaving the session. Check-off questions are intended to test your understanding of the programs you designed.

Do not work on the lab problems prior to your scheduled lab time. Working on the lab problems during lab is necessary and valuable to your learning. If you come to your lab with some or all of the lab problems completed ahead of time, your TA will ask you to start over.

Your grade for each lab is calculated using your auto-grader score and the score that your TA gives you out of three for attendance, behaviour, and check-off. The grading scheme is as follows:

  • If you get 3/3 for your TA score, your lab grade will be your auto-grader score
  • If you get 2/3 for your TA score, your lab grade will be capped at 80%
  • If you get 1/3 for your TA score, your lab grade will be capped at 60%
  • If you get 0/3 for your TA score, your lab grade will be 0
Problem Sets

Problem set deadlines are shown on the schedule, and each problem set has a corresponding page in the Problem Sets section of edX. You should check these pages regularly for problem set starter files, solutions, and feedback. You should also review the Academic Integrity Policy before starting your first problem set.

Problem sets involve the design of one or more programs graded by the auto-grader, as well as an assessment with your TA that will take place during the next week's lab. Problem set assessment questions are intended to test your understanding of the programs you designed. Some weeks you will have a shorter TA assessment and some weeks you will have a longer TA assessment, however, you will not know which assessment you will have ahead of your scheduled lab time.

Your grade for each problem set is calculated using your auto-grader score and your TA assessment score. Over the course of the term, your TA assessment score will contribute to approximately 1/3 of your overall problem set grade. The grading scheme is as follows:

  • If you have the short TA assessment, your problem set grade is 75% auto-grader score and 25% TA assessment score
  • If you have the long TA assessment, your problem set grade is 50% auto-grader score and 50% TA assessment score

You can work on each problem set alone or with one other student in the course. You can work with different partners throughout the term, but each problem set must be done either alone or with only one other student. If you choose to work with a partner, every submission of your problem set must contain both students' CWLs in the CWL tag. Problem set partners should work through the whole problem set together, rather than splitting up the problems and/or taking turns doing the whole problem set. Please note that if you choose to work with a partner, you may receive different final problem set grades if you and your partner perform differently on your TA assessment, even though your auto-grader score is the same.

The Piazza discussion forum is the only place you are permitted to ask questions about problem sets. Questions can only be about the problem statement. Questions that contain information about how you are solving the problem or what you understand about the problem will be deleted. An instructor will answer questions that appear to identify mistakes in the problem sets, but to the greatest degree possible you are expected to work through the problem sets yourselves. Getting too much help on problem sets leads to poor performance on exams, where that help is not available.


Midterms are shown on the schedule and the final exam is scheduled during the final exam period by the university. Exams will be invigilated in-person in large rooms on campus to ensure space between students for social distancing and to discourage academic misconduct. You will be required to bring a computer to your exam room to write your exams. We will post more detailed information on Piazza in advance of the first midterm.

Midterm 1: Tuesday, February 6 from 6:00-8:00 PM

  • Will cover all material up to and including the ref module (all material means videos, lecture, problem sets, labs, lecture notes, etc.).
  • Deadline to submit Midterm 1 conflict form: 11:59 PM on Wednesday, January 24.

Midterm 2: Tuesday, March 12 from 6:00-8:00 PM

  • Will cover all material up to and including the genrec module (all material means videos, lecture, problem sets, labs, lecture notes, etc.).
  • Deadline to submit Midterm 2 conflict form: 11:59 PM on Wednesday, February 28.

Final Exam: April 16-27, date and time TBA

  • Will cover all material in the course (all material means videos, lecture, problem sets, labs, lecture notes, etc.) with the exception of the HtDW module.

Frequently Asked Questions

  1. The lecture section I want to take is full / I am on the wait list for CPSC 110. What should I do?

  2. I'm registered in a lecture section, but all the lab sections that fit my course schedule are full. What should I do?

  3. I'm registered in a lecture and lab section, but I want to switch into a different lecture or lab section that is full. What should I do?

  4. I'm registered in the course but there has been a delay in my Visa processing, and I will not arrive in Vancouver until after the term starts. What should I do?

  5. Can I use any kind of computer for the course?

  6. Are lecture recordings provided?

  7. Why is one of my grades "EX" in Canvas?

  8. Are total grade calculations for assignment groups in Canvas accurate?

  9. I have a different question about CPSC 110. Who should I ask?

How to Do Well in This Course

Here are some tips for doing well in this course. We suggest you read this every week or so for the first few weeks of the course, that will help incorporate these ideas into your work.

  1. Program design is something you learn by doing — if all you do is watch the videos and look at the solutions to lecture/practice problems, you will almost certainly fail this course. Instead you should:
  2. In the words of a former student:

    It's funny how repetition in actually doing the work leads to it all of a sudden making sense to me. I can't explain it. I don't have a sense of growing understanding. I have confusion, repetition, and suddenly a sense of understanding. It's not coming through watching or reading, though. It comes from replicating what I've watched several times. This has happened repeatedly for me in this class. I start the week with a sense of accomplishment, well being, peace of mind, and confidence from the victory over last week's homework. I am then submerged in doubt, confusion, and erm, terror. (Why not be melodramatic?) Suddenly there is a working epiphany and I have victory again.
  3. Do not worry about making mistakes! If you make a mistake and get an error message read the error message, use it to identify the problem, and then correct it.
  4. If you are unsure whether something works, try it! For example, the best way to answer a "does it work to do X" question is by trying it.
  5. Stay caught up, even on the early material which may seem slow/easy but actually isn't — really internalizing it takes time and practice. This material also lays the foundation for the much more complex problems that follow.
  6. When taking notes during a lecture video, focus on recording the design process, not the end solution (which is always available by pausing the video).
  7. It is better to work a bit every day (e.g., 1 hour) than once a week for a large chunk of time (e.g., 5 hours).
  8. Always be able to identify what step of the recipe you are on — if you are working on a design problem and you don't know how to proceed step back and ask yourself questions like: What step of the recipe am I at? What should I be doing at that step? Where should I be looking to figure out what to write? Try looking up a similar problem that you have already solved to see what you did at the corresponding step.
  9. If you get stuck for more than 10 minutes on a design problem, get help. Post to the discussion forum and see if someone has a suggestion. Make sure to include what step of the recipe you are at in your post!

How to Begin

The Setup page provides instructions on how to set up your computer and online accounts so that you are ready to work in CPSC 110. These instructions can be followed either before your first lab or during your first lab. These instructions assume that you already have a Campus-Wide Login (CWL) account.