At a glance#
├── src/
│ ├── program.c # Phase I · matrix_fork.c (fork/wait)
│ ├── ArraySum.java # Phase II · benchmark harness
│ ├── Summer.java # Phase II · Runnable worker
│ └── original-instructor-code/ # Unmodified Phase II starting point
├── docs/ # Site content (Markdown + assets)
│ ├── index.md # Home page (uses theme/home.html)
│ ├── project-overview/ # Overview, requirements, team, repo
│ ├── phase-1/ # Setup, build & run, experiments, results, report
│ ├── phase-2/ # Plan, work log, results, report, graphs
│ ├── reference/ # Commands, glossary, Git guide
│ └── assets/ # site.css, site.js, viz.js, team.js
├── theme/ # Custom MkDocs theme (Jinja templates)
│ ├── main.html # Layout: header, page hero, TOC, footer
│ ├── home.html # Animated landing page
│ └── 404.html
├── hooks/
│ ├── icons.py # Shared SVG icons (:icon-name: in Markdown)
│ └── seo.py # Canonicals, robots.txt, legacy redirects
├── mkdocs.yml # Site config and navigation
└── .github/workflows/ # Build and deploy to GitHub Pages
Source code#
program.c#
The instructor-provided C program for Phase I. It multiplies two N × N matrices, with rows split across PROCS child processes.
ArraySum.java#
The Phase II harness. It builds a 1,000,000-element array, times the single-thread baseline and runs parallelSum() for 2, 4, 6 and 8 threads.
Summer.java#
The Runnable worker. Each instance sums the cubes of its own index range and exposes the partial sum after join().
Documentation site#
The site is built with MkDocs and a fully custom theme rather than an off-the-shelf one.
- Content is plain Markdown in
docs/. Page metadata in each file's front matter (title, hero line, lead, chips, actions) drives the page header. - Layout lives in
theme/main.html. The landing page istheme/home.html, and every other page shares the same header, table of contents, pager and footer. - Behaviour lives in
docs/assets/js/.site.jshandles the theme, navigation, search and code blocks,viz.jsdraws the home page animations and charts, andteam.jspowers the team profiles. - Deployment runs on every push to
main. GitHub Actions builds the site and publishes it to GitHub Pages.
pip install mkdocs pymdown-extensions
mkdocs serve # live preview at http://127.0.0.1:8000
mkdocs build --clean # static output in site/
Design principles#
Separation of concerns#
Source code is independent of the documentation and reporting material.
Phase isolation#
Phase I and Phase II are organised separately, so each experimental stage stands on its own.
Reproducibility#
Setup, commands, parameters and machine specifications are recorded next to the results they produced.
Maintainability#
Content, layout and behaviour are separate layers, so the site can grow without rewrites.