Elements of Software Design
This is a series of interactive notebooks that are used for teaching software design and more specifically concurrent system design at McMaster University. The accompanying assignments and tests are not part of this repository. A novel aspect is the use of state diagrams for teaching concurrency, including non-interference, see:
Teaching Concurrency with the Disappearing Formal Method. Sekerinski, E. In Dongol, B.; Petre, L.; and Smith, G., editor(s), Formal Methods Teaching, volume 11758 of Lecture Notes in Computer Science, pages 135–149, 2019. Springer, Cham.
The course notes are being constantly revised; comments are welcome. See my home page for the latest installments of the courses using these notes. Of course, I would love to hear if you plan to use these notes for courses or otherwise.
Most images are cell attachments, which are not rendered by GitHub. Images that are linked files are rendered, but not in the correct size. To view the notebooks properly, follow the instructions below.
— Emil Sekerinski
See also: Data Structures and Algorithms.
Installation
You need Python 3. Update pip3
or pip
, depending on your installation:
pip3 install --upgrade pip
Install Jupyter:
pip3 install jupyter
Jupyter can now be run by:
jupyter notebook
The notebooks rely on following Jupyter extensions:
exercise
withrubberband
: for releaving solution hints with the ⊞ symbol; these extensions can also be installed through theJupyter nbextensions configurator
jupyter-emil-extension
: for formatting of algorithms and layout of slides. Install locally by:
RISE
: optionally, for presenting the notebooks as slides; the resolution may need to be adjusted under “Edit Notebook Metadata”
You also need to install the used programming languages: