# takeofernandez/281-projects architecture

> Architecture diagram of the GitHub repository takeofernandez/281-projects, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/takeofernandez/281-projects
- Repository: https://github.com/takeofernandez/281-projects

## Overview

This repository is a collection of independent C++ coursework programs and data-structure implementations, not one integrated application. Its main user-facing workflows read command-line options and/or standard input, run a project-specific algorithm, and print a result. The graph keeps those workflows separate and includes the reusable queue implementations. No README was provided; some project internals are unsampled, so links are limited to documented or source-supported behavior.

Main entry points: [`p2b-priority-queues/Eecs281PQ.hpp`](https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/Eecs281PQ.hpp) (Priority queue API), [`p2-the-walking-deadline/zombbb.cpp`](https://github.com/takeofernandez/281-projects/blob/main/p2-the-walking-deadline/zombbb.cpp) (Zombie simulation), [`p3-sillyql/silly.cpp`](https://github.com/takeofernandez/281-projects/blob/main/p3-sillyql/silly.cpp) (SillyQL database), [`p0-statistics/project0.cpp`](https://github.com/takeofernandez/281-projects/blob/main/p0-statistics/project0.cpp) (Statistics program)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_projects["Coursework programs"]
  node_stats["Statistics program<br/>[project0.cpp]"]
  node_castle["Castle search<br/>[project1.cpp]"]
  node_zombie["Zombie simulation<br/>[zombbb.cpp]"]
  node_rng["Random spawner<br/>[P2random.cpp]"]
  node_anyfix["Anyfix evaluator<br/>[evaluate.cpp]"]
end

subgraph group_structures["Data structures"]
  node_hash["Hash table<br/>[hashtable.h]"]
  node_avl["AVL tree<br/>[avl_lab.h]"]
  node_pqbase["Priority queue API<br/>[Eecs281PQ.hpp]"]
  node_binarypq["Binary queue<br/>[BinaryPQ.hpp]"]
  node_pairingpq["Pairing heap<br/>[PairingPQ.hpp]"]
  node_sortedpq["Sorted queue<br/>[SortedPQ.hpp]"]
  node_unorderedpq["Unordered queues<br/>[UnorderedPQ.hpp]"]
end

subgraph group_database["Database engine"]
  node_sillyql["SillyQL database<br/>[silly.cpp]"]
  node_fields["Typed fields<br/>[Field.cpp]"]
end

subgraph group_algorithms["Algorithms"]
  node_amongus["Vent-route solver<br/>[amongus.cpp]"]
  node_components["Components finder"]
  node_knapsack["Meal price solver<br/>[deals.h]"]
end

node_user(("Program user"))
node_stdin(("Standard input"))
node_stdout(("Standard output"))

node_user -->|"selects mode"| node_stats
node_stdin -->|"provides data"| node_stats
node_stats -->|"prints statistics"| node_stdout
node_user -->|"selects search"| node_castle
node_stdin -->|"provides map"| node_castle
node_castle -->|"prints path"| node_stdout
node_user -->|"sets options"| node_zombie
node_stdin -->|"provides rounds"| node_zombie
node_zombie -->|"initializes generator"| node_rng
node_zombie -->|"prints simulation"| node_stdout
node_user -->|"issues commands"| node_sillyql
node_stdin -->|"provides commands"| node_sillyql
node_sillyql -->|"stores typed values"| node_fields
node_sillyql -->|"prints query results"| node_stdout
node_user -->|"selects mode"| node_amongus
node_stdin -->|"provides coordinates"| node_amongus
node_amongus -->|"prints route"| node_stdout
node_user -->|"runs program"| node_components
node_stdin -->|"provides graph"| node_components
node_components -->|"prints count"| node_stdout
node_user -->|"submits expression"| node_anyfix
node_anyfix -->|"returns value"| node_user
node_user -->|"submits meal costs"| node_knapsack
node_knapsack -->|"returns minimum price"| node_user
node_pqbase -->|"specialized by"| node_binarypq
node_pqbase -->|"specialized by"| node_pairingpq
node_pqbase -->|"specialized by"| node_sortedpq
node_pqbase -->|"specialized by"| node_unorderedpq

click node_stats "https://github.com/takeofernandez/281-projects/blob/main/p0-statistics/project0.cpp"
click node_castle "https://github.com/takeofernandez/281-projects/blob/main/p1-rescue-the-countess/project1.cpp"
click node_zombie "https://github.com/takeofernandez/281-projects/blob/main/p2-the-walking-deadline/zombbb.cpp"
click node_rng "https://github.com/takeofernandez/281-projects/blob/main/p2-the-walking-deadline/P2random.cpp"
click node_sillyql "https://github.com/takeofernandez/281-projects/blob/main/p3-sillyql/silly.cpp"
click node_fields "https://github.com/takeofernandez/281-projects/blob/main/p3-sillyql/Field.cpp"
click node_amongus "https://github.com/takeofernandez/281-projects/blob/main/p4-among-us/amongus.cpp"
click node_anyfix "https://github.com/takeofernandez/281-projects/blob/main/L01-Anyfix/evaluate.cpp"
click node_components "https://github.com/takeofernandez/281-projects/blob/main/L04-Union_Find/connected_components.cpp"
click node_hash "https://github.com/takeofernandez/281-projects/blob/main/L07-Hash_Table/hashtable.h"
click node_avl "https://github.com/takeofernandez/281-projects/blob/main/L08-AVL_Tree/avl_lab.h"
click node_knapsack "https://github.com/takeofernandez/281-projects/blob/main/L010-Knapsack/deals.h"
click node_pqbase "https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/Eecs281PQ.hpp"
click node_binarypq "https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/BinaryPQ.hpp"
click node_pairingpq "https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/PairingPQ.hpp"
click node_sortedpq "https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/SortedPQ.hpp"
click node_unorderedpq "https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/UnorderedPQ.hpp"

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_stats,node_castle,node_zombie,node_rng,node_anyfix,node_user toneBlue
class node_hash,node_avl,node_pqbase,node_binarypq,node_pairingpq,node_sortedpq,node_unorderedpq toneAmber
class node_sillyql,node_fields toneMint
class node_amongus,node_components,node_knapsack toneRose
class node_stdin,node_stdout toneIndigo
```

## Components

### Coursework programs

- [Statistics program](https://github.com/takeofernandez/281-projects/blob/main/p0-statistics/project0.cpp): `p0-statistics/project0.cpp`
- [Castle search](https://github.com/takeofernandez/281-projects/blob/main/p1-rescue-the-countess/project1.cpp): `p1-rescue-the-countess/project1.cpp`
- [Zombie simulation](https://github.com/takeofernandez/281-projects/blob/main/p2-the-walking-deadline/zombbb.cpp): `p2-the-walking-deadline/zombbb.cpp`
- [Random spawner](https://github.com/takeofernandez/281-projects/blob/main/p2-the-walking-deadline/P2random.cpp): `p2-the-walking-deadline/P2random.cpp`
- [Anyfix evaluator](https://github.com/takeofernandez/281-projects/blob/main/L01-Anyfix/evaluate.cpp): `L01-Anyfix/evaluate.cpp`

### Data structures

- [Hash table](https://github.com/takeofernandez/281-projects/blob/main/L07-Hash_Table/hashtable.h): `L07-Hash_Table/hashtable.h`
- [AVL tree](https://github.com/takeofernandez/281-projects/blob/main/L08-AVL_Tree/avl_lab.h): `L08-AVL_Tree/avl_lab.h`
- [Priority queue API](https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/Eecs281PQ.hpp): `p2b-priority-queues/Eecs281PQ.hpp`
- [Binary queue](https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/BinaryPQ.hpp): `p2b-priority-queues/BinaryPQ.hpp`
- [Pairing heap](https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/PairingPQ.hpp): `p2b-priority-queues/PairingPQ.hpp`
- [Sorted queue](https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/SortedPQ.hpp): `p2b-priority-queues/SortedPQ.hpp`
- [Unordered queues](https://github.com/takeofernandez/281-projects/blob/main/p2b-priority-queues/UnorderedPQ.hpp): `p2b-priority-queues/UnorderedPQ.hpp`

### Database engine

- [SillyQL database](https://github.com/takeofernandez/281-projects/blob/main/p3-sillyql/silly.cpp): `p3-sillyql/silly.cpp`
- [Typed fields](https://github.com/takeofernandez/281-projects/blob/main/p3-sillyql/Field.cpp): `p3-sillyql/Field.cpp`

### Algorithms

- [Vent-route solver](https://github.com/takeofernandez/281-projects/blob/main/p4-among-us/amongus.cpp): `p4-among-us/amongus.cpp`
- [Components finder](https://github.com/takeofernandez/281-projects/blob/main/L04-Union_Find/connected_components.cpp): `L04-Union_Find/connected_components.cpp`
- [Meal price solver](https://github.com/takeofernandez/281-projects/blob/main/L010-Knapsack/deals.h): `L010-Knapsack/deals.h`

### Other components

- **Program user**
- **Standard input**
- **Standard output**

## Connections

- Program user → Statistics program: selects mode
- Standard input → Statistics program: provides data
- Statistics program → Standard output: prints statistics
- Program user → Castle search: selects search
- Standard input → Castle search: provides map
- Castle search → Standard output: prints path
- Program user → Zombie simulation: sets options
- Standard input → Zombie simulation: provides rounds
- Zombie simulation → Random spawner: initializes generator
- Zombie simulation → Standard output: prints simulation
- Program user → SillyQL database: issues commands
- Standard input → SillyQL database: provides commands
- SillyQL database → Typed fields: stores typed values
- SillyQL database → Standard output: prints query results
- Program user → Vent-route solver: selects mode
- Standard input → Vent-route solver: provides coordinates
- Vent-route solver → Standard output: prints route
- Program user → Components finder: runs program
- Standard input → Components finder: provides graph
- Components finder → Standard output: prints count
- Program user → Anyfix evaluator: submits expression
- Anyfix evaluator → Program user: returns value
- Program user → Meal price solver: submits meal costs
- Meal price solver → Program user: returns minimum price
- Priority queue API → Binary queue: specialized by
- Priority queue API → Pairing heap: specialized by
- Priority queue API → Sorted queue: specialized by
- Priority queue API → Unordered queues: specialized by
