# ssnagin/itmo_sppo architecture

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

- Interactive diagram: https://gitdiagram.com/ssnagin/itmo_sppo
- Repository: https://github.com/ssnagin/itmo_sppo

## Overview

This repository is a collection of university coursework, not a single application. Its principal workflows are independent exercises: users run a script or interact with a console program to calculate, decode, fit, or visualize a result. The map groups the visible coursework by subject and retains the major branches indicated by the file tree. Some modules are represented by their paths and names only; their internal calls are not inferred.

Main entry points: [`1-2 Programming/sem1/lab_1/Main.java`](https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_1/Main.java) (Array calculation), [`4 Optimization methods/lab5/lab5/варианты/вариант_13_задание.py`](https://github.com/ssnagin/itmo_sppo/blob/main/4%20Optimization%20methods/lab5/lab5/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D1%8B/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82_13_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5.py) (Variant exercises), [`1-2 Programming/sem1/lab_2/pokemons93055/src/pokemons93055/Main.java`](https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_2/pokemons93055/src/pokemons93055/Main.java) (Battle setup), [`1-2 Programming/sem1/lab_2/pokemons93055/src/pokemons93055/pokemons/Celebi.java`](https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_2/pokemons93055/src/pokemons93055/pokemons/Celebi.java) (Pokémon roster)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ict["ICT labs"]
  node_number_convert["Number conversion<br/>[AdvancedNumber.py]"]
  node_hamming["Hamming decoder<br/>[hamming_code.py]"]
  node_regex["Regex exercises"]
  node_market_plot["Market chart<br/>[diagram.py]"]
end

subgraph group_programming["Programming labs"]
  node_array_calc["Array calculation<br/>[Main.java]"]
  node_pokemon_main["Battle setup<br/>[Main.java]"]
  node_pokemon_roster["Pokémon roster<br/>[Celebi.java]"]
  node_pokemon_moves["Battle moves<br/>[DoubleHit.java]"]
end

subgraph group_complex["Complex analysis"]
  node_fractals["Fractal rendering"]
  node_fourier["Fourier analysis<br/>[1_2_graph.py]"]
end

subgraph group_optimization["Optimization lab"]
  node_variant_generator["Variant generator"]
  node_variant_tasks["Variant exercises"]
  node_fit_result["Fit visualization"]
end

node_ict_user(("Script user"))
node_csv["Market CSV"]
node_java_user(("Java runner"))
node_battle_lib["Battle library"]
node_analysis_user(("Analysis user"))
node_optimizer_user(("Lab user"))
node_fit_solver["Parameter optimizer"]

node_ict_user -->|"runs"| node_number_convert
node_ict_user -->|"enters bits"| node_hamming
node_ict_user -->|"uses menu"| node_regex
node_ict_user -->|"runs"| node_market_plot
node_csv -->|"supplies data"| node_market_plot
node_java_user -->|"runs"| node_array_calc
node_array_calc -->|"calculates elements"| node_array_calc
node_array_calc -->|"prints matrix"| node_java_user
node_java_user -->|"runs"| node_pokemon_main
node_pokemon_main -->|"instantiates"| node_pokemon_roster
node_pokemon_main -->|"configures battle"| node_battle_lib
node_pokemon_roster -.->|"uses moves"| node_pokemon_moves
node_analysis_user -->|"runs"| node_fractals
node_analysis_user -->|"runs"| node_fourier
node_optimizer_user -->|"runs"| node_variant_generator
node_variant_generator -->|"writes exercise"| node_variant_tasks
node_optimizer_user -->|"runs"| node_variant_tasks
node_variant_tasks -->|"minimizes loss"| node_fit_solver
node_variant_tasks -->|"plots fit"| node_fit_result

click node_number_convert "https://github.com/ssnagin/itmo_sppo/blob/main/1%20ICT/1sem/lab1/AdvancedNumber.py"
click node_hamming "https://github.com/ssnagin/itmo_sppo/blob/main/1%20ICT/1sem/lab2/hamming_code.py"
click node_regex "https://github.com/ssnagin/itmo_sppo/blob/main/1%20ICT/1sem/lab3/regular_expressions.py"
click node_market_plot "https://github.com/ssnagin/itmo_sppo/blob/main/1%20ICT/1sem/lab_5/diagram.py"
click node_array_calc "https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_1/Main.java"
click node_pokemon_main "https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_2/pokemons93055/src/pokemons93055/Main.java"
click node_pokemon_roster "https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_2/pokemons93055/src/pokemons93055/pokemons/Celebi.java"
click node_pokemon_moves "https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_2/pokemons93055/src/pokemons93055/move/physical/DoubleHit.java"
click node_fractals "https://github.com/ssnagin/itmo_sppo/blob/main/3%20Theory%20of%20Complex%20Functions/1_fractals/3_Appolonia_carpet.py"
click node_fourier "https://github.com/ssnagin/itmo_sppo/blob/main/3%20Theory%20of%20Complex%20Functions/2/1_2_graph.py"
click node_variant_generator "https://github.com/ssnagin/itmo_sppo/blob/main/4%20Optimization%20methods/lab5/lab5/%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%20%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D0%BE%D0%B2.py"
click node_variant_tasks "https://github.com/ssnagin/itmo_sppo/blob/main/4%20Optimization%20methods/lab5/lab5/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D1%8B/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82_13_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5.py"
click node_fit_result "https://github.com/ssnagin/itmo_sppo/blob/main/4%20Optimization%20methods/lab5/lab5/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D1%8B/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82_13_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5.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_number_convert,node_hamming,node_regex,node_market_plot,node_ict_user,node_analysis_user,node_optimizer_user toneBlue
class node_array_calc,node_pokemon_main,node_pokemon_roster,node_pokemon_moves toneAmber
class node_fractals,node_fourier toneMint
class node_variant_generator,node_variant_tasks,node_fit_result toneRose
class node_csv,node_java_user,node_battle_lib,node_fit_solver toneIndigo
```

## Components

### ICT labs

- [Number conversion](https://github.com/ssnagin/itmo_sppo/blob/main/1%20ICT/1sem/lab1/AdvancedNumber.py): `1 ICT/1sem/lab1/AdvancedNumber.py`
- [Hamming decoder](https://github.com/ssnagin/itmo_sppo/blob/main/1%20ICT/1sem/lab2/hamming_code.py): `1 ICT/1sem/lab2/hamming_code.py`
- [Regex exercises](https://github.com/ssnagin/itmo_sppo/blob/main/1%20ICT/1sem/lab3/regular_expressions.py): `1 ICT/1sem/lab3/regular_expressions.py`
- [Market chart](https://github.com/ssnagin/itmo_sppo/blob/main/1%20ICT/1sem/lab_5/diagram.py): `1 ICT/1sem/lab_5/diagram.py`

### Programming labs

- [Array calculation](https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_1/Main.java): `1-2 Programming/sem1/lab_1/Main.java`
- [Battle setup](https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_2/pokemons93055/src/pokemons93055/Main.java): `1-2 Programming/sem1/lab_2/pokemons93055/src/pokemons93055/Main.java`
- [Pokémon roster](https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_2/pokemons93055/src/pokemons93055/pokemons/Celebi.java): `1-2 Programming/sem1/lab_2/pokemons93055/src/pokemons93055/pokemons/Celebi.java`
- [Battle moves](https://github.com/ssnagin/itmo_sppo/blob/main/1-2%20Programming/sem1/lab_2/pokemons93055/src/pokemons93055/move/physical/DoubleHit.java): `1-2 Programming/sem1/lab_2/pokemons93055/src/pokemons93055/move/physical/DoubleHit.java`

### Complex analysis

- [Fractal rendering](https://github.com/ssnagin/itmo_sppo/blob/main/3%20Theory%20of%20Complex%20Functions/1_fractals/3_Appolonia_carpet.py): `3 Theory of Complex Functions/1_fractals/3_Appolonia_carpet.py`
- [Fourier analysis](https://github.com/ssnagin/itmo_sppo/blob/main/3%20Theory%20of%20Complex%20Functions/2/1_2_graph.py): `3 Theory of Complex Functions/2/1_2_graph.py`

### Optimization lab

- [Variant generator](https://github.com/ssnagin/itmo_sppo/blob/main/4%20Optimization%20methods/lab5/lab5/%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%20%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D0%BE%D0%B2.py): `4 Optimization methods/lab5/lab5/генератор вариантов.py`
- [Variant exercises](https://github.com/ssnagin/itmo_sppo/blob/main/4%20Optimization%20methods/lab5/lab5/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D1%8B/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82_13_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5.py): `4 Optimization methods/lab5/lab5/варианты/вариант_13_задание.py`
- [Fit visualization](https://github.com/ssnagin/itmo_sppo/blob/main/4%20Optimization%20methods/lab5/lab5/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D1%8B/%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82_13_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5.py): `4 Optimization methods/lab5/lab5/варианты/вариант_13_задание.py`

### Other components

- **Script user**
- **Market CSV**
- **Java runner**
- **Battle library**
- **Analysis user**
- **Lab user**
- **Parameter optimizer**

## Connections

- Script user → Number conversion: runs
- Script user → Hamming decoder: enters bits
- Script user → Regex exercises: uses menu
- Script user → Market chart: runs
- Market CSV → Market chart: supplies data
- Java runner → Array calculation: runs
- Array calculation → Array calculation: calculates elements
- Array calculation → Java runner: prints matrix
- Java runner → Battle setup: runs
- Battle setup → Pokémon roster: instantiates
- Battle setup → Battle library: configures battle
- Pokémon roster → Battle moves: uses moves
- Analysis user → Fractal rendering: runs
- Analysis user → Fourier analysis: runs
- Lab user → Variant generator: runs
- Variant generator → Variant exercises: writes exercise
- Lab user → Variant exercises: runs
- Variant exercises → Parameter optimizer: minimizes loss
- Variant exercises → Fit visualization: plots fit
