The homework exercise schedule is as follows:

Number Start Recommended Deadline Link Description Notes
1 2020-11-14 2020-12-03 repository description
2 2020-11-27 2020-12-10 repository description See Test Scripts below
3 2020-12-04 2020-12-17 repository description Use the extended branch (see "Extended Branch" below); also see Test Scripts below
4 2020-12-11 2021-01-12 repository description No presentation to TA; instead send e-mail with results to Christoph who will check / ask questions / sign off

Process:

Extended Branch

To simplify homework 3, we have released an additional git branch that gives more structure in NonNullPointerAnalysis.jrag. You can merge this branch in the same way as explained here, except by using origin/extended instead of origin/master:
git remote add upstream https://git.cs.lth.se/creichen/edap15-exercise-3.git
git fetch upstream
git checkout master
git merge upstream/extended
git push origin master
    
If you are an early group who has already started on the exercise, you may still want to look at the extended skeleton skeleton implementation to take whatever functionality you find useful. We will factor in the extra work you did when determining whether you pass the exercise.

Test Scripts for Exercises 2 and 3

To run the test scripts for exercises 2 and 3, you can use the Python scripts compare-hw2.py and compare-hw3.py (should work for both Python 2 and Python 3), as follows:
python compare-hw2.py F.expected F.out
  
(for Homework 2, or compare-hw3.py for Homework 3). Here, F.out is the output produced by your tool. (On many operating systems, you can also use the hw2-compare.sh and hw3-compare.sh scripts to automate running your tool and comparing.)

If you have already passed, you do not need to re-run these tests to pass. If the TA or Christoph gave you different instructions, then those override the output of these scripts.

The .expected files now contain not only expected output, but also some meta-specifications. The script handles these automatically, so as long as you rely on the script to check your output, you don't need to understand them.

maybe: N 1 5 ?
choice: N 2 5 +  |  N 2 5 ?
merge: 3 10 20 30
  
If you do want to investigate by hand, here is what they mean: