~ /project-overview /repo-structure
Project · Repository

A repository with clear boundaries.

Source code, documentation and the site build are kept separate, so each phase can be reproduced and the site can be rebuilt from Markdown with one command.

src/ · C + Javadocs/ · Markdowntheme/ · custom MkDocs theme

At a glance#

CS330-Parallel-Performance-Evaluation-in-Linux-Project/
├── 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 is theme/home.html, and every other page shares the same header, table of contents, pager and footer.
  • Behaviour lives in docs/assets/js/. site.js handles the theme, navigation, search and code blocks, viz.js draws the home page animations and charts, and team.js powers the team profiles.
  • Deployment runs on every push to main. GitHub Actions builds the site and publishes it to GitHub Pages.
Build locally
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.