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.
Exercises below are subject to change up until they are officially released per the schedule.
Exercise 0: Background [TA: Harish]
Exercise 1: Building and Dependencies [TA: Hyagiriva]
Exercise 2: Git and GitHub [TA: Harish]
Exercise 3: Basic Design [TA: Hyagiriva]
Exercise 4: Unit Testing and Continuous Integration [TA: Harish]
Exercise 5: Inheritance [TA: Hyagiriva]
Exercise 6: Leveraging Polymorphism [TA: Harish]
Exercise 7: Design Scenarios [TA: Hyagiriva]
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.
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 |
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:
This activates the underlying virtual environment thats makes more recent software for the course available. You can exit the virtual environment by running:
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).
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:
You can start a container with this image and access files on your filesystem using a command like:
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: