Exercises

Several exercises throughout the semester will provide you with experience using some of the core tools and techniques necessary for the software development process. These exercises will not make you an expert in using the tools and techniques they discuss. They will provide a common baseline of skill for all members of your team, regardless of what was taught in your previous programming or software engineering courses. In addition, the exercises will often contain references or links to additional material that you can explore in order to become an expert, guru, or wizard.

List of Exercises

Exercises below are subject to change up until they are officially released per the schedule.

Disclaimer

Also note, these exercises are not enough to guarantee that you can effectively develop software and write good code. For example, the project in this class uses C++20, but you may have never used C++20 before. The exercises will not provide you with sufficient background or skill in using C++20 effectively. The videos on the links page will only help somewhat with that. Our in class code reviews, discussions, and critiques will help with that, but you should actively seek to improve your knowledge of such technologies on your own as a future software developer. If you are interested in finding additional resources to learn about a particular topic, let me know and I'll be happy to point you in a fruitful direction.

Schedule

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

Day Exercises
E0 E1 E2 E3 E4 E5 E6 E7
Sep 4
Sep 9
Sep 11
Sep 16
Sep 18
Sep 23
Sep 25
Sep 30
Oct 2
Oct 7
Oct 9
Oct 15
Oct 16
Oct 21
Oct 23
Oct 28
Oct 30
Nov 4
Nov 6
Nov 12
Nov 13
Nov 18
Nov 20
Nov 25
Nov 27
Dec 2

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/env373/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. It is, however, possible to conveniently connect IDEs like VS Code to an appropriate docker image to complete all work.

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

docker pull nsumner/cmpt373:fall2024

You can start a container with this image and access files on your filesystem using a command like:

docker run -ti --name=cmpt373work --ulimit='stack=-1:-1' -v << path on your system >>:/opt/work nsumner/cmpt373:fall2024

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

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

docker start -ai cmpt373work