Exercises

You have a handful of exercises to complete over the course of the semester. These exercise cover both theory and practice of modern software engineering techniques. There are both written and programming components.

Exercise #   Topics Due Date
1 Design Fri Jan 16 @23:59
2 Performance Tue Jan 27 @23:59
3 Testing Fri Feb 6 @23:59
4 Symbolic Execution Fri Feb 27 @23:59
5 Dynamic Analysis Tue Mar 17 @23:59
6 Static Analysis Fri Apr 3 @23:59

Schedule

A rough schedule of planned exercises is below, subject to change.

Week Exercises
E1 E2 E3 E4 E5 E6
Jan 6
Jan 8
Jan 13
Jan 15
Jan 20
Jan 22
Jan 27
Jan 29
Feb 3
Feb 5
Feb 10
Feb 12
Feb 17
Feb 19
Feb 24
Feb 26
Mar 3
Mar 5
Mar 10
Mar 12
Mar 17
Mar 19
Mar 24
Mar 26
Mar 31
Apr 2
Apr 7
Apr 9

Working in CSIL

All exercises this semester can be completed in CSIL, but they use software that is not available by default. In order to make these available to you, a special Python virtual environment can be used to automatically enable and disable access to this software by default.

To start the virtual environment from within CSIL, run:

source  /usr/shared/CMPT/faculty/wsumner/base/env745/bin/activate

This activates the underlying virtual environment thats makes more recent software for the course available. You can exit the virtual environment by running:

deactivate

You can even add the source line to the end of your ~/.bashrc configuration file to enable the environment automatically when you log in (if you so choose).

Working within Docker

It is also possible to work within a docker container that provides the required versions of all software that we will use this semester. Note, no support for docker will be provided. If you choose to work this way, you are on your own.

To pull the latest version of the docker image for the class, you can use:

docker pull nsumner/cmpt745:spring2026

The image creates a default student user and works within their home directory. You can start a container that maps a path on your system into a path in the container using:

docker run -ti --name=cmpt745work --ulimit='stack=-1:-1' -v << path on your system >>:/home/student/work nsumner/cmpt745:spring2026

For instance, this maps the given << path on your system >> to the location /home/student/work in the container.

If you exit from the container, you can restart it again later with:

docker start -ai cmpt745work