Violating the No Copying Policy could result in a 0 on your project grade, or your course grade will be capped at 50%
The project is a single, cumulative project, that progresses over the semester. At regular intervals there are submission checkpoints where a "client" checks your progress. The "client" is AutoTest, an autograder who provides feedback during development and grades your project at deadlines. There are 4 checkpoints: C0, C1, C2 and C3.
Checkpoint 0 is completed individually and Checkpoints 1, 2 and 3 are completed in pairs.
Your partner must be in the same lab section as you.
You need a partner for Checkpoint 1. If you don't find a partner during Checkpoint 0, TAs will help you find a partner during the first lab after the Checkpoint 0 deadline.
There will be no teammate swaps. Teams can only be split in cases of non-academic misconduct.
If you are in a situation where your teammate is not pulling their weight, we deal with that through grade adjustments.
Project Deadlines are available on the Schedule page and are firm; unfortunately there can be no extensions.
AutoTest wait times increase dramatically as checkpoint deadlines approach. Do not leave submission to the last minute.
Checkout the Project Grading Page for all grading information.
The schedule is on the Labs and Office Hours pages. We use a queue system for Office Hours and you can sign up for the queue here.
During Checkpoint 0, all Labs will act like Office Hours. For Checkpoints 1-3, Labs will be mandatory and you and your partner will meet with your TA to discuss progress on the project and any issues you come across.
UBC is a big place, and involves a large number of people doing a variety of tasks. The goal of this project is to enable effective querying of historical data regarding the university's sections and rooms.
This will be a full stack web development project split into four checkpoints. In the first three checkpoints, you will build a backend to manage (add, remove and list) datasets and to query datasets. In the final checkpoint, you will build a frontend for users to interact with your query engine.
Checkpoint 0: You will develop a test suite for the IInsightFacade interface.
Checkpoint 1 & 2: Develop your backend so that datasets can be managed and queried. The query language is a domain specific language described by an EBNF.
Checkpoint 3: Design and develop your frontend so users can interact with your backend.
How the project is split into the four checkpoints
The project is an integral part of this course. The project will be difficult and time consuming. Projects will be completed in pairs (everyone must have a partner, and you must work with the same partner for the duration of the term). Your partner needs to be in the same lab section as you. The project will proceed in 4 checkpoints; the requirements for each checkpoint is detailed in a deliverable document.
You should expect the project to take ~6 hours / week / person (13 weeks * 2 people * 6 hours = 156 hours).
It is extremely important you not leave project deliverables until the last moment. It is impossible to stress strongly enough how important this is; 36h over three weeks is no problem, but over a weekend is impossible. These time estimates are based on effective effort, if you are multitasking or just randomly trying to cobble something together without a plan or tests, the project may take much longer.
The project will rely heavily on self-learning. The course content is necessarily broad to provide coverage that will be applicable to most software development projects. It is important to remember that the project is a single software project instance that will utilize only a subset of the in-class material; the lectures will not serve as a tutorial for the project, it is expected that you will have to use your own creativity to reason about the project requirements, design a solution, and build and validate it yourself.
TypeScript. Your project will be constructed in TypeScript. If you do not know TypeScript, you are encouraged to start investigating the language soon. It is important to note that we will spend very little time in lecture and lab teaching this language. You will be expected to learn TypeScript on your own time.
While it might seem daunting to learn a new language on your own, the fluid nature of software systems requires that you get used to quickly learning new languages, frameworks, and tools. The syntax of TypeScript is similar to Java, which you used in 210. Google will be your friend for this project, as there are thousands of free tutorials and videos that can help you with this technology stack. TypeScript has many great resources, but the TypeScript Handbook or the TypeScript Deep Dive would be good places to start. If you are starting from scratch, it is really important that you do not just read a bunch of code but actually write some, too! Consider using TypeScript or JavaScript REPLs as a lightweight way to do this.
Git. All of your project development will take place on GitHub. You will not be able to change your GitHub ID during the term, so do not change your CWL until after the final exam. Being familiar with Git is essential. Please take a look at the 'getting started' part of the Atlassian Git Introduction before the first lab if you are not familiar with Git. A shorter, less formal, guide is also available.
Allowable packages. The packages and external libraries (i.e., all of the code you did not write yourself) you can use for the project are limited and described in each checkpoint. You cannot install any additional packages. Essentially if you are typing something like npm install <packagename> or yarn add <packagename> and we haven't explicitly asked you to do it, you will likely encounter problems.