CS786 - Assignments
There will be five assignments, each worth 8% of
the
final mark. Each assignment must be done individually (i.e., no
team) and will consist entirely of programming questions. More
precisely, you will be asked to program some algorithms for
probabilistic inference and machine learning and to test them on some
datasets.
Assignment 3: due July 30
- Handout
- Skeleton code:
- skeletonJuly19.jar:
skeleton without any public tests
- skeletonJuly23.jar:
skeleton with 21 public tests and all necessary datasets (*.csv) for
the ublic and release tests. This is the same skeleton code as
released on July 19, except for thePublicTests.java file and several
*.csv datasets. If
you already started writing your code in the skeleton
released on July 19, you can continue with the same files, but make
sure
to copy the new/modified files: PublicTests.java, *.csv.
- Marmoset: 5 projects labeled 3a, 3b, 3c, 3d and 3e were
created in Marmoset to allow you to test each function
separately. Hence, once you pass the public tests for a function,
you can immediately see whether you pass the release tests for that
function instead of having to wait till you pass the public tests of
all functions.
- Grade: # of release tests passed There are 10 release tests in
total.
Assignment 2: due July 9
July 13
- Handout
- Skeleton code:
- skeletonJune26.jar:
skeleton with only 4 public tests
- skeletonJuly2.jar:
skeleton code with 20 public tests and several new networks and
datasets. This is the same skeleton code as released on June 26,
except for the
PublicTests.java file which includes many more tests and several new
.bn, .mn and .csv files that are necessary for the new tests. If
you already started writing your code in the skeleton
released on June 26, you can continue with the same files, but make
sure
to copy the new/modified files: PublicTests.java, *.bn, *.mn and *.csv.
- skeletonJuly9.jar:
skeleton code with the necessary datasets for the release tests.
This is the same skeleton code as before, with new .bn, .mn and .csv
files that are necessary for the release tests. If you already
started writing your code in an earlier skeleton, you can continue with
the same files, but make sure to copy all .bn, .mn and .csv files.
- Grade: # of public and release tests passed. There are 20
public tests and 10 release tests, hence your grade will be out of 30
for this assignment.
Assignment 1: due June 6 June 17
- Handout
- Skeleton code:
- skeletonMay30.jar:
skeleton code with only 2 public tests, 1 Bayes net and 1 Markov net
- skeletonJune4.jar:
skeleton code with 48 public tests, 3 Bayes nets and 2 Markov
nets.
This is the same skeleton code as released on May 30, except for the
PublicTests.java file which includes many more tests and 3 new networks
(loopy.bn, polytree.bn and grid.bn) that are necessary for the new
tests. If you already started writing your code in the skeleton
released on May 30, you can continue with the same files, but make sure
to copy the new/modified files: PublicTests.java, loopy.bn, polytree.bn
and grid.mn.
- skeletonJune8.jar: the
file polytree.bn had a typo in the sense that the conditional
probabilities for variable I (i.e., Pr(I|E)) did not sum to 1.
This new skeleton jar includes a corrected version of polytree and a
corrected version of the associated PublictTests. If you already
started working with an earlier version of the skeleton, simply copy
the files polytree.bn and PublicTests.java. Make sure to include
the corrected version of polytree.bn in the jar file that you upload to
Marmoset.
- Marmoset submit server: https://marmoset.student.cs.uwaterloo.ca
- Make sure to login Marmoset with the first 8 characters of your
UW userid (userids longer than 8 characters are not supported).
- Submit your code by uploading a jar/zip file that contains the
same files as in skeletonDate.jar. To practice, you can upload
the skeletonDate.jar file provided on this webpage. Marmoset will
simply indicate that it compiles, but none of the public tests are
pasts. You can upload submissions as often as you wish until the
deadline. Your best submission based on the release tests will be
used for grading.
- Once a submission is uploaded, wait a minute or two and refresh
your browser. The number of public tests passed will be
displayed. You can click on "view" to see which public tests
failed and why.
- It is possible that the public tests reject correct solutions
simply because I didn't think about all the possibilities when coding
the verification routines. If your code fails a test, but you
think that your solution is correct, send an email to Pascal to double
check.
- Release tests:
- 18 release tests are now uploaded on Marmoset. You don't
have to do anything to run previous submissions against the release
tests since Marmoset automatically re-evaluated all submissions as soon
as I uploaded the release tests.
- You can request to see your results for the release tests only
after all public tests are passed. The rational is that you
should be debugging your code with the public tests before checking
your results for the release tests. Once you have a submission
that passes all public tests, click on "view" for that submission and
scroll to the bottom of the screen. Click on "release test this
submission" to see the results of this submission for the release
tests.
- Grade: # of public and release tests passed. There are 48
public tests and 18 release tests, hence your grade will be out of 66
for this assignment.