code | ||
dist | ||
notes | ||
protocol | ||
scripts | ||
.env | ||
.gitignore | ||
README.md |
Algorithmen und Datenstrukturen I, WiSe 2021-22
Diese Repository ist für die Seminargruppe j/l am Freitag um 13:15–14:45 im Raum SG 3-14 bzw. SG 4-10 (alternierend).
HINWEIS: In diesem Repository werden keine Personen bezogenen Daten der Studierenden gespeichert.
In diesem Repository findet man:
- Protokolle der Seminargruppe hier.
- Notizen hier.
- Symbolverzeichnis unter notes/glossar.md.
- Referenzen unter notes/quellen.md.
Leistungen während des Semesters
- 12 x freiwillige Serien (unkorrigiert: Lösungen werden per Moodle veröffentlicht)
- 6 x Pflichtserien (jeweils 2 Wochen Bearbeitungsdauer)
- wöchentlich werden im den Lernstunden andere Aufgabenblätter im Raum angezeigt und von Studierenden bearbeitet.
Vorleistungen
- ≥ 50% der Punkte aus den 6 Pflichtserien sollen geschafft werden.
- nur digitale Abgabe!
Code
Im Unterordner code
kann man Codeprojekte in Python und Golang finden, in denen verschiedene Algorithmen implementiert werden
(siehe insbes. code/python/src/algorithms
und code/golang/pkg/algorithms
).
Man kann gerne den Code benutzen, in einer eigenen Repository verändern,
und mit den in dem Kurs präsentierten Algorithmen herumexperimentieren.
Systemvoraussetzungen
Bashscripts
Im Ordner scripts
sind mehrere Workflows als Bashscripts kodiert. (Man kann natürlich ohne sie arbeiten, insbesondere dann, wenn man einen guten IDE hat.)
Zunächst braucht man einen Bashterminal. Das kommt mit OSX (Terminal) und Linux. Für Windows-User braucht man git-for-windows zu installieren, was auch bash mit installiert. (Und für diejenigen, die VSCode oder andere IDEs benutzen, lässt sich bash als integrierten Terminal im IDE selbst verwenden.)
Den Bashscripts benötigen Ausfuhrrechte. Hierfür führe man
chmod +x scripts/*.sh;
aus. Das muss danach nie wiederholt werden.
Jetzt können wir von dem Hauptordner des Repositorys Befehle wie
./scripts/build.sh
./scripts/build.sh ---mode setup
usw. in der Bash-Console ausführen.
Für das Golang-Projekt
Man braucht go Version 1.17.x. (Man kann bestimmt bei späteren Releases höhere Versionen benutzen. Man muss lediglich dann in ./code/golang/go.mod
die Version hochstellen und die Requirements nochmals installieren lassen.) Und einige Packages werden benötigen. Letztere lassen sich mittels
./scripts/build.sh --lang go --mode setup
installieren.
Für das Python-Projekt
Python version 3.x.x (idealerweise zumindest 3.9.5) plus einige Module (siehe code/requirements). Letztere lassen sich mittels
./scripts/build.sh --lang python --mode setup
## mit virtuellem Env:
./scripts/build.sh --lang python --venv true --mode setup
## alternative:
python3 -m pip install -r code/requirements; # linux, osx
py -3 -m pip install -r code/requirements; # Windows
installieren.
Ausführung
Für das Golang-Projekt
Zuerst den Artefakt kompilieren:
./scripts/build.sh --lang go --mode dist;
## oder:
go build -o "dist/ads" "code/golang/main.go";
und dann mit dem gebauten Artefakt arbeiten:
./dist/ads1 help; # zeigt Hilfsanleitung
./dist/ads1 version; # zeigt Version
./dist/ads1 run [--debug]; # führt code aus
Für das Python-Projekt
pushd code/python/src; ## <- auf Pfad mit main.py wechseln
## Anzeigen der Hilfsanleitung:
python3 main.py -h; # linux, OSX
py -3 main.py -h; # Windows
## Ausführung der Testfälle in code/config.yml:
python3 main.py run [--debug]; # linux, OSX
py -3 main.py run [--debug]; # Windows
## --debug Option benutzen, um Infos über Schritte zu zeigen.
popd; ## <- zum vorherigen Pfad zurückwechseln
Oder man erstelle einen bash Skript wie run.sh
, trage die Befehle da ein und führe
chmod +x run.sh; # nur einmalig nötig
./run.sh
aus.