# s0closeyets0far/swe2-pastpapers architecture

> Architecture diagram of the GitHub repository s0closeyets0far/swe2-pastpapers, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/s0closeyets0far/swe2-pastpapers
- Repository: https://github.com/s0closeyets0far/swe2-pastpapers

## Overview

This is a static, browser-based CS392 practice question bank. The documented flow is chapter selection, answering and reviewing individual questions, then viewing a score and revisiting mistakes; navigation and shuffle are also supported. The Python question sets register content through shared helpers, while the README identifies the generated JavaScript as the site’s question data. Browser implementation details were not sampled, so links from the page to that data are shown as unverified.

Main entry points: [`index.html`](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html) (Answer question), [`questions.js`](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/questions.js) (Question data), [`source`](https://github.com/s0closeyets0far/swe2-pastpapers/tree/main/source) (Exam question sets), [`source/qb.py`](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/source/qb.py) (Registration helpers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Practice experience"]
  node_chapter["Choose chapter<br/>[index.html]"]
  node_question["Answer question<br/>[index.html]"]
  node_solution["Review solution<br/>[index.html]"]
  node_navigation["Navigate and shuffle<br/>[index.html]"]
  node_results["Score and mistakes<br/>[index.html]"]
end

subgraph group_content["Question content"]
  node_webdata["Question data<br/>[questions.js]"]
end

subgraph group_authoring["Content authoring"]
  node_sets["Exam question sets"]
  node_helpers["Registration helpers<br/>[qb.py]"]
end

node_learner(("Learner"))

node_learner -->|"opens"| node_chapter
node_chapter -->|"selects questions"| node_question
node_question -->|"reveals solution"| node_solution
node_question -->|"navigates or shuffles"| node_navigation
node_question -->|"finishes quiz"| node_results
node_learner -->|"reviews mistakes"| node_results
node_webdata -.->|"supplies content"| node_chapter
node_sets -->|"register questions"| node_helpers

click node_chapter "https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html"
click node_question "https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html"
click node_solution "https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html"
click node_navigation "https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html"
click node_results "https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html"
click node_webdata "https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/questions.js"
click node_sets "https://github.com/s0closeyets0far/swe2-pastpapers/tree/main/source"
click node_helpers "https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/source/qb.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_chapter,node_question,node_solution,node_navigation,node_results toneBlue
class node_webdata toneAmber
class node_sets,node_helpers toneMint
class node_learner toneIndigo
```

## Components

### Practice experience

- [Choose chapter](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html): `index.html`
- [Answer question](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html): `index.html`
- [Review solution](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html): `index.html`
- [Navigate and shuffle](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html): `index.html`
- [Score and mistakes](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/index.html): `index.html`

### Question content

- [Question data](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/questions.js): `questions.js`

### Content authoring

- [Exam question sets](https://github.com/s0closeyets0far/swe2-pastpapers/tree/main/source): `source`
- [Registration helpers](https://github.com/s0closeyets0far/swe2-pastpapers/blob/main/source/qb.py): `source/qb.py`

### Other components

- **Learner**

## Connections

- Learner → Choose chapter: opens (evidence: `README.md`)
- Choose chapter → Answer question: selects questions (evidence: `README.md`)
- Answer question → Review solution: reveals solution (evidence: `README.md`)
- Answer question → Navigate and shuffle: navigates or shuffles (evidence: `README.md`)
- Answer question → Score and mistakes: finishes quiz (evidence: `README.md`)
- Learner → Score and mistakes: reviews mistakes (evidence: `README.md`)
- Question data → Choose chapter: supplies content
- Exam question sets → Registration helpers: register questions (evidence: `source/data_F23b.py`)
