mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-11-12 21:50:54 +01:00
kuhy overruled the "do not fix coursework to be better than it was submitted" rule: git history is the archive, so the working tree can be clean. This lands the config and the mechanical half of the cleanup -- 9,281 ruff findings under the fleet config down to 3,686, with no per-file-ignores anywhere. What is in here: - pyproject.toml, the first one in this repo. select = ["ALL"], mypy strict, and the vendored list mirrored into ruff exclude and coverage omit. Five rules are off and each says why; CPY001 is the only judgement call, because stamping a copyright header onto 137 university assignments would assert a licence that was never claimed. No hook is wired up yet -- a gate lands only once its subject is clean. - ruff format + the safe fixes, then a second pass over the docstring rules ruff marks unsafe (they only edit docstring text). 108 files. - TRAK/sightpy is vendored, not coursework: it is rafael-fuente/Python-Raytracer (BSD 3-Clause). Verified against a fresh upstream clone with line endings normalised -- 30 of 32 files byte-identical, ray.py and scene.py carrying a 12- and 13-line local patch that counts rays for the report. 35 files that should never have been linted, now excluded and restored. - WDWR, SPD, MOM and ECRYPT are fully clean, by hand and verified by running them: WDWR's three plot scripts print the same statistics as before, MOM's PuLP model solves to the same cost. WDWR's graph.py had a 342-character CSV header embedded as a string literal, which cannot be wrapped -- the data moved to data/pareto_front.csv. Two 0-byte .py stubs are deleted; an empty file is not a deliverable and git still has it. Three harness bugs found by actually running things: - `run` now forces MPLBACKEND=Agg. TRAK finished its ray trace in 37 seconds and then sat for 45 minutes: plt.show() had opened an image viewer and was waiting for someone to close the window. - TRAK's main.py only pops that viewer with --show now, and its runner writes to a gitignored build/ via the new --entry-args. The default output path is outputs/output.png, which is TRACKED -- a plain run overwrote a submitted deliverable. - course_lib.sh was 357 lines, over this repo's own cap. Split into course_probe.sh and course_run.sh. Verified: ECOTE 26 tests pass, ECRYPT_PROJECT 99 pass, TRAK renders cornell_box in 37s and exits 0, every module compiles, and every import ruff removed was checked to be genuinely unused. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0172dj34FDpao6wsix8ZuCzE
127 lines
6.0 KiB
Markdown
127 lines
6.0 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.
|
|
- **Coursework is held to the same bar as the tooling.** It gets the full
|
|
`select = ["ALL"]` treatment -- annotations, docstrings, naming, the lot --
|
|
and there are no per-file-ignores carving the two course trees out. The
|
|
version that was handed in is preserved by git history, which is a better
|
|
archive than a frozen working tree; this repo's job is code that still
|
|
builds, runs and reads well. (This reverses an earlier rule that said not to
|
|
improve coursework beyond what was submitted. kuhy overruled it on
|
|
2026-08-28: "yes fix it if necessary we can always go back to worse version
|
|
by going back in git repo.")
|
|
- The one thing that is still off limits is *what was delivered*: do not add
|
|
content to a submitted `.pdf`/report that was never in it, and do not merge
|
|
the near-duplicate submission directories listed above.
|
|
|
|
### 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: `ruff` reads and formats `.ipynb` natively (cell-aware, so an
|
|
import used two cells later is not reported unused), which is why there is
|
|
no `nbqa` layer. It rewrites `source` only — outputs are left byte-identical.
|
|
Nothing strips outputs on commit yet; the four notebooks here were committed
|
|
with theirs. 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. |
|