mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-11-10 21:27:08 +01:00
Running the courses made this machine stutter during a game. That was me: PORR's suite solves systems up to 10000x10000 and takes every core it is given, and the pip installs are not cheap either. A promise to be careful is not a fix, so `run` now executes inside a transient systemd scope -- MemoryMax=2G, MemorySwapMax=0 (OOM-kill rather than thrash swap), CPUQuota=200%, nice -n 19, ionice -c 3. Same mechanism the pre-push hook in testsAndMisc uses. Verified from inside the scope: memory.max reads 2147483648 and cpu.max reads "200000 100000", so the kernel is enforcing it rather than the script hoping. RUN_MEMORY_MAX and RUN_CPU_QUOTA override it for a single deliberate run. Recorded the two courses that still fail: PORR, which will now be OOM-killed under the cap and needs a smaller default parameter set, and ZPOB, where latexmk exits 12 from bibtex despite producing the PDF. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
114 lines
5.1 KiB
Markdown
114 lines
5.1 KiB
Markdown
# WUT_Computer_Science
|
|
|
|
Archive of university coursework from Warsaw University of Technology.
|
|
44 course directories, 12 languages, ~28k lines of authored code plus the
|
|
submitted reports, figures and datasets. It is an **archive**: the code is
|
|
finished, and the value is that it still builds, runs and is readable.
|
|
|
|
## Repository Layout
|
|
|
|
| Path | What it is |
|
|
|---|---|
|
|
| `Programming/` | 25 course dirs with real code (Python, C/C++, Java, TS/Angular, C#, Unity, MATLAB-adjacent). |
|
|
| `NotProgramming/` | 19 course dirs that are mostly LaTeX reports, PDFs and EDA schematics. Exceptions: `ENUME` (MATLAB), `STUP/makieta` (Angular), `EDABA-LAB` (SQL). |
|
|
| `gates/` | Machine-readable gate inputs. `vendored.txt` is the source of truth for "not my code". |
|
|
| `scripts/` | Repo-local gates. Shims that `exec` into `~/utils` live here too. |
|
|
|
|
Two structural facts that surprise people:
|
|
|
|
- **`Programming/PSD/zin3/third/` and `Programming/psd_project/` are the same
|
|
services under different names**, and `WDWR/project/` vs `WDWR/projekt/`,
|
|
`SDM` vs `SDM2`, and `EMISY/componentSchematic/` vs `EMISY/schematic/` are
|
|
likewise near-duplicates. They are **not** de-duplicated: each is a separate
|
|
submitted deliverable, and merging them would rewrite the academic record.
|
|
- **`Programming/EOPSY/lab{3,4}/task*/work/` is not student code.** It is the
|
|
extraction target of `make setup` from the tarballs in the sibling `ftp/`.
|
|
Verified byte-identical, 14/14 files. Do not edit or split it.
|
|
|
|
## Git Workflow
|
|
|
|
Work directly on `main`; commit and push straight there.
|
|
|
|
```bash
|
|
./install.sh # deps + pre-commit hooks, then verifies and fails loudly
|
|
./run.sh check # the full local gate
|
|
./run.sh status # probe every course dir, regenerate DOCS-runnability.md
|
|
./run.sh run <dir> # build/run one course, capped at 2G RAM and 2 cores
|
|
```
|
|
|
|
`run` executes inside a transient systemd scope (`MemoryMax=2G`,
|
|
`MemorySwapMax=0`, `CPUQuota=200%`, `nice -n 19`, `ionice -c 3`), so a course
|
|
build cannot make an interactive machine stutter. This is not caution, it is a
|
|
kernel-enforced ceiling -- PORR's suite solves 10000x10000 systems and will
|
|
take every core it is given. Raise it deliberately for a single run with
|
|
`RUN_MEMORY_MAX=8G RUN_CPU_QUOTA=800% ./run.sh run <dir>`.
|
|
|
|
Never `--no-verify`. If a gate fails, fix the cause.
|
|
|
|
## Development Workflow
|
|
|
|
- Confirm a change works by **running the thing** and reading its output, not
|
|
by running tests. Tests come after.
|
|
- `git rm --cached`, never bare `git rm`, when removing build output — it must
|
|
stay on disk so a mis-classification is recoverable.
|
|
- After touching `.gitignore` or `.binary-allowlist`, re-run:
|
|
```bash
|
|
git ls-files | git check-ignore --stdin --no-index
|
|
```
|
|
It must print nothing. A file that is both tracked and ignored fails
|
|
**silently** on `git add`: not an error, the edit just never lands. This
|
|
repo had 130 such files.
|
|
|
|
## Code Conventions
|
|
|
|
Anything a hook already enforces is omitted here — read
|
|
`.pre-commit-config.yaml` for that list. What follows is what a linter cannot
|
|
check.
|
|
|
|
### Everything
|
|
|
|
- **Every file is at most 250 lines, source and prose alike**, enforced by the
|
|
shared gate in `~/utils`. There is deliberately no baseline and no
|
|
allowlist: split the file. For a LaTeX report that means `\input{}` per
|
|
section; for a markdown report, sibling `DOCS-*.md` files behind an index.
|
|
- Do not "fix" coursework to be better than it was submitted. Correct what is
|
|
broken, keep what is merely old-fashioned. The archive should still show
|
|
what was actually handed in.
|
|
|
|
### Vendored content
|
|
|
|
`gates/vendored.txt` is the only place a path becomes exempt from lint,
|
|
coverage and the cap. Every entry carries a reason **and how it was
|
|
verified** — an unverified entry is a suppression wearing a costume. The list
|
|
is mirrored into `~/utils/file_length/_tables.py`, `[tool.ruff] exclude` and
|
|
`[tool.coverage.run] omit`; edit the manifest, never a mirror.
|
|
|
|
### Python
|
|
|
|
- `ruff` runs with `select = ["ALL"]` and mypy with `strict = true`.
|
|
- No `# noqa`, no `# type: ignore`. A pre-commit hook rejects both outright.
|
|
- Notebooks: outputs are stripped on commit, lint via `nbqa`. Real logic
|
|
belongs in a sibling importable module — a notebook cannot be covered.
|
|
|
|
### LaTeX
|
|
|
|
Build output is ignored, not committed: `.aux`, `.fls`, `.fdb_latexmk`,
|
|
`.xdv`, `-eps-converted-to.pdf` and friends. The submitted `.pdf` **is**
|
|
committed, because it is the deliverable.
|
|
|
|
### Shell
|
|
|
|
`set -euo pipefail`, quoted expansions, `main "$@"` last. Never embed another
|
|
language's logic inline — put it in its own file so that language's tooling
|
|
applies.
|
|
|
|
## Key Files
|
|
|
|
| Path | Why it matters |
|
|
|---|---|
|
|
| `gates/vendored.txt` | What is not my code, and how each entry was verified. |
|
|
| `gates/coverage.tsv` | Per-directory coverage floors. Floors may only rise. |
|
|
| `.binary-allowlist` | Path-scoped: deliverables allowed under the two course trees, compiled output allowed nowhere. |
|
|
| `DOCS-runnability.md` | Per-course run status, recorded separately for `local` and `ci`. |
|
|
| `TODO-*.md` | Open decisions. Each carries the removal marker and is deleted when the work lands. |
|