Assignment #1:


Submission date: Friday, Feb 1, 2019, 23:59


Learn to use a real-life medium sized programming environment & data structure for meshes.


  1. Experiment with the the mesh editting API
  2. Perform simple data-structure operations
  3. Experiment with mesh subdivision schemes
  4. Experiment with a mesh viewer GUI


The assignment consists of two components: getting the mesh editting library of your choice running and then coding at least one subdivision algorithm. You may use the mesh editting codebase that we provide as part of the course, or use a library of your choosing. Note that in the latter case, you will be on your own setting up the third-party library.

Installation of the mesh editting library:


Your function should take only necessary input parameters, and perform one iteration of the algorithm on the loaded mesh. The algorithm should work correctly if run multiple times.

BONUS: You can get extra marks for implementing any of the following options (bonus at the discretion of the marker). For the description of each option, please refer to online literature on subdivision.


A small set of inputs to debug your algorithm can be found here. It contains coarse meshes with and without boundary. More meshes can be downloaded from aim@shape repository. Please pay attention to the mesh file formats that are supported by the library that you are using. Some formats might require conversion.


You must use the handin software to submit your assignments. First, create a UBC computer science undergraduate account by following the instructions at Even if your home department is not computer science, having signed up for CS524 makes you eligible to have an account. Please create an account as early as possible and do not leave it to the last minute.

Create a zip file containing the code for your assignment, and a README file containing your name and student number. Include all the code and build scripts (e.g., CMake). However, do not include any executables, build directories, or visual studio .vs folders.

After creating an account you have to use a department Linux machine to run the hand-in software (there is an online version of hand-in, but that might not work for a graduate course). First, log into a department machine, either by sitting behind one physically or using ssh. Then create the folder hierarchy /your-home-folder/cs-524/a1 in your home folder. For example, using the command line your can write

mkdir -p ${HOME}/cs-524/a1
Then, put the zip folder containing your assignment inside /your-home-folder/cs-524/a1. Now using the command line, change directory to your home folder.
  cd ${HOME}
And run the following command (pay attention to the dash in cs-524).
  handin cs-524 a1
Then, you must see a message similar to the one below. This one in particular was generated by running handin inside Shayan's undergraduate account, while putting a file named inside /shayans-home-directory/cs-524/a1/
Student user ID: u3t0b
    Now: Mon Dec  3 02:38:09 2018
    Due: Fri Feb  1 23:59:59 2019

You have passed all validation steps.

By submitting  these files, I indicate that I am fully aware of the  rules and
consequences of plagiarism, as set forth by the Department of Computer Science
and the University of British Columbia.  I hereby certify that the work in the
submitted file(s) was performed *only* by me (the owner of the account used to
submit this work), except as acknowledged in the work submitted.

Are you sure you want to continue? (y/n)  y

.........Your assignment is being retrieved.
         Please be patient.


Checking for TA handin script /home/c/cs-524/bin/handin ...
None ...

*** Handin process completed. ***  
You can overwrite your submission as many times as you like (as long as it is done before the deadline). To overwrite your submission with a new one, replace the zipfile inside /your-home-folder/cs-524/a1/ with the updated version and run
handin -o cs-524 a1
Please do not leave submission to the last minute. Hand in the very first incomplete code that you have. Then, after every progress you make, overwrite your submission with an updated version.

All assignments should be handed in by Friday, 2/1/2019, at 23:59.

All assignments will be marked  in person, using a schedule which will be published on Piazza. Please make sure to register for a marking spot. Please do not touch your code between submission deadline and marking session.

Late assignments policy: In total, you have 3 grace days for all of your assignments. You can use them whenever you want during the course.

This assignment is worth 15% of your final grade.

Good luck!