{"id":24387569,"url":"https://github.com/hofbi/teaching-tools","last_synced_at":"2025-04-11T04:33:04.534Z","repository":{"id":38339527,"uuid":"464459392","full_name":"hofbi/teaching-tools","owner":"hofbi","description":"Teaching Software Engineering As Programming Over Time","archived":false,"fork":false,"pushed_at":"2025-04-07T18:10:07.000Z","size":1024,"stargazers_count":8,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-07T19:25:30.587Z","etag":null,"topics":["cpp","python","software-engineering","teaching","tum"],"latest_commit_sha":null,"homepage":"https://hofbi.github.io/teaching-tools/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hofbi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-28T11:42:43.000Z","updated_at":"2025-03-03T19:36:55.000Z","dependencies_parsed_at":"2023-02-01T04:01:12.148Z","dependency_job_id":"f6fb8e43-6194-4e7c-8bc8-22e5ac8dc9d9","html_url":"https://github.com/hofbi/teaching-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hofbi%2Fteaching-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hofbi%2Fteaching-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hofbi%2Fteaching-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hofbi%2Fteaching-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hofbi","download_url":"https://codeload.github.com/hofbi/teaching-tools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248345202,"owners_count":21088231,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","python","software-engineering","teaching","tum"],"created_at":"2025-01-19T12:56:54.880Z","updated_at":"2025-04-11T04:33:04.492Z","avatar_url":"https://github.com/hofbi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Teaching Tools\n\n[![Actions Status](https://github.com/hofbi/teaching-tools/workflows/CI/badge.svg)](https://github.com/hofbi/teaching-tools)\n[![Actions Status](https://github.com/hofbi/teaching-tools/workflows/CodeQL/badge.svg)](https://github.com/hofbi/teaching-tools)\n[![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)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\nTeaching tools created for the [Software Engineering Lab](https://www.ei.tum.de/en/lmt/teaching/software-engineering-laboratory/).\n\nFind all documents [online](https://hofbi.github.io/teaching-tools/)\n\n## Paper\n\nIf you use our tools or templates please cite our [paper](https://www.researchgate.net/publication/359502253_Teaching_Software_Engineering_As_Programming_Over_Time).\n\n```tex\n@inproceedings{hofbauer_2022,\n    author    = {Hofbauer, Markus and  Bachhuber, Christoph and  Kuhn, Christopher and  Steinbach, Eckehard},\n    title     = {Teaching Software Engineering As Programming Over Time},\n    booktitle = {IEEE/ACM 4th International Workshop on Software Engineering Education for the Next Generation},\n    address   = {Pittsburgh, PA, USA},\n    month     = {May},\n    year      = {2022},\n    pages     = {1--8},\n    isbn      = {978-1-4503-9336-2/22/05},\n    publisher = {Association for Computing Machinery},\n    url       = {https://doi.org/10.1145/3528231.3528353},\n    doi       = {10.1145/3528231.3528353}\n}\n```\n\n## Documents\n\nCreate documents locally. This requires a [docker](https://docs.docker.com/get-docker/) and [docker compose](https://docs.docker.com/compose/install/) installation.\n\n### Slides\n\n```shell\n# Generate Slides as pdf\nmake slides\n\n# Sever slides\nmake serve\n```\n\n### Docs\n\n```shell\n# Generate the documentation\nmake docs\n```\n\n## Development\n\n### Dependencies\n\nTo 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:\n\n1. Ensure that Docker is installed and running on your machine\n1. Open this folder in VS Code\n1. Install the [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension\n1. Open the command palette (`F1` on Windows, `Shift+Ctrl+P` on Linux)\n1. Call `Remote-Containers: Reopen in Container`\n\nIf you don't want to develop inside a docker container, you can install the dependencies directly on your OS using\n\n```shell\n# Install apt packages\n./install.sh\n\n# Create a python venv (optional)\npython3 -m venv venv\nsource venv/bin/activate\n\n# Install python dependencies\npip3 install -r requirements.txt\n```\n\n### C++\n\n```shell\nmkdir -p build      # Create build dir\ncd build            # Go to build dir\ncmake ..            # CMake\nmake                # Build\nmake test           # Run Tests\n```\n\n### pre-commit git hooks\n\n#### Setup\n\nWe use [pre-commit](https://pre-commit.com/) to manage our git pre-commit hooks.\n`pre-commit` is automatically installed from `requirements.txt`.\nTo set it up, call\n\n```sh\ngit config --unset-all core.hooksPath # may fail if you don't have any hooks set, but that's ok\npre-commit install --overwrite\n```\n\n#### Usage\n\nWith `pre-commit`, you don't use your linters/formatters directly anymore, but through `pre-commit`:\n\n```sh\npre-commit run --file path/to/file1.cpp tools/second_file.py  # run on specific file(s)\npre-commit run --all-files  # run on all files tracked by git\npre-commit run --from-ref origin/master --to-ref HEAD  # run on all files changed on current branch, compared to master\npre-commit run \u003chook_id\u003e --file \u003cpath_to_file\u003e  # run specific hook on specific file\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhofbi%2Fteaching-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhofbi%2Fteaching-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhofbi%2Fteaching-tools/lists"}