Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hofbi/teaching-tools
Teaching Software Engineering As Programming Over Time
https://github.com/hofbi/teaching-tools
cpp python software-engineering teaching tum
Last synced: about 10 hours ago
JSON representation
Teaching Software Engineering As Programming Over Time
- Host: GitHub
- URL: https://github.com/hofbi/teaching-tools
- Owner: hofbi
- Created: 2022-02-28T11:42:43.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2025-01-07T13:16:09.000Z (12 days ago)
- Last Synced: 2025-01-07T14:26:46.744Z (12 days ago)
- Topics: cpp, python, software-engineering, teaching, tum
- Language: Python
- Homepage: https://hofbi.github.io/teaching-tools/
- Size: 979 KB
- Stars: 8
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Teaching Tools
[![Actions Status](https://github.com/hofbi/teaching-tools/workflows/CI/badge.svg)](https://github.com/hofbi/teaching-tools)
[![Actions Status](https://github.com/hofbi/teaching-tools/workflows/CodeQL/badge.svg)](https://github.com/hofbi/teaching-tools)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/hofbi/teaching-tools/master.svg)](https://results.pre-commit.ci/latest/github/hofbi/teaching-tools/master)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)Teaching tools created for the [Software Engineering Lab](https://www.ei.tum.de/en/lmt/teaching/software-engineering-laboratory/).
Find all documents [online](https://hofbi.github.io/teaching-tools/)
## Paper
If you use our tools or templates please cite our [paper](https://www.researchgate.net/publication/359502253_Teaching_Software_Engineering_As_Programming_Over_Time).
```tex
@inproceedings{hofbauer_2022,
author = {Hofbauer, Markus and Bachhuber, Christoph and Kuhn, Christopher and Steinbach, Eckehard},
title = {Teaching Software Engineering As Programming Over Time},
booktitle = {IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation},
address = {Pittsburgh, PA, USA},
month = {May},
year = {2022},
pages = {1--8},
isbn = {978-1-4503-9336-2/22/05},
publisher = {Association for Computing Machinery},
url = {https://doi.org/10.1145/3528231.3528353},
doi = {10.1145/3528231.3528353}
}
```## Documents
Create documents locally. This requires a [docker](https://docs.docker.com/get-docker/) and [docker compose](https://docs.docker.com/compose/install/) installation.
### Slides
```shell
# Generate Slides as pdf
make slides# Sever slides
make serve
```### Docs
```shell
# Generate the documentation
make docs
```## Development
### Dependencies
To be able to build and execute code, either do the development in the docker container [makeappdev/cpp-dev](https://hub.docker.com/r/makeappdev/cpp-dev), which is made easy in Visual Studio Code:
1. Ensure that Docker is installed and running on your machine
1. Open this folder in VS Code
1. Install the [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension
1. Open the command palette (`F1` on Windows, `Shift+Ctrl+P` on Linux)
1. Call `Remote-Containers: Reopen in Container`If you don't want to develop inside a docker container, you can install the dependencies directly on your OS using
```shell
# Install apt packages
./install.sh# Create a python venv (optional)
python3 -m venv venv
source venv/bin/activate# Install python dependencies
pip3 install -r requirements.txt
```### C++
```shell
mkdir -p build # Create build dir
cd build # Go to build dir
cmake .. # CMake
make # Build
make test # Run Tests
```### pre-commit git hooks
#### Setup
We use [pre-commit](https://pre-commit.com/) to manage our git pre-commit hooks.
`pre-commit` is automatically installed from `requirements.txt`.
To set it up, call```sh
git config --unset-all core.hooksPath # may fail if you don't have any hooks set, but that's ok
pre-commit install --overwrite
```#### Usage
With `pre-commit`, you don't use your linters/formatters directly anymore, but through `pre-commit`:
```sh
pre-commit run --file path/to/file1.cpp tools/second_file.py # run on specific file(s)
pre-commit run --all-files # run on all files tracked by git
pre-commit run --from-ref origin/master --to-ref HEAD # run on all files changed on current branch, compared to master
pre-commit run --file # run specific hook on specific file
```