Syllabus

Table of Contents

1 Course Staff and Guest Speakers

Who we are, how to contact us, when and how we’re available.

1.1 Course Instructors

Danya Karras
UBC Alum, D2L Sr. dev + team lead, and Sessional Lecturer

While completing her Physics degree, Danya realized she loved building things with code, and entered the BCS program. On the side, she fueled her passion for education by teaching piano, ballet, and Ukrainian Folk Dance. Combining all of her skills, Danya now has a job in Ed Tech, and has a side job (this course) in Tech Ed. As a Sr. Dev and Team Lead at D2L, Danya continues to be a champion for learning by hosting demos, volunteering at tech events, and convincing others to join her in building cool things.

Ian McLean
UBC Alum, D2L Sr. dev, and Sessional Lecturer

Ian was destined to cure Ebola, until Grade 11 biology class introduced him to Charlie Darwin, and set him on a confusing path to study Evolution and Ecology at SFU(BSc) and Carleton(MSc). Though he loved biology, Ian didn’t have the patience for the theoretical/academic life, and so he stopped his biology studies, and tried to get a job (for which he was mainly under- or over-qualified for). Finally, Ian found his way to LifeLabs, and realized that he wanted a life with biology and tech combined. He then promptly moved back to BC, and bothered the BCS program until they let him in. Ian is currently a dormant biologist, learning how to be a software developer at D2L, and trying to help cool stuff happen (like this class).

Stephanie Mah
UBC Alum, Rivian Software Engineer II, and Sessional Lecturer

Following a lengthy educational journey from electrical engineering to fashion design to business, Stephanie ultimately decided to return to her passion for programming after finally getting a BCom. Since graduating from the BCS program, Stephanie has honed her full-stack skills at startup PAI Health, and Paybyphone before starting at Rivian this January. When she’s not working, she spends her time on one of her too many hobbies: drawing, baking, learning languages or gaming, to name a few.

1.2 Teaching Assistants

TBA

1.3 Guest Speakers

Joshua Grant (Workshop 4 – MongoDB)

Joshua was raised in Vancouver (well, Surrey for the first bit) and recently transplanted to Toronto. His path to tech has not been a direct one; previously a not-very-good poet, a pretty good cook, a lacklustre manual labourer, and a starving musician, Joshua is relieved he found his way into computer science, and this course in particular.

Joshua has been a student, a TA and a guest judge for 436, and now he’s returning as a guest speaker. After graduating from BCS in 2020, Joshua took a job at PaddleHR, a small HR tech startup in Toronto, where he took ownership of a small but growing codebase of React and Python code. A year and a half later, PaddleHR was bought by LinkedIn. He now works on admin functionality for the LinkedIn learning platform and struggles with the finer points of EmberJS.

Dorothy Ordogh (Workshop 5 – Release Engineering)

Hailing from Toronto, Dorothy moved to Vancouver to pursue a bachelor’s degree at UBC. One bachelor’s degree quickly turned into two when she took a computer science class and fell in love. Dorothy interned at ABB, Ldryl (a startup that died mid-internship), and Hootsuite, and found full-time employment post graduation in 2016 at Twitter. In her time at Twitter, Dorothy has worked on a testing framework, a build tool (Pants), and currently works on the foundational RPC library on which every service at Twitter is built (Finagle). Outside of work, Dorothy likes to dance and eat chocolate.

Jeremy Goh (Workshop 6 – Career Planning and Architecting)

2 Schedule

Please see our posted course schedule for the structure of a typical 2-week unit and important dates. It’s critical to review (at minimum) the dates for the workshops and the final presentation.

3 Learning Objectives

Typically, learning objectives state what you will be able to do. As we intend this to be an intensely practical course, we instead discuss what you will have done upon successfully completing this course:

  • applied a variety of current, popular, highly industry-relevant technologies;
  • expanded your professional portfolio with compelling, hands-on
    experience working on a complete software project, start to finish;
  • applied good communication and collaboration practices in a small-team environment; and
  • networked with industry contacts and potential mentors.

4 Equity, Inclusion, and Wellness

The CS Department has a fantastic statement on Equity, Inclusion, and Wellness with a large number of resource links available, for example if you have concerns or needs for accommodation.

We hope that all of us in the CPSC 455 also create a welcoming, respectful, inclusive, and positive environment. While the course is unlikely to be stress-free (because learning and projects are hard work, and hard work is often stressful), we also hope you will not find the course overwhelming. You may have ideas, questions, or concerns about creating such an environment in the course; we may make a mistake; or we may just plain do something wrong. If any of that happens, please let someone know. Talk to one of us on the course staff if you’re comfortable or to someone from the link above (or the Head or Undergraduate Associate Head of the department) if you’re not.

5 Policies

5.1 Waitlist

Students on the waitlist will be considered in the order normally set by the CPSC department except:

  1. Waitlisted students who do not attend a workshop or are substantially late will lose their standing and be removed from the course. (We will not move students from the waitlist from the official start of the term until after the first workshop to better enforce this policy.)
  2. Your availability for lab sections may also affect when you are moved into the course. (I.e., we need space in both lecture and a lab you can attend to add you to the course.)

We may form project groups entirely from waitlisted students or by replacing students who dropped from existing teams, but we are unlikely to provide free choice of group to waitlisted students.

5.2 Project Groups

Your course project will be completed in a group of four. All members of the group must be registered in the same lab section!

We are open to discussing groups of three or five in extraordinary cases (including where the our lab size just isn’t divisible by four!), but do not plan or expect to have a group size besides four.

5.3 Absences

  • Emergencies: If you’re ill or an accident or emergency occurs, contact the course staff and your group ASAP to let them know at least that you will be or did miss because of an emergency. Follow-up with the course staff with enough details for us to be able to accommodate your absence in terms of grades. Expect to put in a lot of work to make up the missed time!
  • Planned absences from workshops: If you will miss a single workshop in the term because of scheduling conflicts, communicate that to the course staff RIGHT AWAY and by at least a week before the add/drop deadline. We may be able to accommodate that. Also be sure your group knows once you’ve formed a group. If you will miss two or more workshops, drop the course. That’s the equivalent of missing four weeks of lecture in a regular course that has mandatory lecture attendance and is NOT ACCEPTABLE. See rubric for absences here.
  • Planned absences from labs: If you have to miss a small number of labs over the term for good reasons, we should be able to accommodate that. Be sure to let us and your group know in advance. If possible, we may want you to attend the other day’s lab.
  • Planned absence from final showcase: Treat this like missing two or more workshops (as discussed above) or a course’s final exam. You should likely DROP THE COURSE.

Contact us privately on Slack (preferred) or at cpsc455-staff@cs.ubc.ca in all of these cases. If you contact us on Slack, please add ALL course instructors (Ian, Danya, Stephanie) to your Slack chat.

5.4 Late Submissions

For all course components, if you have extenuating circumstances, contact us privately on Slack (preferred) or at cpsc455-staff@cs.ubc.ca ASAP, ideally in advance, and we will try to handle the situation empathetically, reasonably, and respectfully. If you contact us on Slack, please add ALL course instructors (Ian, Danya, Stephanie) to your Slack chat.

A few components have specific additional rules:

Individual Assignments:
Individual assignments are graded by demo. As a result, managing late assignments is rather burdensome! We do allow a single late submission to be graded by demo at the next Saturday workshop (last repo push Friday night) with an ostensible 20% point deduction for being late. If you need to take this option, you must contact us privately and reasonably promptly so we can plan for the late demo. However, note:

  • The 20% point penalty is just to disincentivize being late. We expect to waive it if late submissions don’t get abused.
  • On the other hand, if you are late more than once, we may impose additional penalties or disallow further late submissions. If the logistics of late assignments prove too challenging, we may stop accepting late assignments. 🙁
Scrum reports:
We do not accept late Scrum updates. Instead, update us on where you are when the time comes for the update! (We’ll allow a reasonable grace period. If your computer was hit by a bus with the flu, please get to a library branch or UBC lab as soon as you’re able and post your (rather exciting) update!)
Final showcase:
It would be logistically challenging to consider late final presentations and impossible to consider them fully. Try to arrange, even in emergencies, that someone on your team can handle the presentation. Of course, contact us in case of emergencies!

5.5 Collaboration and Academic Misconduct

Our course builds on the department’s academic integrity statement with additional rules designed to create a professional but collaborative environment.

  • For group submissions:
    • Group submissions are the joint effort of your group. We place no specific limits on your collaboration except where we explicitly ask you to document and discuss it (Scrum updates, peer evaluations, individual components of presentations/reports, etc.). Collaborate productively so that everyone learns!
    • The majority of your project should be yours, as a group. However, we encourage you to find help and resources, as you would in a professional setting! Where you use or adapt existing code, you must cite it and be cognizant of its license. Where you get help from others, you must acknowledge that help. (This is especially critical for classmates, as it may benefit their participation grade!) Citations/acknowledgments should be in a clear section in your main README.md, in your license (if you have one!), and repeated locally where you used the code/help.
    • Critically, be able to justify and explain your design: no piece should be obscure to your group as a whole, and little should be obscure to any individual team member.
  • For individual submissions:
    • Keep your repository for your individual assignment private until after the assignment’s deadline, at which time change it to public for grading purposes.
    • Except where a tutorial used for the assignment guides you to do so, do not copy-paste code. Ask for help only from course staff or in “public venues” from fellow students: during lab or workshops or on public Slack channels. Otherwise, ensure you follow the group submission guidelines for citation and acknowledgment!
    • Critically, be able to justify and explain all of your design.

We hope these rules encourage collaboration that helps you learn. Please inform us if you find they are imposing unreasonable limits on your work!

5.6 Privacy, Online Systems, and Your @ugrad.cs.ubc.ca E-mail Address

As noted in the section on required materials, we will require you to register with a variety of web-based tools that may be hosted outside Canada. In some cases, we may register you directly for such services using your @ugrad.cs.ubc.ca email alias (as listed in https://www.cs.ubc.ca/getacct).

Thus, we want to remind you to keep your @ugrad alias private, just as you would any other account information. If you choose not to keep your @ugrad alias confidential, please note that UBC will proceed on the assumption that you do not object to the services we use potentially identifying you personally, and that you are consenting to the storage of personal information on their servers outside Canada.

6 Being Prepared

6.1 Before the Term

No one is expected to know the material in this course before you start the course. If you know none of the tools/skills we’ll learn this term, that’s OK; indeed, that’s the point!

However, we also expect that registrants will have a wide range of pre-existing skills. That means (once the term starts) someone can probably help you with whatever problem you run into. USE our Slack channel to ask for help, and help others as much as you can! Our participation points encourage this!

6.2 Keeping Up During the Term

This is a project course with extremely hands-on workshops and labs. Be sure that you do the required preparatory work before each workshop (except the first)—which often includes fundamental steps like installation—or fall immediately behind.

Also, be sure to manage progress on your project and communication with your team. Letting work slide to the end of the project will have a tremendous negative impact on your health, well-being, and grade. Letting communication or teamwork issues slide in your group can cause the same. We’ll try to use regular design reviews to give you an opportunity to flag these issues to us and to yourselves.

Please ask us for help when you need it!

7 Required Materials/Registrations

There is no required textbook for the course. However:

  1. It may be difficult to complete the course successfully without your own computer. Many of the resources we use are cloud-based; so, lab, library, and other public computers may suffice, but you’ll need to be very careful with your time and planning.
  2. We will require you to register with and use various online resources that may only be available on servers outside Canada. If this is an issue for you, please raise it with the course staff immediately by the end of the first workshop.

For a rundown of likely tools and systems used this term, please see the course course schedule.

8 Communication

Course communication will be a combination of face-to-face and on Zoom (in workshops, labs, and your team meetings), via our course website, on github, or on Slack.

Slack is an industry-standard communication tool for teams, and learning to use it is a course goal! Indeed, participation on Slack will factor into your participation grade for the course. As a rule, we prefer even private correspondence to go over Slack. (You and your group may have a primary Slack point-of-contact on the course staff assigned to you.)

Our preferred mode of communication is: Create a single chat with all 3 course instructors (Ian, Danya, Stephanie), and send your message there. One of us will get back to you.

However, Slack does store information on non-Canadian servers. So, if you wish to contact the course staff on a sensitive or private topic, please e-mail cpsc455-staff@cs.ubc.ca.

We may also occasionally communicate with you via your @ugrad.cs.ubc.ca e-mail alias or the e-mail address registered for you at the UBC student service centre. Be sure to check both addresses or forward them to somewhere you check.

Finally, we may require some additional communication mechanisms as the term goes on, such as LinkedIn.

9 Grade Components

Course components are weighted as follows:

Assignment type Weight Comments
Individual Assignments 30% 6 assignments @ 5% each
Final project 50% final submission + presentation/demo, design/code reviews
Participation 11% Scrum-style feedback, lab/workshop/Slack participation, etc.
Leadership/Teamwork 9% Primarily based on TA/teammate evaluations; mid- and late-term

Notes:

  • In cases of low contribution, the leadership/teamwork mark may also impact the final project mark. (We expect all team members to pull their weight.)
  • In extreme cases of low participation, we may increase weight on the participation mark substantially. (We expect everyone missing a workshop to discuss the situation—ideally in advance—with the course staff. We expect no one to miss more than a single workshop without extensive consultation and perhaps dropping the course.)
  • The course staff reserve the right to modify these weights (but anticipate at most small changes).

Note that you must pass the average of the individual assignments to pass the course. (Students who fail the individual assignments will receive as their course grade the minimum of their earned grade and 45%.)