CPSC 110 Syllabus

[last updated October 13]

Overview

Welcome

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.

Course Resources

In CPSC 110, we use a variety of different online platforms and therefore it is important that you are familiar with them. This section provides an overview of the platforms we will be using this term.

Platform Description
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 edX. This includes:

  • EdX modules, including videos and questions, which you will work through before and after lectures
  • Materials to support lectures and labs
  • Practice problems (in the problem bank)
  • Other reference material (including the design recipes and glossary)

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.

Zoom Synchronous online lecture and lab sessions will be held on Zoom.
Canvas

Your grades for all components of the course (lectures, labs, problem sets, midterms, etc.) will be available through Canvas. You can also find the Zoom links for synchronous online lecture and lab sessions through the Canvas-Zoom interface.

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 (see below). But if you have a personal matter that requires you to contact your instructor or the course coordinator, please email them directly.

Piazza

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

  • Posting questions and answering other student's questions
  • Posting additions/corrections to lecture notes and problem sets
  • Posting information about exams
Gradescope We use Gradescope to facilitate the grading of problem sets and exams, however, as mentioned above your grades will also be available through Canvas. You do not need to sign up for Gradecope and we will provide instructions about how to access your graded problem sets and exams after the term starts.
Course Team

While the course team is not an online platform, we are a valuable resource for the course!

Instructors

  • Gregor Kiczales (he/him/his): gregor@cs.ubc.ca
  • William Bowman (he/him/his): wilbowma@cs.ubc.ca
  • Joanna McGrenere (she/her/hers): joanna@cs.ubc.ca

Course Coordinator

  • Emily Fuchs (she/they): cpsc110-admin@cs.ubc.ca

Teaching Assistants

  • TAs are available during labs, office hours, and on the Piazza discussion forum
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.
Practice Exams This page contains copies of exams from previous semesters. Do not assume that this term's exams will exactly follow the form 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.

Course Organization

The table below outlines the three major components of CPSC 110: lectures, labs, and problem sets. Use this table as a general overview of how these components work. Note that this is not an exhaustive list of what is expected of you in the course you will also be expected to work through weekly modules on edX and complete exams. See the grading section for a grading breakdown and more details about all the required components.

Component Attribute Description
Lectures Where it is Lecture section of edX (lecture material), assigned lecture hall (location available on the SSC), and Canvas (Zoom sessions and recordings)
What is marked Lecture activities completed during class
When to complete During your scheduled lecture section
Labs Where it is Labs section of edX (lab material), assigned lab room (location available on the SSC), and Canvas (Zoom sessions)
What is marked Problems in lab starter files (autograded) and lab check-off question (TA graded)
When to complete During your scheduled lab section
Problem Sets Where it is Problem Sets section of edX
What is marked Problems in problem set starter file (autograded) and TA assessment (TA graded)
When to complete Before the deadline (see the schedule)

Schedule

There are many moving parts to CPSC 110 that you will need to be familiar with this term. This section provides an overview of the various schedule components for the course.

Component Description
Course Schedule

Please check your course schedule in the Student Service Centre to see which lecture and labs sections you are registered in, and when they meet. All schedule times are listed in Vancouver’s time zone (PST or PDT depending on the time of year).

Term Schedule

This schedule allows you to determine when your specific lecture and lab section covers which material. Problem set deadlines and midterms are also included on this 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. Individual instructors will post notes in the Lecture section of edX to tell you what you need to watch before lecture to prepare and after lecture for review.

For each week there are 3 rows:

  • The first is which edX module a lecture on that day covers. Midterm exam times are also shown in this row.
  • The second row is the number and name of a lab on that day.
  • The third indicates problem set deadlines. Problem sets are due via the SPD handin button on the dates specified.
Recipe Elements Schedule

This schedule shows which design recipe elements are required in each module of the course. It is difficult to understand what this table means during module 1a and 1b of the course, so do not worry about it then. But come back to it in module 2 and every module afterwards to know exactly which design recipe elements you must include in problem sets and exams.

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 whenever you like, not just when you need extra help. You are welcome to attend any office hours session regardless of your lecture or lab section.

Instructor Office Hours - Zoom links will be available on Canvas and Piazza.

  • Gregor: Monday 11:00 AM to 1:00 PM and Wednesday 1:00 PM to 3:00 PM
  • Joanna: Monday 1:00 PM to 3:00 PM
  • William: Tuesday 11:00 AM to 1:00 PM

TA Office Hours

  • Zoom links will be available on Canvas and Piazza.
Exams

Midterm 1: Wednesday, October 6 at 7:00 PM

  • Will cover all material up to and including the ref module (all material means videos, lecture, problem sets, labs, lecture notes, etc.).

Midterm 2: Monday, November 8 at 7:00 PM

  • Will cover all material up to and including the genrec module (all material means videos, lecture, problem sets, labs, lecture notes, etc.).

Final Exam: TBA

  • Will cover all material in the course.

Grading

The intended grading scheme for the course is below, followed by a more detailed description of each component. The instructors reserve the right to change the grading scheme at any time.

Component Weight
edX Questions 0% *See note below
Lectures 15%
Labs 10% *See note below
Problem Sets 15%
Midterm 1 15%
Midterm 2 20% *See note below
Final Exam 25% *See note below

Notes:

Component Description
Lectures

Lecture topics are shown on the schedule and each lecture has a corresponding page in the Lectures section of edX. You should check these pages regularly as they contain information to prepare for the lecture, information needed during the lecture, and information needed after the lecture. You will be expected to complete and submit short programming exercises during lecture.

We will provide live streams of the in-person lecture sections to accommodate students who may not be able to arrive on campus before the beginning of the term, and to encourage students to stay home if they are ill but feel well enough to participate online.

We will also provide recordings of all the lecture sections, both in-person and online. Please note that lecture recordings are a supplement, not an alternative to live lectures. Our lectures are based on live activities which research shows improves learning. You must complete the lecture activities for your lecture section during your scheduled lecture time to receive credit for the lecture activities. You should use the recordings for review or to catch up if you must, on occasion, miss a lecture.

Labs

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 throughout the entire 2 hours and 50 minutes, you will lose all or part of your lab grade that week.

Each lab will involve the design of one or more programs graded by the autograder, as well as a check-off question asked by your TA that you must answer before leaving the lab. Check-off questions are intended to test your understanding of the programs you were asked to design during the lab.

Your grade in each lab is calculated using your autograder 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 autograder 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

Do not work on the lab problems prior to your scheduled lab time. Working on the lab problems during lab is a necessary and valuable opportunity to master the material. 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.

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. We do not provide extensions and late problem sets will not be accepted.

Each problem set will involve the design of one or more programs graded by the autograder, 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 were asked to design. Some weeks you will have a short 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 autograder score and your TA assessment score. Over the course of the term, your TA assessment score will contribute to 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% autograder score and 25% TA assessment score
  • If you have the long TA assessment, your problem set grade is 50% autograder score and 50% TA assessment score

You are free to work on your problem set with one other student in the same lecture section. If you do so, then you must submit only a single shared assignment for both students. You and your partner should work together on the problem set rather than just comparing notes at the end. You can change partners through the term, but each problem set must be done either alone or with a single partner. Please note that if you choose to work with a partner on your problem set, you may receive different problem set grades if you and your partner perform differently on your TA assessment, even though your autograder score is the same.

Please note that the Piazza discussion forum is the only approved forum for questions about problem sets. An instructor will answer questions that appear to identify mistakes in the problem sets, but to the greatest degree possible you are expected to do the problem sets yourselves. Getting too much help on problem sets often leads to doing very poorly on exams where that help is not available.

Exams

Midterms are shown on the schedule, and we will post more detailed information on Piazza as we get closer to the midterm dates. The final exam is scheduled during the final exam period by the university, and we will post more detailed information on Piazza as we get closer to the final exam date.

The expectation in this course is that major assessments (i.e. midterms and the final exam) will be written in person. If you are in situation that prevents you from coming to campus for exams (e.g. geographic location, medical circumstance, or extenuating circumstances), you must apply for alternate format assessments through Science Advising. Please note that the deadline to apply is 11:59 PM PDT on Monday, September 20.

Course Policies

Policy Description
Wait List

CPSC 110 follows the CS Department's wait list policy. Until classes start, all wait lists are managed according to the priorities described in the CS Department's wait list policy and there isn't anything that an instructor or course coordinator can do to get you into a lecture section that is full. Please do not contact instructors or course coordinators to ask about your wait list position or to request the ability to jump the queue.

Each term a number of students drop the course and some space opens up in the course for students from the wait list. So if you would like to get into the course, you must:

  1. Register on (one of) the wait list(s).
  2. Enroll in edX (see the setup page).
  3. Complete the pre-lecture work.
  4. Attend and participate in lecture.
  5. Complete and submit problem sets.
  6. Complete the labs, but do not actually go to lab.
  7. Write the wait list quiz.

The wait list quiz will take place online at 7:00 PM PDT on Thursday, September 16. We will provide more information about the quiz to wait-listed students once the term begins. The wait list quiz is mandatory to be enrolled in the course after the term starts, however, writing the wait list quiz does not guarantee that you will get in to the course.

Note that although students on the wait list are not allowed to attend labs, you must complete the labs anyways to learn the material. You are free to see a TA during office hours for feedback — this will not give you the lab marks, but you will be excused from these labs if you are moved into the class. Movement from the wait list into the course is dependent on both your wait list order and your ability to demonstrate that you have been doing work in the course from the first day of term. Please note that even if you are high up on the wait list, there is no guarantee that you will get in to the course.

Wait list students who are moved into the course should email cpsc110-admin@cs.ubc.ca ASAP to confirm exemptions for the lab(s) they have missed while on the wait list.

Attendance

Attendance at lectures, labs, and exams is mandatory. All material from the following are examinable:

  • EdX material, including videos, exercises, text, etc.
  • Lectures (even if it doesn't appear in the videos)
  • Videos (even if it doesn't appear in the lecture notes)
  • Labs
  • Problem Sets
Academic Honesty

The Department of Computer Science has a detailed policy regarding collaboration on academic work in addition to UBC's policy on academic integrity. You must familiarize yourself with that policy.

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

  • All work that you submit must be your own work and you must start the design from scratch, or from a starter file that we give you. This means that you may not copy any other solutions, edit them, and submit them as your own work.
  • No collaboration of any kind is permitted for lecture activities, labs, midterms, or the final exam. All work for these components must be completed entirely on your own. You may discuss your lab work with your peers and TAs during lab.
  • You can work through practice problems from the problem bank with any number of other students.
  • 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 same lecture section. If you work with another student, you must submit a single shared assignment for both students.
    • You must not consult anyone other than your partner about the problem set. Figuring out how to solve the problem set on your own is what produces the learning.

All breaches of this policy will be reported, in writing, to the Dean of Science's office.

Missing Assignments

As stated in the grading section, your lowest lab grade and your lowest problem set grade will be dropped at the end of term, in addition to any excused exemptions. In the event of illness or another valid reason for missed work, you may be able to get an excused absence, which will appear as a -1 for that particular lab or problem set in Canvas. Note that this does not excuse you from needing to know the material covered in any missed lab or problem set — it is your responsibility to cover the material you miss. If your absence is not excused, you will get a 0.

When completing an academic concession form or emailing the course coordinator about illness, there is no need to provide specific details about your illness - please just let us know that you are not feeling well. We do not need or want to know about the specific details of your symptoms.

Please see the CPSC 110 COVID-19 Info page for information about what to do if you are unable to come to lecture or lab due to illness, but feeling well enough to complete work.

If you miss a lecture:

  • Work through the lecture activities for practice while reviewing the lecture recording and post on the Piazza discussion forum and/or attend office hours if you need additional support. We automatically drop one week of your lowest lecture scores to allow for the occasional missed lecture.

If you miss a lab:

  • Complete and submit an academic concession form and contact the course coordinator at cpsc110-admin@cs.ubc.ca as soon as possible.
  • Work through the lab for practice and post on the Piazza discussion forum and/or attend office hours if you need additional support.

If you miss a problem set:

  • Complete and submit an academic concession form and contact the course coordinator at cpsc110-admin@cs.ubc.ca as soon as possible.
  • Work through the problem set for practice aand post on the Piazza discussion forum and/or attend office hours if you need additional support.

If you miss a midterm:

  • Complete and submit an academic concession form and contact the course coordinator at cpsc110-admin@cs.ubc.ca as soon as possible. If possible, try to notify the course coordinator before the midterm, or no later than 24 hours after the midterm unless the severity of your situation prevents that.
  • 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:

  • Complete and submit an academic concession form and contact the course coordinator at cpsc110-admin@cs.ubc.ca as soon as possible. If possible, try to notify the course coordinator before the final exam, or no later than 24 hours after the final exam unless the severity of your situation prevents that.
  • Consult your Faculty's policy on missed exams immediately after (or preferably before) the final exam. Here is The Faculty of Science's page on Exam Issues.
  • Note that a student who does not complete sufficient labs, problem sets, and midterms during the term may not qualify for academic concession if they miss the final exam.

If you have an exam clash or hardship:

  • Contact the course coordinator at cpsc110-admin@cs.ubc.ca to notify them no later than 2 weeks before the day of the final exam.
Regrade Requests

Regrade requests for exams must be submitted through Gradescope. For issues with any assignments that were not marked through Gradescope (lecture activities, labs, problem sets, etc.), please email cpsc110-admin@cs.ubc.ca with your name, student number, the item you are requesting a regrade for, and the reason you are requesting a regrade.

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 grading key and the posted solution. Note that explanations in regrade requests that either question the rubric or do not explain why the answer should be considered correct will not be considered. 

Note that we will only consider regrades if they are submitted within 48 hours (excluding weekends) of grades for that assignment being released. Also note that we reserve the right to regrade the entirety of any assignment submitted. When requesting a regrade, your old grade will be scrapped and your new grade could be higher or lower.

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

If you are registered through the Centre for Accessibility, please send your accommodation letters to the course coordinator at cpsc110-admin@cs.ubc.ca at the beginning of the term.

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.

Frequently Asked Questions

  1. I have a question about CPSC 110. Who should I ask?
  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 lab section that is full. Can you get me into that lab?
  4. Why is one of my grades showing up as -1 in Canvas?
  5. Are grade calculations on Canvas accurate?
  6. I missed the final exam. Can I make it up?

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. Take advantage of the discussion forums to ask questions.
  6. 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.
  7. 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).
  8. 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).
  9. 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.
  10. If you get stuck for more than 5 or 10 minutes on a design problem get help. Post to the forums and see if someone has a suggestion. 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.