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:

curl -LJO https://gitlab.cas.mcmaster.ca/parksj6/jupyter-emil-extension/-/jobs/artifacts/master/download?job=build
unzip -a jupyter-emil-extension.zip
cd dist/
python3 -m pip install -e . --upgrade
jupyter nbextension install --py jupyter_emil_extension
jupyter nbextension enable --py jupyter_emil_extension
  • 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:

  • Java: any recent version, only command line (no IDE)
  • Go: any recent version, only command line (no IDE)

1 élément sous ce dossier.