From c076dc851e6b5944179fbbab840f7673d83d524f Mon Sep 17 00:00:00 2001
From: Thanassis Avgerinos
Date: Fri, 9 Oct 2026 08:52:20 +0300
Subject: [PATCH 1/2] Add an exam questions page, by level from 1 to 4
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Every exam question gets a `level` from 1 (short question) to 4 (the
hardest θέμα), using the rubric now in STYLE.md, and lint requires it on
exam questions only. gen-exercises.py writes questions/exam-questions.md,
the 108 questions grouped by level, each linking to its page on the site,
and _data/exams.yml, which gives every exam question page a level badge
and previous/next links within its level. The home page and the question
bank link to the new page.
---
README.md | 1 +
STYLE.md | 15 +++
_config.yml | 2 +
_data/exams.yml | 109 ++++++++++++++++
_layouts/question.html | 14 +++
questions/README.md | 3 +
questions/exam-questions.md | 144 ++++++++++++++++++++++
questions/exams/exam-2023-dec-q1.md | 1 +
questions/exams/exam-2023-dec-q2.md | 1 +
questions/exams/exam-2023-dec-q3.md | 1 +
questions/exams/exam-2023-dec-q4.md | 1 +
questions/exams/exam-2023-fall-ex0-q1.md | 1 +
questions/exams/exam-2023-fall-ex0-q2.md | 1 +
questions/exams/exam-2023-fall-ex0-q3.md | 1 +
questions/exams/exam-2023-fall-ex0-q4.md | 1 +
questions/exams/exam-2023-fall-ex1-q1.md | 1 +
questions/exams/exam-2023-fall-ex1-q2.md | 1 +
questions/exams/exam-2023-fall-ex1-q3.md | 1 +
questions/exams/exam-2023-fall-ex1-q4.md | 1 +
questions/exams/exam-2023-fall-ex10-q1.md | 1 +
questions/exams/exam-2023-fall-ex10-q2.md | 1 +
questions/exams/exam-2023-fall-ex10-q3.md | 1 +
questions/exams/exam-2023-fall-ex10-q4.md | 1 +
questions/exams/exam-2023-fall-ex11-q1.md | 1 +
questions/exams/exam-2023-fall-ex11-q2.md | 1 +
questions/exams/exam-2023-fall-ex11-q3.md | 1 +
questions/exams/exam-2023-fall-ex11-q4.md | 1 +
questions/exams/exam-2023-fall-ex12-q1.md | 1 +
questions/exams/exam-2023-fall-ex12-q2.md | 1 +
questions/exams/exam-2023-fall-ex12-q3.md | 1 +
questions/exams/exam-2023-fall-ex12-q4.md | 1 +
questions/exams/exam-2023-fall-ex13-q1.md | 1 +
questions/exams/exam-2023-fall-ex13-q2.md | 1 +
questions/exams/exam-2023-fall-ex13-q3.md | 1 +
questions/exams/exam-2023-fall-ex13-q4.md | 1 +
questions/exams/exam-2023-fall-ex14-q1.md | 1 +
questions/exams/exam-2023-fall-ex14-q2.md | 1 +
questions/exams/exam-2023-fall-ex14-q3.md | 1 +
questions/exams/exam-2023-fall-ex14-q4.md | 1 +
questions/exams/exam-2023-fall-ex15-q1.md | 1 +
questions/exams/exam-2023-fall-ex15-q2.md | 1 +
questions/exams/exam-2023-fall-ex15-q3.md | 1 +
questions/exams/exam-2023-fall-ex15-q4.md | 1 +
questions/exams/exam-2023-fall-ex2-q1.md | 1 +
questions/exams/exam-2023-fall-ex2-q2.md | 1 +
questions/exams/exam-2023-fall-ex2-q3.md | 1 +
questions/exams/exam-2023-fall-ex2-q4.md | 1 +
questions/exams/exam-2023-fall-ex3-q1.md | 1 +
questions/exams/exam-2023-fall-ex3-q2.md | 1 +
questions/exams/exam-2023-fall-ex3-q3.md | 1 +
questions/exams/exam-2023-fall-ex3-q4.md | 1 +
questions/exams/exam-2023-fall-ex4-q1.md | 1 +
questions/exams/exam-2023-fall-ex4-q2.md | 1 +
questions/exams/exam-2023-fall-ex4-q3.md | 1 +
questions/exams/exam-2023-fall-ex4-q4.md | 1 +
questions/exams/exam-2023-fall-ex5-q1.md | 1 +
questions/exams/exam-2023-fall-ex5-q2.md | 1 +
questions/exams/exam-2023-fall-ex5-q3.md | 1 +
questions/exams/exam-2023-fall-ex5-q4.md | 1 +
questions/exams/exam-2023-fall-ex6-q1.md | 1 +
questions/exams/exam-2023-fall-ex6-q2.md | 1 +
questions/exams/exam-2023-fall-ex6-q3.md | 1 +
questions/exams/exam-2023-fall-ex6-q4.md | 1 +
questions/exams/exam-2023-fall-ex7-q1.md | 1 +
questions/exams/exam-2023-fall-ex7-q2.md | 1 +
questions/exams/exam-2023-fall-ex7-q3.md | 1 +
questions/exams/exam-2023-fall-ex7-q4.md | 1 +
questions/exams/exam-2023-fall-ex8-q1.md | 1 +
questions/exams/exam-2023-fall-ex8-q2.md | 1 +
questions/exams/exam-2023-fall-ex8-q3.md | 1 +
questions/exams/exam-2023-fall-ex8-q4.md | 1 +
questions/exams/exam-2023-fall-ex9-q1.md | 1 +
questions/exams/exam-2023-fall-ex9-q2.md | 1 +
questions/exams/exam-2023-fall-ex9-q3.md | 1 +
questions/exams/exam-2023-fall-ex9-q4.md | 1 +
questions/exams/exam-2024-dec-q1.md | 1 +
questions/exams/exam-2024-dec-q2.md | 1 +
questions/exams/exam-2024-dec-q3.md | 1 +
questions/exams/exam-2024-dec-q4.md | 1 +
questions/exams/exam-2024-jul-q1.md | 1 +
questions/exams/exam-2024-jul-q2.md | 1 +
questions/exams/exam-2024-jul-q3.md | 1 +
questions/exams/exam-2024-jul-q4.md | 1 +
questions/exams/exam-2024-sep-q1.md | 1 +
questions/exams/exam-2024-sep-q2.md | 1 +
questions/exams/exam-2024-sep-q3.md | 1 +
questions/exams/exam-2024-sep-q4.md | 1 +
questions/exams/exam-2024-sep-q5.md | 1 +
questions/exams/exam-2024-sep-q6.md | 1 +
questions/exams/exam-2025-jan-q1.md | 1 +
questions/exams/exam-2025-jan-q2.md | 1 +
questions/exams/exam-2025-jan-q3.md | 1 +
questions/exams/exam-2025-jan-q4.md | 1 +
questions/exams/exam-2025-jan-q5.md | 1 +
questions/exams/exam-2025-jan-q6.md | 1 +
questions/exams/exam-2025-sep-q1.md | 1 +
questions/exams/exam-2025-sep-q2.md | 1 +
questions/exams/exam-2025-sep-q3.md | 1 +
questions/exams/exam-2025-sep-q4.md | 1 +
questions/exams/exam-2025-sep-q5.md | 1 +
questions/exams/exam-2026-jan-q1.md | 1 +
questions/exams/exam-2026-jan-q2.md | 1 +
questions/exams/exam-2026-jan-q3.md | 1 +
questions/exams/exam-2026-jan-q4.md | 1 +
questions/exams/exam-2026-jan-q5.md | 1 +
questions/exams/exam-2026-jan-q6.md | 1 +
questions/exams/exam-2026-jun-q1.md | 1 +
questions/exams/exam-2026-jun-q2.md | 1 +
questions/exams/exam-2026-jun-q3.md | 1 +
questions/exams/exam-2026-jun-q4.md | 1 +
questions/exams/exam-2026-sep-q1.md | 1 +
questions/exams/exam-2026-sep-q2.md | 1 +
questions/exams/exam-2026-sep-q3.md | 1 +
questions/exams/exam-2026-sep-q4.md | 1 +
questions/exams/exam-2026-sep-q5.md | 1 +
tools/gen-exercises.py | 62 ++++++++++
116 files changed, 458 insertions(+)
create mode 100644 _data/exams.yml
create mode 100644 questions/exam-questions.md
diff --git a/README.md b/README.md
index 6f797ca..00b4003 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,7 @@
Ολόκληρος ο οδηγός (PDF)
Ολόκληρος ο οδηγός (Markdown)
Τράπεζα ασκήσεων
+ Θέματα εξετάσεων
Γλωσσάριο
GitHub
diff --git a/STYLE.md b/STYLE.md
index e2c67aa..ccc0456 100644
--- a/STYLE.md
+++ b/STYLE.md
@@ -246,6 +246,7 @@ source:
chapters: [14, 12]
topics: [strings, pointers]
difficulty: 2
+level: 1
type: programming
---
@@ -266,6 +267,20 @@ type: programming
primary chapter**, where most of the needed material is taught. List others only if
the question genuinely needs them.
- `difficulty`: 1 (direct application), 2 (combines ideas), 3 (exam-hard or longer).
+- `level` (exam questions only, required there): where the question sits on the 1-4 exam
+ scale. The question's position in the exam is a strong hint, but its content decides.
+ `tools/gen-exercises.py` lists every exam question by level in `questions/exam-questions.md`.
+ 1. **Short question, not a whole program:** explain or trace given code (what it prints,
+ what a function does), a type, operator or memory question, or a short fragment or
+ function. Usually the first θέματα.
+ 2. **Simple complete program with input:** a whole program that reads its data from
+ stdin or argv and does simple processing on it, with one loop or a simple double loop.
+ Usually Θέμα 3.
+ 3. **Data structures and dynamic memory:** a program built around a data structure
+ (linked lists, trees, ...) with heap allocation (`malloc`/`free`) and the pointer
+ handling that goes with it.
+ 4. **The hardest θέμα:** usually the last one. Larger programs that may combine the above
+ with file handling or need dynamic programming or another non-obvious algorithm.
- `type` is one of:
- `programming`: write a program or function
- `short-answer`: explain or define
diff --git a/_config.yml b/_config.yml
index c634ddf..72adfa2 100644
--- a/_config.yml
+++ b/_config.yml
@@ -30,6 +30,8 @@ defaults:
values: {layout: question}
- scope: {path: questions/README.md}
values: {layout: default}
+ - scope: {path: questions/exam-questions.md}
+ values: {layout: default}
plugins:
- jekyll-coffeescript
diff --git a/_data/exams.yml b/_data/exams.yml
new file mode 100644
index 0000000..2dcad41
--- /dev/null
+++ b/_data/exams.yml
@@ -0,0 +1,109 @@
+# Generated by tools/gen-exercises.py: exam question id -> level, previous, next.
+exam-2026-sep-q1: {level: 1, next: exam-2026-sep-q2}
+exam-2026-sep-q2: {level: 1, prev: exam-2026-sep-q1, next: exam-2026-jun-q1}
+exam-2026-jun-q1: {level: 1, prev: exam-2026-sep-q2, next: exam-2026-jun-q2}
+exam-2026-jun-q2: {level: 1, prev: exam-2026-jun-q1, next: exam-2026-jan-q1}
+exam-2026-jan-q1: {level: 1, prev: exam-2026-jun-q2, next: exam-2026-jan-q2}
+exam-2026-jan-q2: {level: 1, prev: exam-2026-jan-q1, next: exam-2026-jan-q6}
+exam-2026-jan-q6: {level: 1, prev: exam-2026-jan-q2, next: exam-2025-sep-q1}
+exam-2025-sep-q1: {level: 1, prev: exam-2026-jan-q6, next: exam-2025-sep-q2}
+exam-2025-sep-q2: {level: 1, prev: exam-2025-sep-q1, next: exam-2025-jan-q1}
+exam-2025-jan-q1: {level: 1, prev: exam-2025-sep-q2, next: exam-2025-jan-q2}
+exam-2025-jan-q2: {level: 1, prev: exam-2025-jan-q1, next: exam-2024-sep-q1}
+exam-2024-sep-q1: {level: 1, prev: exam-2025-jan-q2, next: exam-2024-sep-q2}
+exam-2024-sep-q2: {level: 1, prev: exam-2024-sep-q1, next: exam-2024-sep-q3}
+exam-2024-sep-q3: {level: 1, prev: exam-2024-sep-q2}
+exam-2026-sep-q3: {level: 2, next: exam-2026-jun-q3}
+exam-2026-jun-q3: {level: 2, prev: exam-2026-sep-q3, next: exam-2026-jan-q3}
+exam-2026-jan-q3: {level: 2, prev: exam-2026-jun-q3, next: exam-2025-sep-q3}
+exam-2025-sep-q3: {level: 2, prev: exam-2026-jan-q3, next: exam-2025-jan-q3}
+exam-2025-jan-q3: {level: 2, prev: exam-2025-sep-q3, next: exam-2024-dec-q1}
+exam-2024-dec-q1: {level: 2, prev: exam-2025-jan-q3, next: exam-2024-dec-q2}
+exam-2024-dec-q2: {level: 2, prev: exam-2024-dec-q1, next: exam-2024-sep-q4}
+exam-2024-sep-q4: {level: 2, prev: exam-2024-dec-q2, next: exam-2024-jul-q1}
+exam-2024-jul-q1: {level: 2, prev: exam-2024-sep-q4, next: exam-2024-jul-q2}
+exam-2024-jul-q2: {level: 2, prev: exam-2024-jul-q1, next: exam-2023-dec-q1}
+exam-2023-dec-q1: {level: 2, prev: exam-2024-jul-q2, next: exam-2023-fall-ex0-q1}
+exam-2023-fall-ex0-q1: {level: 2, prev: exam-2023-dec-q1, next: exam-2023-dec-q2}
+exam-2023-dec-q2: {level: 2, prev: exam-2023-fall-ex0-q1, next: exam-2023-fall-ex0-q2}
+exam-2023-fall-ex0-q2: {level: 2, prev: exam-2023-dec-q2, next: exam-2023-fall-ex1-q1}
+exam-2023-fall-ex1-q1: {level: 2, prev: exam-2023-fall-ex0-q2, next: exam-2023-fall-ex1-q2}
+exam-2023-fall-ex1-q2: {level: 2, prev: exam-2023-fall-ex1-q1, next: exam-2023-fall-ex2-q1}
+exam-2023-fall-ex2-q1: {level: 2, prev: exam-2023-fall-ex1-q2, next: exam-2023-fall-ex2-q2}
+exam-2023-fall-ex2-q2: {level: 2, prev: exam-2023-fall-ex2-q1, next: exam-2023-fall-ex3-q1}
+exam-2023-fall-ex3-q1: {level: 2, prev: exam-2023-fall-ex2-q2, next: exam-2023-fall-ex3-q2}
+exam-2023-fall-ex3-q2: {level: 2, prev: exam-2023-fall-ex3-q1, next: exam-2023-fall-ex3-q3}
+exam-2023-fall-ex3-q3: {level: 2, prev: exam-2023-fall-ex3-q2, next: exam-2023-fall-ex4-q1}
+exam-2023-fall-ex4-q1: {level: 2, prev: exam-2023-fall-ex3-q3, next: exam-2023-fall-ex4-q2}
+exam-2023-fall-ex4-q2: {level: 2, prev: exam-2023-fall-ex4-q1, next: exam-2023-fall-ex4-q3}
+exam-2023-fall-ex4-q3: {level: 2, prev: exam-2023-fall-ex4-q2, next: exam-2023-fall-ex4-q4}
+exam-2023-fall-ex4-q4: {level: 2, prev: exam-2023-fall-ex4-q3, next: exam-2023-fall-ex5-q1}
+exam-2023-fall-ex5-q1: {level: 2, prev: exam-2023-fall-ex4-q4, next: exam-2023-fall-ex5-q2}
+exam-2023-fall-ex5-q2: {level: 2, prev: exam-2023-fall-ex5-q1, next: exam-2023-fall-ex6-q1}
+exam-2023-fall-ex6-q1: {level: 2, prev: exam-2023-fall-ex5-q2, next: exam-2023-fall-ex6-q2}
+exam-2023-fall-ex6-q2: {level: 2, prev: exam-2023-fall-ex6-q1, next: exam-2023-fall-ex6-q3}
+exam-2023-fall-ex6-q3: {level: 2, prev: exam-2023-fall-ex6-q2, next: exam-2023-fall-ex7-q1}
+exam-2023-fall-ex7-q1: {level: 2, prev: exam-2023-fall-ex6-q3, next: exam-2023-fall-ex7-q2}
+exam-2023-fall-ex7-q2: {level: 2, prev: exam-2023-fall-ex7-q1, next: exam-2023-fall-ex7-q4}
+exam-2023-fall-ex7-q4: {level: 2, prev: exam-2023-fall-ex7-q2, next: exam-2023-fall-ex8-q1}
+exam-2023-fall-ex8-q1: {level: 2, prev: exam-2023-fall-ex7-q4, next: exam-2023-fall-ex8-q2}
+exam-2023-fall-ex8-q2: {level: 2, prev: exam-2023-fall-ex8-q1, next: exam-2023-fall-ex9-q1}
+exam-2023-fall-ex9-q1: {level: 2, prev: exam-2023-fall-ex8-q2, next: exam-2023-fall-ex9-q2}
+exam-2023-fall-ex9-q2: {level: 2, prev: exam-2023-fall-ex9-q1, next: exam-2023-fall-ex10-q1}
+exam-2023-fall-ex10-q1: {level: 2, prev: exam-2023-fall-ex9-q2, next: exam-2023-fall-ex10-q2}
+exam-2023-fall-ex10-q2: {level: 2, prev: exam-2023-fall-ex10-q1, next: exam-2023-fall-ex11-q1}
+exam-2023-fall-ex11-q1: {level: 2, prev: exam-2023-fall-ex10-q2, next: exam-2023-fall-ex11-q2}
+exam-2023-fall-ex11-q2: {level: 2, prev: exam-2023-fall-ex11-q1, next: exam-2023-fall-ex11-q4}
+exam-2023-fall-ex11-q4: {level: 2, prev: exam-2023-fall-ex11-q2, next: exam-2023-fall-ex12-q1}
+exam-2023-fall-ex12-q1: {level: 2, prev: exam-2023-fall-ex11-q4, next: exam-2023-fall-ex12-q2}
+exam-2023-fall-ex12-q2: {level: 2, prev: exam-2023-fall-ex12-q1, next: exam-2023-fall-ex12-q3}
+exam-2023-fall-ex12-q3: {level: 2, prev: exam-2023-fall-ex12-q2, next: exam-2023-fall-ex12-q4}
+exam-2023-fall-ex12-q4: {level: 2, prev: exam-2023-fall-ex12-q3, next: exam-2023-fall-ex13-q1}
+exam-2023-fall-ex13-q1: {level: 2, prev: exam-2023-fall-ex12-q4, next: exam-2023-fall-ex13-q4}
+exam-2023-fall-ex13-q4: {level: 2, prev: exam-2023-fall-ex13-q1, next: exam-2023-fall-ex14-q1}
+exam-2023-fall-ex14-q1: {level: 2, prev: exam-2023-fall-ex13-q4, next: exam-2023-fall-ex14-q2}
+exam-2023-fall-ex14-q2: {level: 2, prev: exam-2023-fall-ex14-q1, next: exam-2023-fall-ex15-q1}
+exam-2023-fall-ex15-q1: {level: 2, prev: exam-2023-fall-ex14-q2, next: exam-2023-fall-ex15-q2}
+exam-2023-fall-ex15-q2: {level: 2, prev: exam-2023-fall-ex15-q1, next: exam-2023-fall-ex15-q4}
+exam-2023-fall-ex15-q4: {level: 2, prev: exam-2023-fall-ex15-q2}
+exam-2026-sep-q4: {level: 3, next: exam-2026-jan-q4}
+exam-2026-jan-q4: {level: 3, prev: exam-2026-sep-q4, next: exam-2025-sep-q4}
+exam-2025-sep-q4: {level: 3, prev: exam-2026-jan-q4, next: exam-2025-jan-q4}
+exam-2025-jan-q4: {level: 3, prev: exam-2025-sep-q4, next: exam-2025-jan-q5}
+exam-2025-jan-q5: {level: 3, prev: exam-2025-jan-q4, next: exam-2024-sep-q5}
+exam-2024-sep-q5: {level: 3, prev: exam-2025-jan-q5, next: exam-2024-jul-q4}
+exam-2024-jul-q4: {level: 3, prev: exam-2024-sep-q5, next: exam-2023-fall-ex0-q3}
+exam-2023-fall-ex0-q3: {level: 3, prev: exam-2024-jul-q4, next: exam-2023-fall-ex1-q3}
+exam-2023-fall-ex1-q3: {level: 3, prev: exam-2023-fall-ex0-q3, next: exam-2023-fall-ex1-q4}
+exam-2023-fall-ex1-q4: {level: 3, prev: exam-2023-fall-ex1-q3, next: exam-2023-fall-ex2-q3}
+exam-2023-fall-ex2-q3: {level: 3, prev: exam-2023-fall-ex1-q4, next: exam-2023-fall-ex5-q3}
+exam-2023-fall-ex5-q3: {level: 3, prev: exam-2023-fall-ex2-q3, next: exam-2023-fall-ex5-q4}
+exam-2023-fall-ex5-q4: {level: 3, prev: exam-2023-fall-ex5-q3, next: exam-2023-fall-ex6-q4}
+exam-2023-fall-ex6-q4: {level: 3, prev: exam-2023-fall-ex5-q4, next: exam-2023-fall-ex8-q3}
+exam-2023-fall-ex8-q3: {level: 3, prev: exam-2023-fall-ex6-q4, next: exam-2023-fall-ex8-q4}
+exam-2023-fall-ex8-q4: {level: 3, prev: exam-2023-fall-ex8-q3, next: exam-2023-fall-ex9-q3}
+exam-2023-fall-ex9-q3: {level: 3, prev: exam-2023-fall-ex8-q4, next: exam-2023-fall-ex9-q4}
+exam-2023-fall-ex9-q4: {level: 3, prev: exam-2023-fall-ex9-q3, next: exam-2023-fall-ex10-q3}
+exam-2023-fall-ex10-q3: {level: 3, prev: exam-2023-fall-ex9-q4, next: exam-2023-fall-ex10-q4}
+exam-2023-fall-ex10-q4: {level: 3, prev: exam-2023-fall-ex10-q3, next: exam-2023-fall-ex11-q3}
+exam-2023-fall-ex11-q3: {level: 3, prev: exam-2023-fall-ex10-q4, next: exam-2023-fall-ex13-q2}
+exam-2023-fall-ex13-q2: {level: 3, prev: exam-2023-fall-ex11-q3, next: exam-2023-fall-ex13-q3}
+exam-2023-fall-ex13-q3: {level: 3, prev: exam-2023-fall-ex13-q2, next: exam-2023-fall-ex14-q3}
+exam-2023-fall-ex14-q3: {level: 3, prev: exam-2023-fall-ex13-q3, next: exam-2023-fall-ex15-q3}
+exam-2023-fall-ex15-q3: {level: 3, prev: exam-2023-fall-ex14-q3}
+exam-2026-sep-q5: {level: 4, next: exam-2026-jun-q4}
+exam-2026-jun-q4: {level: 4, prev: exam-2026-sep-q5, next: exam-2026-jan-q5}
+exam-2026-jan-q5: {level: 4, prev: exam-2026-jun-q4, next: exam-2025-sep-q5}
+exam-2025-sep-q5: {level: 4, prev: exam-2026-jan-q5, next: exam-2025-jan-q6}
+exam-2025-jan-q6: {level: 4, prev: exam-2025-sep-q5, next: exam-2024-dec-q3}
+exam-2024-dec-q3: {level: 4, prev: exam-2025-jan-q6, next: exam-2024-dec-q4}
+exam-2024-dec-q4: {level: 4, prev: exam-2024-dec-q3, next: exam-2024-sep-q6}
+exam-2024-sep-q6: {level: 4, prev: exam-2024-dec-q4, next: exam-2024-jul-q3}
+exam-2024-jul-q3: {level: 4, prev: exam-2024-sep-q6, next: exam-2023-dec-q3}
+exam-2023-dec-q3: {level: 4, prev: exam-2024-jul-q3, next: exam-2023-dec-q4}
+exam-2023-dec-q4: {level: 4, prev: exam-2023-dec-q3, next: exam-2023-fall-ex0-q4}
+exam-2023-fall-ex0-q4: {level: 4, prev: exam-2023-dec-q4, next: exam-2023-fall-ex2-q4}
+exam-2023-fall-ex2-q4: {level: 4, prev: exam-2023-fall-ex0-q4, next: exam-2023-fall-ex3-q4}
+exam-2023-fall-ex3-q4: {level: 4, prev: exam-2023-fall-ex2-q4, next: exam-2023-fall-ex7-q3}
+exam-2023-fall-ex7-q3: {level: 4, prev: exam-2023-fall-ex3-q4, next: exam-2023-fall-ex14-q4}
+exam-2023-fall-ex14-q4: {level: 4, prev: exam-2023-fall-ex7-q3}
diff --git a/_layouts/question.html b/_layouts/question.html
index 34f8d04..2ef5b2b 100644
--- a/_layouts/question.html
+++ b/_layouts/question.html
@@ -11,6 +11,19 @@
+{% assign exam = site.data.exams[page.id] %}
+{% if exam %}
+
+{% endif %}
+
{% assign ref = site.data.refs[page.id] %}
{% if ref %}{{ ref.label }} · {% endif %}{{ page.title }}
@@ -18,6 +31,7 @@ {% if ref %}{{ ref.label }} · {% endif %}{{ page.title }}
{% if page.source.url %}{{ page.source.title }}{% else %}{{ page.source.title }}{% endif %}
· Δυσκολία {% case page.difficulty %}{% when 1 %}★☆☆{% when 2 %}★★☆{% else %}★★★{% endcase %}
· {{ page.type }}
+ {% if exam %}· Επίπεδο {{ exam.level }}/4{% endif %}
{% if page.stats %}· {{ page.stats.accuracy }}% σωστές απαντήσεις ({{ page.stats.responses }} απαντήσεις στο αμφιθέατρο){% endif %}
· Κεφάλαια: {% for c in page.chapters %}{{ c }}{% unless forloop.last %}, {% endunless %}{% endfor %}
diff --git a/questions/README.md b/questions/README.md
index 9cf5023..58d3bb0 100644
--- a/questions/README.md
+++ b/questions/README.md
@@ -8,6 +8,9 @@
(Kahoot), και ένα μόνιμο αναγνωριστικό, π.χ. `exam-2025-jan-q2`. Ο αριθμός
ακολουθεί την τρέχουσα έκδοση του οδηγού· το αναγνωριστικό δεν αλλάζει ποτέ.
+Τα θέματα εξετάσεων, ταξινομημένα σε τέσσερα επίπεδα δυσκολίας, είναι και στη σελίδα
+[Θέματα εξετάσεων](exam-questions.md).
+
Σε μορφή για εργαλεία: [`questions.json`](https://progintro.github.io/study/downloads/questions.json).
Στα θέματα της online εξέτασης Δεκεμβρίου 2023 (`exam-2023-fall-*`) ισχύει για όλες τις ασκήσεις: τα προγράμματα πρέπει να είναι ευανάγνωστα, αποδοτικά σε χώρο και χρόνο και να έχουν έξοδο ίδια με τα παραδείγματα εκτέλεσης. Για είσοδο εκτός προδιαγραφών το πρόγραμμα τερματίζει με exit code 1 και μήνυμα σφάλματος.
diff --git a/questions/exam-questions.md b/questions/exam-questions.md
new file mode 100644
index 0000000..1a33eb7
--- /dev/null
+++ b/questions/exam-questions.md
@@ -0,0 +1,144 @@
+# Θέματα εξετάσεων
+
+
+
+Όλα τα θέματα εξετάσεων προηγούμενων ετών (108), σε τέσσερα επίπεδα, από το
+πιο εύκολο (1) στο πιο δύσκολο (4). Κάθε θέμα ανοίγει στη δική του σελίδα, με την
+εκφώνηση και μια υπόδειξη, και από εκεί πηγαίνετε στο προηγούμενο ή στο επόμενο θέμα του
+ίδιου επιπέδου. Όλες οι ασκήσεις του οδηγού, ανά κεφάλαιο, είναι στην
+[τράπεζα ασκήσεων](./).
+
+1. [Σύντομες ερωτήσεις](#level-1) (14)
+2. [Απλά προγράμματα με δεδομένα εισόδου](#level-2) (53)
+3. [Δομές δεδομένων και δυναμική μνήμη](#level-3) (25)
+4. [Τα δυσκολότερα θέματα](#level-4) (16)
+
+Στα θέματα της online εξέτασης Δεκεμβρίου 2023 (`exam-2023-fall-*`) ισχύει για όλες τις ασκήσεις: τα προγράμματα πρέπει να είναι ευανάγνωστα, αποδοτικά σε χώρο και χρόνο και να έχουν έξοδο ίδια με τα παραδείγματα εκτέλεσης. Για είσοδο εκτός προδιαγραφών το πρόγραμμα τερματίζει με exit code 1 και μήνυμα σφάλματος.
+
+
+
+## Επίπεδο 1: Σύντομες ερωτήσεις (14)
+
+1. **[Mystery](exams/exam-2026-sep-q1.md)** · Εξέταση Σεπτεμβρίου 2026, Θέμα 1 · Κεφ. [6](../chapters/06-control-flow/) · trace
+2. **[Η συνάρτηση cons](exams/exam-2026-sep-q2.md)** · Εξέταση Σεπτεμβρίου 2026, Θέμα 2 · Κεφ. [10](../chapters/10-arrays/) · trace
+3. **[Η συνάρτηση mystery](exams/exam-2026-jun-q1.md)** · Εξέταση Ιουνίου 2026, Θέμα 1 · Κεφ. [5](../chapters/05-operators-statements/) · trace
+4. **[Η συνάρτηση paws](exams/exam-2026-jun-q2.md)** · Εξέταση Ιουνίου 2026, Θέμα 2 · Κεφ. [10](../chapters/10-arrays/) · debug
+5. **[Mystery](exams/exam-2026-jan-q1.md)** · Εξέταση Ιανουαρίου 2026, Θέμα 1 · Κεφ. [5](../chapters/05-operators-statements/) · trace
+6. **[Η συνάρτηση compute](exams/exam-2026-jan-q2.md)** · Εξέταση Ιανουαρίου 2026, Θέμα 2 · Κεφ. [17](../chapters/17-binary-search-sorting/) · trace
+7. **[Ο Στέργιος Ξαναχτυπά](exams/exam-2026-jan-q6.md)** · Εξέταση Ιανουαρίου 2026, Θέμα 6 · Κεφ. [11](../chapters/11-pointers-recursion/) · trace
+8. **[Mystery](exams/exam-2025-sep-q1.md)** · Εξέταση Σεπτεμβρίου 2025, Θέμα 1 · Κεφ. [6](../chapters/06-control-flow/) · trace
+9. **[Η συνάρτηση transform](exams/exam-2025-sep-q2.md)** · Εξέταση Σεπτεμβρίου 2025, Θέμα 2 · Κεφ. [14](../chapters/14-scope-strings/) · trace
+10. **[Mystery](exams/exam-2025-jan-q1.md)** · Εξέταση Ιανουαρίου 2025, Θέμα 1 · Κεφ. [5](../chapters/05-operators-statements/) · trace
+11. **[Η συνάρτηση dog](exams/exam-2025-jan-q2.md)** · Εξέταση Ιανουαρίου 2025, Θέμα 2 · Κεφ. [14](../chapters/14-scope-strings/) · trace
+12. **[Η συνάρτηση about](exams/exam-2024-sep-q1.md)** · Εξέταση Σεπτεμβρίου 2024, Θέμα 1 · Κεφ. [3](../chapters/03-functions/) · programming
+13. **[Η συνάρτηση what](exams/exam-2024-sep-q2.md)** · Εξέταση Σεπτεμβρίου 2024, Θέμα 2 · Κεφ. [17](../chapters/17-binary-search-sorting/) · trace
+14. **[Εύρεση μηδενός σε πίνακα](exams/exam-2024-sep-q3.md)** · Εξέταση Σεπτεμβρίου 2024, Θέμα 3 · Κεφ. [17](../chapters/17-binary-search-sorting/) · programming
+
+
+
+## Επίπεδο 2: Απλά προγράμματα με δεδομένα εισόδου (53)
+
+1. **[Το μεγαλύτερο άλμα - polevault](exams/exam-2026-sep-q3.md)** · Εξέταση Σεπτεμβρίου 2026, Θέμα 3 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+2. **[Επενδύσεις στο Χρηματιστήριο](exams/exam-2026-jun-q3.md)** · Εξέταση Ιουνίου 2026, Θέμα 3 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+3. **[Εύρεση Πρώτων Παραγόντων - factor](exams/exam-2026-jan-q3.md)** · Εξέταση Ιανουαρίου 2026, Θέμα 3 · Κεφ. [6](../chapters/06-control-flow/) · programming
+4. **[Μέση Τιμή Τυχαίων Μεταβλητών - mean](exams/exam-2025-sep-q3.md)** · Εξέταση Σεπτεμβρίου 2025, Θέμα 3 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+5. **[Κινούμενος Μέσος Όρος - sma](exams/exam-2025-jan-q3.md)** · Εξέταση Ιανουαρίου 2025, Θέμα 3 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+6. **[Προσεγγίζοντας το π](exams/exam-2024-dec-q1.md)** · Κατατακτήριες Δεκεμβρίου 2024, Θέμα 1 · Κεφ. [6](../chapters/06-control-flow/) · programming
+7. **[Οι Καλύτεροι Αριθμοί, Παμψηφεί](exams/exam-2024-dec-q2.md)** · Κατατακτήριες Δεκεμβρίου 2024, Θέμα 2 · Κεφ. [16](../chapters/16-problem-solving-2/) · programming
+8. **[Μετρητής λέξεων](exams/exam-2024-sep-q4.md)** · Εξέταση Σεπτεμβρίου 2024, Θέμα 4 · Κεφ. [9](../chapters/09-input/) · programming
+9. **[ASCII Encoding](exams/exam-2024-jul-q1.md)** · Εξέταση Ιουλίου 2024, Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+10. **[Στατιστικές](exams/exam-2024-jul-q2.md)** · Εξέταση Ιουλίου 2024, Θέμα 2 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+11. **[Κάντο όπως ο Βιετά](exams/exam-2023-dec-q1.md)** · Κατατακτήριες Δεκεμβρίου 2023, Θέμα 1 · Κεφ. [6](../chapters/06-control-flow/) · programming
+12. **[Ραβασάκι](exams/exam-2023-fall-ex0-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #0 (Valentine's Themed), Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+13. **[Εαυτοί Αριθμοί](exams/exam-2023-dec-q2.md)** · Κατατακτήριες Δεκεμβρίου 2023, Θέμα 2 · Κεφ. [16](../chapters/16-problem-solving-2/) · programming
+14. **[Ταιριαστές Καρδιές](exams/exam-2023-fall-ex0-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #0 (Valentine's Themed), Θέμα 2 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+15. **[Δεκαεξαδικοί](exams/exam-2023-fall-ex1-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #1 (Coreutils Themed), Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+16. **[Εντοπισμός Διπλών Ορισμάτων](exams/exam-2023-fall-ex1-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #1 (Coreutils Themed), Θέμα 2 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+17. **[Pikaκίστικα](exams/exam-2023-fall-ex2-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #2 (Pokémon Themed), Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+18. **[Τουρνουά](exams/exam-2023-fall-ex2-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #2 (Pokémon Themed), Θέμα 2 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+19. **[Προσθήκη Νιφάδων](exams/exam-2023-fall-ex3-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #3 (Frozen Themed), Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+20. **[Φορτωμένο Έλκηθρο](exams/exam-2023-fall-ex3-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #3 (Frozen Themed), Θέμα 2 · Κεφ. [10](../chapters/10-arrays/) · programming
+21. **[Εύρεση Λέξεων](exams/exam-2023-fall-ex3-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #3 (Frozen Themed), Θέμα 3 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+22. **[Αναγράμματα](exams/exam-2023-fall-ex4-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #4 (Rick Astley Themed), Θέμα 1 · Κεφ. [10](../chapters/10-arrays/) · programming
+23. **[Τα Πάνω Κάτω](exams/exam-2023-fall-ex4-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #4 (Rick Astley Themed), Θέμα 2 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+24. **[Rickroll Τριπλέτες](exams/exam-2023-fall-ex4-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #4 (Rick Astley Themed), Θέμα 3 · Κεφ. [2](../chapters/02-memory-variables/) · programming
+25. **[Αλλαγή Μεγέθους](exams/exam-2023-fall-ex4-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #4 (Rick Astley Themed), Θέμα 4 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+26. **[Αναποδογύρισμα](exams/exam-2023-fall-ex5-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #5 (HP Themed), Θέμα 1 · Κεφ. [10](../chapters/10-arrays/) · programming
+27. **[Μαγικό Ζευγάρι](exams/exam-2023-fall-ex5-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #5 (HP Themed), Θέμα 2 · Κεφ. [10](../chapters/10-arrays/) · programming
+28. **[Μέγιστος Κοινός Διαιρέτης](exams/exam-2023-fall-ex6-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #6 (Crypto Themed), Θέμα 1 · Κεφ. [6](../chapters/06-control-flow/) · programming
+29. **[Μήνυμα από τον Καίσαρα](exams/exam-2023-fall-ex6-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #6 (Crypto Themed), Θέμα 2 · Κεφ. [9](../chapters/09-input/) · programming
+30. **[Σπάσε το PIN](exams/exam-2023-fall-ex6-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #6 (Crypto Themed), Θέμα 3 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+31. **[Ανάβεις Φωτιές](exams/exam-2023-fall-ex7-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #7 (Star Wars Themed), Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+32. **[Κρυφό Μήνυμα](exams/exam-2023-fall-ex7-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #7 (Star Wars Themed), Θέμα 2 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+33. **[Κόψιμο Αρχείων](exams/exam-2023-fall-ex7-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #7 (Star Wars Themed), Θέμα 4 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+34. **[Άρτια Bits](exams/exam-2023-fall-ex8-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #8, Θέμα 1 · Κεφ. [4](../chapters/04-git-operators/) · programming
+35. **[Αποκωδικοποίηση](exams/exam-2023-fall-ex8-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #8, Θέμα 2 · Κεφ. [9](../chapters/09-input/) · programming
+36. **[Έλεγχος Εκτελέσιμου](exams/exam-2023-fall-ex9-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #9, Θέμα 1 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+37. **[Πετυχαίνοντας τον Στόχο](exams/exam-2023-fall-ex9-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #9, Θέμα 2 · Κεφ. [6](../chapters/06-control-flow/) · programming
+38. **[Αφαίρεση Μη Λατινικών Χαρακτήρων](exams/exam-2023-fall-ex10-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #10, Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+39. **[Ασημένιο Κλάσμα](exams/exam-2023-fall-ex10-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #10, Θέμα 2 · Κεφ. [6](../chapters/06-control-flow/) · programming
+40. **[Αναζητώντας τον Blinky](exams/exam-2023-fall-ex11-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #11, Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+41. **[Τοποθέτηση του Pacman](exams/exam-2023-fall-ex11-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #11, Θέμα 2 · Κεφ. [10](../chapters/10-arrays/) · programming
+42. **[Clyde Πρώτοι](exams/exam-2023-fall-ex11-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #11, Θέμα 4 · Κεφ. [16](../chapters/16-problem-solving-2/) · programming
+43. **[Γραμμή και Γράμμα](exams/exam-2023-fall-ex12-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #12, Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+44. **[Προσεγγίζοντας την Λέξη](exams/exam-2023-fall-ex12-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #12, Θέμα 2 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+45. **[Κρεμάλα](exams/exam-2023-fall-ex12-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #12, Θέμα 3 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+46. **[Εαυτοί Αριθμοί](exams/exam-2023-fall-ex12-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #12, Θέμα 4 · Κεφ. [16](../chapters/16-problem-solving-2/) · programming
+47. **[Κάντο όπως ο Βιετά](exams/exam-2023-fall-ex13-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #13, Θέμα 1 · Κεφ. [6](../chapters/06-control-flow/) · programming
+48. **[Τυχεροί Αριθμοί](exams/exam-2023-fall-ex13-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #13, Θέμα 4 · Κεφ. [16](../chapters/16-problem-solving-2/) · programming
+49. **[Ορεκτικό](exams/exam-2023-fall-ex14-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #14, Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+50. **[Μένοντας στις Σωστές Θερμίδες](exams/exam-2023-fall-ex14-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #14, Θέμα 2 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+51. **[Πλαγιαστά Γράμματα](exams/exam-2023-fall-ex15-q1.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #15, Θέμα 1 · Κεφ. [9](../chapters/09-input/) · programming
+52. **[Τυπώνοντας τον Πίνακα ASCII](exams/exam-2023-fall-ex15-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #15, Θέμα 2 · Κεφ. [6](../chapters/06-control-flow/) · programming
+53. **[Δυνατότητες](exams/exam-2023-fall-ex15-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #15, Θέμα 4 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+
+
+
+## Επίπεδο 3: Δομές δεδομένων και δυναμική μνήμη (25)
+
+1. **[Ν-οστό Στοιχείο Λίστας](exams/exam-2026-sep-q4.md)** · Εξέταση Σεπτεμβρίου 2026, Θέμα 4 · Κεφ. [21](../chapters/21-lists-trees/) · programming
+2. **[Διερμηνέας Αριθμητικών Εκφράσεων - eval](exams/exam-2026-jan-q4.md)** · Εξέταση Ιανουαρίου 2026, Θέμα 4 · Κεφ. [22](../chapters/22-trees/) · programming
+3. **[Μεσαίο Στοιχείο Λίστας](exams/exam-2025-sep-q4.md)** · Εξέταση Σεπτεμβρίου 2025, Θέμα 4 · Κεφ. [21](../chapters/21-lists-trees/) · programming
+4. **[Αθροιστής Δέντρων - sumtree](exams/exam-2025-jan-q4.md)** · Εξέταση Ιανουαρίου 2025, Θέμα 4 · Κεφ. [22](../chapters/22-trees/) · programming
+5. **[Συνένωση Αλφαριθμητικών - join](exams/exam-2025-jan-q5.md)** · Εξέταση Ιανουαρίου 2025, Θέμα 5 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+6. **[Αντιστροφή λίστας](exams/exam-2024-sep-q5.md)** · Εξέταση Σεπτεμβρίου 2024, Θέμα 5 · Κεφ. [21](../chapters/21-lists-trees/) · programming
+7. **[Reverse Inorder Traversal](exams/exam-2024-jul-q4.md)** · Εξέταση Ιουλίου 2024, Θέμα 4 · Κεφ. [22](../chapters/22-trees/) · programming
+8. **[Καλύτερο Ταίριασμα](exams/exam-2023-fall-ex0-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #0 (Valentine's Themed), Θέμα 3 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+9. **[Περιστροφή Πίνακα](exams/exam-2023-fall-ex1-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #1 (Coreutils Themed), Θέμα 3 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+10. **[Debugging](exams/exam-2023-fall-ex1-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #1 (Coreutils Themed), Θέμα 4 · Κεφ. [13](../chapters/13-memory/) · debug
+11. **[Μίνι Βάση Δεδομένων](exams/exam-2023-fall-ex2-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #2 (Pokémon Themed), Θέμα 3 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+12. **[Επιλογή](exams/exam-2023-fall-ex5-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #5 (HP Themed), Θέμα 3 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+13. **[Μεταμορφώσιμες Προτάσεις](exams/exam-2023-fall-ex5-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #5 (HP Themed), Θέμα 4 · Κεφ. [14](../chapters/14-scope-strings/) · programming
+14. **[Ταξινόμηση Αρχείων Καταγραφής](exams/exam-2023-fall-ex6-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #6 (Crypto Themed), Θέμα 4 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+15. **[Πολλαπλασιασμός Πινάκων](exams/exam-2023-fall-ex8-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #8, Θέμα 3 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+16. **[Ταξινόμηση Πακέτων](exams/exam-2023-fall-ex8-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #8, Θέμα 4 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+17. **[Πολύτιμοι Πίνακες](exams/exam-2023-fall-ex9-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #9, Θέμα 3 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+18. **[Κάδρο](exams/exam-2023-fall-ex9-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #9, Θέμα 4 · Κεφ. [13](../chapters/13-memory/) · programming
+19. **[Κρυμμένο Μήνυμα](exams/exam-2023-fall-ex10-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #10, Θέμα 3 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+20. **[Πλησιάζοντας στον Στόχο](exams/exam-2023-fall-ex10-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #10, Θέμα 4 · Κεφ. [17](../chapters/17-binary-search-sorting/) · programming
+21. **[Κινήσεις σε Πλέγμα](exams/exam-2023-fall-ex11-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #11, Θέμα 3 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+22. **[Αλλαγή Τέρματος](exams/exam-2023-fall-ex13-q2.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #13, Θέμα 2 · Κεφ. [12](../chapters/12-pointers-arrays/) · programming
+23. **[Πρωτάθλημα](exams/exam-2023-fall-ex13-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #13, Θέμα 3 · Κεφ. [19](../chapters/19-structs/) · programming
+24. **[Μετρήσεις Θερμοκρασίας](exams/exam-2023-fall-ex14-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #14, Θέμα 3 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+25. **[Ταξινομώντας τα Άλματα](exams/exam-2023-fall-ex15-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #15, Θέμα 3 · Κεφ. [18](../chapters/18-sorting-input-2/) · programming
+
+
+
+## Επίπεδο 4: Τα δυσκολότερα θέματα (16)
+
+1. **[Η Μεγαλύτερη Χωρητικότητα - capacity](exams/exam-2026-sep-q5.md)** · Εξέταση Σεπτεμβρίου 2026, Θέμα 5 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+2. **[World Cup 2026](exams/exam-2026-jun-q4.md)** · Εξέταση Ιουνίου 2026, Θέμα 4 · Κεφ. [19](../chapters/19-structs/) · programming
+3. **[Περικύκλωση - encirclement](exams/exam-2026-jan-q5.md)** · Εξέταση Ιανουαρίου 2026, Θέμα 5 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+4. **[Το Καλό το Μονοπάτι - path](exams/exam-2025-sep-q5.md)** · Εξέταση Σεπτεμβρίου 2025, Θέμα 5 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+5. **[Μετρώντας τα Αστέρια - stars](exams/exam-2025-jan-q6.md)** · Εξέταση Ιανουαρίου 2025, Θέμα 6 · Κεφ. [16](../chapters/16-problem-solving-2/) · programming
+6. **[Η Τριπλέτα Στόχος](exams/exam-2024-dec-q3.md)** · Κατατακτήριες Δεκεμβρίου 2024, Θέμα 3 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+7. **[Λύσε τον Λαβύρινθο](exams/exam-2024-dec-q4.md)** · Κατατακτήριες Δεκεμβρίου 2024, Θέμα 4 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+8. **[Γεμίζοντας με χρώμα](exams/exam-2024-sep-q6.md)** · Εξέταση Σεπτεμβρίου 2024, Θέμα 6 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+9. **[Βέλτιστη Μοιρασιά Πίτσας](exams/exam-2024-jul-q3.md)** · Εξέταση Ιουλίου 2024, Θέμα 3 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+10. **[Σκαλί-Σκαλί](exams/exam-2023-dec-q3.md)** · Κατατακτήριες Δεκεμβρίου 2023, Θέμα 3 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+11. **[Το Νερό Νεράκι](exams/exam-2023-dec-q4.md)** · Κατατακτήριες Δεκεμβρίου 2023, Θέμα 4 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+12. **[Αγαπήσιμοι Αριθμοί](exams/exam-2023-fall-ex0-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #0 (Valentine's Themed), Θέμα 4 · Κεφ. [16](../chapters/16-problem-solving-2/) · programming
+13. **[Ανεβαίνοντας Επίπεδο](exams/exam-2023-fall-ex2-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #2 (Pokémon Themed), Θέμα 4 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
+14. **[Χτίζοντας έναν Χιονάνθρωπο](exams/exam-2023-fall-ex3-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #3 (Frozen Themed), Θέμα 4 · Κεφ. [16](../chapters/16-problem-solving-2/) · programming
+15. **[Δίδυμοι Πρώτοι](exams/exam-2023-fall-ex7-q3.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #7 (Star Wars Themed), Θέμα 3 · Κεφ. [15](../chapters/15-complexity-preprocessor/) · programming
+16. **[Τρόποι να Φάμε Παϊδάκια](exams/exam-2023-fall-ex14-q4.md)** · Online τελική εξέταση Δεκεμβρίου 2023, Εξέταση #14, Θέμα 4 · Κεφ. [25](../chapters/25-problem-solving-3/) · programming
diff --git a/questions/exams/exam-2023-dec-q1.md b/questions/exams/exam-2023-dec-q1.md
index cfea8d2..c4ffe40 100644
--- a/questions/exams/exam-2023-dec-q1.md
+++ b/questions/exams/exam-2023-dec-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 3, 4]
topics: [floating-point, loops, command-line-args, math-algorithms]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-dec-q2.md b/questions/exams/exam-2023-dec-q2.md
index 5cb07ef..94ccdfc 100644
--- a/questions/exams/exam-2023-dec-q2.md
+++ b/questions/exams/exam-2023-dec-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [16, 4]
topics: [math-algorithms, loops, command-line-args]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-dec-q3.md b/questions/exams/exam-2023-dec-q3.md
index 6e2c580..9688f53 100644
--- a/questions/exams/exam-2023-dec-q3.md
+++ b/questions/exams/exam-2023-dec-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 16, 11]
topics: [dynamic-programming, recursion, complexity, integer-representation]
difficulty: 2
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2023-dec-q4.md b/questions/exams/exam-2023-dec-q4.md
index 5b06273..9f95291 100644
--- a/questions/exams/exam-2023-dec-q4.md
+++ b/questions/exams/exam-2023-dec-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 15, 13]
topics: [arrays, complexity, dynamic-memory, problem-solving]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex0-q1.md b/questions/exams/exam-2023-fall-ex0-q1.md
index d67b3f6..791536e 100644
--- a/questions/exams/exam-2023-fall-ex0-q1.md
+++ b/questions/exams/exam-2023-fall-ex0-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9]
topics: [input-output]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex0-q2.md b/questions/exams/exam-2023-fall-ex0-q2.md
index 716be2a..850844d 100644
--- a/questions/exams/exam-2023-fall-ex0-q2.md
+++ b/questions/exams/exam-2023-fall-ex0-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 12]
topics: [strings, command-line-args]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex0-q3.md b/questions/exams/exam-2023-fall-ex0-q3.md
index b3d66e8..12ed5e6 100644
--- a/questions/exams/exam-2023-fall-ex0-q3.md
+++ b/questions/exams/exam-2023-fall-ex0-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 19, 13]
topics: [sorting, files, structs, dynamic-memory]
difficulty: 3
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex0-q4.md b/questions/exams/exam-2023-fall-ex0-q4.md
index 239db01..14d1628 100644
--- a/questions/exams/exam-2023-fall-ex0-q4.md
+++ b/questions/exams/exam-2023-fall-ex0-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [16, 2]
topics: [math-algorithms, integer-representation, complexity]
difficulty: 2
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex1-q1.md b/questions/exams/exam-2023-fall-ex1-q1.md
index 935014a..d50ad8d 100644
--- a/questions/exams/exam-2023-fall-ex1-q1.md
+++ b/questions/exams/exam-2023-fall-ex1-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9, 2]
topics: [input-output, computers]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex1-q2.md b/questions/exams/exam-2023-fall-ex1-q2.md
index c1e18f8..ff8fbc7 100644
--- a/questions/exams/exam-2023-fall-ex1-q2.md
+++ b/questions/exams/exam-2023-fall-ex1-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 12]
topics: [strings, command-line-args]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex1-q3.md b/questions/exams/exam-2023-fall-ex1-q3.md
index 54c60c0..f695693 100644
--- a/questions/exams/exam-2023-fall-ex1-q3.md
+++ b/questions/exams/exam-2023-fall-ex1-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 18, 13]
topics: [multidim-arrays, files, dynamic-memory]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex1-q4.md b/questions/exams/exam-2023-fall-ex1-q4.md
index c7d57cd..82372ae 100644
--- a/questions/exams/exam-2023-fall-ex1-q4.md
+++ b/questions/exams/exam-2023-fall-ex1-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [13, 21]
topics: [dynamic-memory, memory-model, linked-lists, debugging]
difficulty: 2
+level: 3
type: debug
---
diff --git a/questions/exams/exam-2023-fall-ex10-q1.md b/questions/exams/exam-2023-fall-ex10-q1.md
index 9f7b0e6..7103cc3 100644
--- a/questions/exams/exam-2023-fall-ex10-q1.md
+++ b/questions/exams/exam-2023-fall-ex10-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9]
topics: [input-output]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex10-q2.md b/questions/exams/exam-2023-fall-ex10-q2.md
index 5e93ba6..788324e 100644
--- a/questions/exams/exam-2023-fall-ex10-q2.md
+++ b/questions/exams/exam-2023-fall-ex10-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 3, 4]
topics: [floating-point, loops, math-algorithms]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex10-q3.md b/questions/exams/exam-2023-fall-ex10-q3.md
index 4ead59b..358f653 100644
--- a/questions/exams/exam-2023-fall-ex10-q3.md
+++ b/questions/exams/exam-2023-fall-ex10-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 14, 13]
topics: [files, strings, dynamic-memory, command-line-args]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex10-q4.md b/questions/exams/exam-2023-fall-ex10-q4.md
index 8d2da91..b7b6d4b 100644
--- a/questions/exams/exam-2023-fall-ex10-q4.md
+++ b/questions/exams/exam-2023-fall-ex10-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [17, 19, 12]
topics: [sorting, structs, command-line-args, floating-point]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex11-q1.md b/questions/exams/exam-2023-fall-ex11-q1.md
index 55ab3e8..766ad1f 100644
--- a/questions/exams/exam-2023-fall-ex11-q1.md
+++ b/questions/exams/exam-2023-fall-ex11-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9, 14]
topics: [input-output, strings]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex11-q2.md b/questions/exams/exam-2023-fall-ex11-q2.md
index ea562f9..72f6960 100644
--- a/questions/exams/exam-2023-fall-ex11-q2.md
+++ b/questions/exams/exam-2023-fall-ex11-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [10, 12]
topics: [arrays, command-line-args]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex11-q3.md b/questions/exams/exam-2023-fall-ex11-q3.md
index f6fa8af..c4d0879 100644
--- a/questions/exams/exam-2023-fall-ex11-q3.md
+++ b/questions/exams/exam-2023-fall-ex11-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 18]
topics: [multidim-arrays, files, simulation]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex11-q4.md b/questions/exams/exam-2023-fall-ex11-q4.md
index 89de252..ed2a35d 100644
--- a/questions/exams/exam-2023-fall-ex11-q4.md
+++ b/questions/exams/exam-2023-fall-ex11-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [16, 2]
topics: [math-algorithms, loops, integer-representation]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex12-q1.md b/questions/exams/exam-2023-fall-ex12-q1.md
index 039c36f..b689910 100644
--- a/questions/exams/exam-2023-fall-ex12-q1.md
+++ b/questions/exams/exam-2023-fall-ex12-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9, 10]
topics: [input-output, arrays]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex12-q2.md b/questions/exams/exam-2023-fall-ex12-q2.md
index e5fca89..ce41a7c 100644
--- a/questions/exams/exam-2023-fall-ex12-q2.md
+++ b/questions/exams/exam-2023-fall-ex12-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 10]
topics: [strings, command-line-args, arrays]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex12-q3.md b/questions/exams/exam-2023-fall-ex12-q3.md
index 42014fa..c97c56a 100644
--- a/questions/exams/exam-2023-fall-ex12-q3.md
+++ b/questions/exams/exam-2023-fall-ex12-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 18]
topics: [strings, files]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex12-q4.md b/questions/exams/exam-2023-fall-ex12-q4.md
index 94a3213..34a69f2 100644
--- a/questions/exams/exam-2023-fall-ex12-q4.md
+++ b/questions/exams/exam-2023-fall-ex12-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [16, 10]
topics: [math-algorithms, arrays, loops]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex13-q1.md b/questions/exams/exam-2023-fall-ex13-q1.md
index c366cb4..3ffdba4 100644
--- a/questions/exams/exam-2023-fall-ex13-q1.md
+++ b/questions/exams/exam-2023-fall-ex13-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 3, 4]
topics: [floating-point, loops, math-algorithms]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex13-q2.md b/questions/exams/exam-2023-fall-ex13-q2.md
index 15c7c7b..5a00217 100644
--- a/questions/exams/exam-2023-fall-ex13-q2.md
+++ b/questions/exams/exam-2023-fall-ex13-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 9, 13]
topics: [multidim-arrays, dynamic-memory, input-output, input-validation]
difficulty: 1
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex13-q3.md b/questions/exams/exam-2023-fall-ex13-q3.md
index 51a7b3c..3c0c5b2 100644
--- a/questions/exams/exam-2023-fall-ex13-q3.md
+++ b/questions/exams/exam-2023-fall-ex13-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [19, 17, 18]
topics: [structs, sorting, files, strings]
difficulty: 3
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex13-q4.md b/questions/exams/exam-2023-fall-ex13-q4.md
index 6038b58..4665e1d 100644
--- a/questions/exams/exam-2023-fall-ex13-q4.md
+++ b/questions/exams/exam-2023-fall-ex13-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [16, 2]
topics: [math-algorithms, loops, integer-representation, floating-point]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex14-q1.md b/questions/exams/exam-2023-fall-ex14-q1.md
index 3117381..8b73eaf 100644
--- a/questions/exams/exam-2023-fall-ex14-q1.md
+++ b/questions/exams/exam-2023-fall-ex14-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9]
topics: [input-output]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex14-q2.md b/questions/exams/exam-2023-fall-ex14-q2.md
index fe85b45..910954f 100644
--- a/questions/exams/exam-2023-fall-ex14-q2.md
+++ b/questions/exams/exam-2023-fall-ex14-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 17]
topics: [sorting, problem-solving, command-line-args, input-validation]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex14-q3.md b/questions/exams/exam-2023-fall-ex14-q3.md
index 1ae2b54..2f7dc9a 100644
--- a/questions/exams/exam-2023-fall-ex14-q3.md
+++ b/questions/exams/exam-2023-fall-ex14-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 19, 17]
topics: [sorting, structs, files, floating-point]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex14-q4.md b/questions/exams/exam-2023-fall-ex14-q4.md
index af93899..40728ee 100644
--- a/questions/exams/exam-2023-fall-ex14-q4.md
+++ b/questions/exams/exam-2023-fall-ex14-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 16]
topics: [dynamic-programming, recursion, math-algorithms, integer-representation]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex15-q1.md b/questions/exams/exam-2023-fall-ex15-q1.md
index 41185ad..2c4a842 100644
--- a/questions/exams/exam-2023-fall-ex15-q1.md
+++ b/questions/exams/exam-2023-fall-ex15-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9]
topics: [input-output]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex15-q2.md b/questions/exams/exam-2023-fall-ex15-q2.md
index ccc7c2b..ec59826 100644
--- a/questions/exams/exam-2023-fall-ex15-q2.md
+++ b/questions/exams/exam-2023-fall-ex15-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 2, 4]
topics: [loops, input-output, computers, command-line-args]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex15-q3.md b/questions/exams/exam-2023-fall-ex15-q3.md
index dc9557c..9774341 100644
--- a/questions/exams/exam-2023-fall-ex15-q3.md
+++ b/questions/exams/exam-2023-fall-ex15-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 19, 17]
topics: [files, structs, sorting, strings]
difficulty: 3
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex15-q4.md b/questions/exams/exam-2023-fall-ex15-q4.md
index ffd23ba..b724a3f 100644
--- a/questions/exams/exam-2023-fall-ex15-q4.md
+++ b/questions/exams/exam-2023-fall-ex15-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 18]
topics: [strings, files, command-line-args]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex2-q1.md b/questions/exams/exam-2023-fall-ex2-q1.md
index 02f1b5b..2ac0c66 100644
--- a/questions/exams/exam-2023-fall-ex2-q1.md
+++ b/questions/exams/exam-2023-fall-ex2-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9]
topics: [input-output]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex2-q2.md b/questions/exams/exam-2023-fall-ex2-q2.md
index 4d65031..f4050fc 100644
--- a/questions/exams/exam-2023-fall-ex2-q2.md
+++ b/questions/exams/exam-2023-fall-ex2-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 8]
topics: [command-line-args, loops, strings]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex2-q3.md b/questions/exams/exam-2023-fall-ex2-q3.md
index f46fd11..ed5b0be 100644
--- a/questions/exams/exam-2023-fall-ex2-q3.md
+++ b/questions/exams/exam-2023-fall-ex2-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 19, 13]
topics: [files, structs, sorting]
difficulty: 3
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex2-q4.md b/questions/exams/exam-2023-fall-ex2-q4.md
index 967949a..9bcc273 100644
--- a/questions/exams/exam-2023-fall-ex2-q4.md
+++ b/questions/exams/exam-2023-fall-ex2-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 16, 11]
topics: [dynamic-programming, recursion, complexity, integer-representation]
difficulty: 2
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex3-q1.md b/questions/exams/exam-2023-fall-ex3-q1.md
index 370d575..a89d80c 100644
--- a/questions/exams/exam-2023-fall-ex3-q1.md
+++ b/questions/exams/exam-2023-fall-ex3-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9]
topics: [input-output]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex3-q2.md b/questions/exams/exam-2023-fall-ex3-q2.md
index 1b0608e..248a7a1 100644
--- a/questions/exams/exam-2023-fall-ex3-q2.md
+++ b/questions/exams/exam-2023-fall-ex3-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [10, 12]
topics: [arrays, loops, command-line-args, input-validation]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex3-q3.md b/questions/exams/exam-2023-fall-ex3-q3.md
index cdb0eb5..0a5af14 100644
--- a/questions/exams/exam-2023-fall-ex3-q3.md
+++ b/questions/exams/exam-2023-fall-ex3-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 18]
topics: [strings, files]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex3-q4.md b/questions/exams/exam-2023-fall-ex3-q4.md
index 1afd59a..8d77c76 100644
--- a/questions/exams/exam-2023-fall-ex3-q4.md
+++ b/questions/exams/exam-2023-fall-ex3-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [16, 17, 18]
topics: [problem-solving, complexity, sorting, files]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex4-q1.md b/questions/exams/exam-2023-fall-ex4-q1.md
index 4553be2..5d87270 100644
--- a/questions/exams/exam-2023-fall-ex4-q1.md
+++ b/questions/exams/exam-2023-fall-ex4-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [10, 14]
topics: [arrays, strings, command-line-args]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex4-q2.md b/questions/exams/exam-2023-fall-ex4-q2.md
index 90fc788..ce4067a 100644
--- a/questions/exams/exam-2023-fall-ex4-q2.md
+++ b/questions/exams/exam-2023-fall-ex4-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 9]
topics: [strings, input-output]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex4-q3.md b/questions/exams/exam-2023-fall-ex4-q3.md
index e827a3e..dca7d2b 100644
--- a/questions/exams/exam-2023-fall-ex4-q3.md
+++ b/questions/exams/exam-2023-fall-ex4-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [2, 5]
topics: [integer-representation, bitwise, loops]
difficulty: 3
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex4-q4.md b/questions/exams/exam-2023-fall-ex4-q4.md
index df80330..2153e83 100644
--- a/questions/exams/exam-2023-fall-ex4-q4.md
+++ b/questions/exams/exam-2023-fall-ex4-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 12]
topics: [files, bitwise, command-line-args]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex5-q1.md b/questions/exams/exam-2023-fall-ex5-q1.md
index 2de1249..ffdd0e1 100644
--- a/questions/exams/exam-2023-fall-ex5-q1.md
+++ b/questions/exams/exam-2023-fall-ex5-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [10, 9]
topics: [arrays, input-output]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex5-q2.md b/questions/exams/exam-2023-fall-ex5-q2.md
index 7a8d10b..fcd7dce 100644
--- a/questions/exams/exam-2023-fall-ex5-q2.md
+++ b/questions/exams/exam-2023-fall-ex5-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [10, 12]
topics: [arrays, command-line-args, input-validation]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex5-q3.md b/questions/exams/exam-2023-fall-ex5-q3.md
index 5b8747d..71cf09e 100644
--- a/questions/exams/exam-2023-fall-ex5-q3.md
+++ b/questions/exams/exam-2023-fall-ex5-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 14]
topics: [files, strings, floating-point]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex5-q4.md b/questions/exams/exam-2023-fall-ex5-q4.md
index cb7fd06..0db37f7 100644
--- a/questions/exams/exam-2023-fall-ex5-q4.md
+++ b/questions/exams/exam-2023-fall-ex5-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 12]
topics: [strings, command-line-args, arrays]
difficulty: 3
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex6-q1.md b/questions/exams/exam-2023-fall-ex6-q1.md
index 7025aa8..c85f71d 100644
--- a/questions/exams/exam-2023-fall-ex6-q1.md
+++ b/questions/exams/exam-2023-fall-ex6-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 4, 2]
topics: [math-algorithms, command-line-args, input-validation, integer-representation]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex6-q2.md b/questions/exams/exam-2023-fall-ex6-q2.md
index e9e27c6..c9610b2 100644
--- a/questions/exams/exam-2023-fall-ex6-q2.md
+++ b/questions/exams/exam-2023-fall-ex6-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [9, 5]
topics: [input-output, operators]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex6-q3.md b/questions/exams/exam-2023-fall-ex6-q3.md
index c917af4..8278db6 100644
--- a/questions/exams/exam-2023-fall-ex6-q3.md
+++ b/questions/exams/exam-2023-fall-ex6-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 8]
topics: [problem-solving, strings, loops]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex6-q4.md b/questions/exams/exam-2023-fall-ex6-q4.md
index e86b2b5..ebc0218 100644
--- a/questions/exams/exam-2023-fall-ex6-q4.md
+++ b/questions/exams/exam-2023-fall-ex6-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 13, 14]
topics: [sorting, files, strings]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex7-q1.md b/questions/exams/exam-2023-fall-ex7-q1.md
index bc9cf84..24a4e34 100644
--- a/questions/exams/exam-2023-fall-ex7-q1.md
+++ b/questions/exams/exam-2023-fall-ex7-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9]
topics: [input-output]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex7-q2.md b/questions/exams/exam-2023-fall-ex7-q2.md
index 205efce..0a14678 100644
--- a/questions/exams/exam-2023-fall-ex7-q2.md
+++ b/questions/exams/exam-2023-fall-ex7-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 5]
topics: [files, bitwise, command-line-args]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex7-q3.md b/questions/exams/exam-2023-fall-ex7-q3.md
index 468c744..3efd522 100644
--- a/questions/exams/exam-2023-fall-ex7-q3.md
+++ b/questions/exams/exam-2023-fall-ex7-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [15, 13, 10]
topics: [math-algorithms, complexity, dynamic-memory, arrays]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex7-q4.md b/questions/exams/exam-2023-fall-ex7-q4.md
index fd56e5d..da78875 100644
--- a/questions/exams/exam-2023-fall-ex7-q4.md
+++ b/questions/exams/exam-2023-fall-ex7-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 12]
topics: [files, command-line-args]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex8-q1.md b/questions/exams/exam-2023-fall-ex8-q1.md
index 81b52fe..938d9bf 100644
--- a/questions/exams/exam-2023-fall-ex8-q1.md
+++ b/questions/exams/exam-2023-fall-ex8-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [4, 12]
topics: [bitwise, command-line-args]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex8-q2.md b/questions/exams/exam-2023-fall-ex8-q2.md
index ae7ef68..a38926e 100644
--- a/questions/exams/exam-2023-fall-ex8-q2.md
+++ b/questions/exams/exam-2023-fall-ex8-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [9, 4]
topics: [input-output, bitwise, input-validation]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex8-q3.md b/questions/exams/exam-2023-fall-ex8-q3.md
index 89a7b9e..6bf1bc2 100644
--- a/questions/exams/exam-2023-fall-ex8-q3.md
+++ b/questions/exams/exam-2023-fall-ex8-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 18, 13]
topics: [multidim-arrays, dynamic-memory, files, floating-point]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex8-q4.md b/questions/exams/exam-2023-fall-ex8-q4.md
index 66283e3..db1de6c 100644
--- a/questions/exams/exam-2023-fall-ex8-q4.md
+++ b/questions/exams/exam-2023-fall-ex8-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [18, 13, 14]
topics: [sorting, files, strings, dynamic-memory]
difficulty: 3
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex9-q1.md b/questions/exams/exam-2023-fall-ex9-q1.md
index a193966..dbf1212 100644
--- a/questions/exams/exam-2023-fall-ex9-q1.md
+++ b/questions/exams/exam-2023-fall-ex9-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [18]
topics: [files]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex9-q2.md b/questions/exams/exam-2023-fall-ex9-q2.md
index 81ff1f4..561e954 100644
--- a/questions/exams/exam-2023-fall-ex9-q2.md
+++ b/questions/exams/exam-2023-fall-ex9-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 12]
topics: [loops, command-line-args, integer-representation]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex9-q3.md b/questions/exams/exam-2023-fall-ex9-q3.md
index fd1910c..2ed7a6a 100644
--- a/questions/exams/exam-2023-fall-ex9-q3.md
+++ b/questions/exams/exam-2023-fall-ex9-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 18, 13]
topics: [multidim-arrays, files, dynamic-memory]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2023-fall-ex9-q4.md b/questions/exams/exam-2023-fall-ex9-q4.md
index 4795c38..b10ded5 100644
--- a/questions/exams/exam-2023-fall-ex9-q4.md
+++ b/questions/exams/exam-2023-fall-ex9-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [13, 9, 14]
topics: [dynamic-memory, input-output, strings]
difficulty: 3
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2024-dec-q1.md b/questions/exams/exam-2024-dec-q1.md
index 5efc646..4f22d3a 100644
--- a/questions/exams/exam-2024-dec-q1.md
+++ b/questions/exams/exam-2024-dec-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 3, 4]
topics: [loops, floating-point, command-line-args]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2024-dec-q2.md b/questions/exams/exam-2024-dec-q2.md
index 808482b..98008fc 100644
--- a/questions/exams/exam-2024-dec-q2.md
+++ b/questions/exams/exam-2024-dec-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [16, 2]
topics: [math-algorithms, loops, command-line-args, integer-representation]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2024-dec-q3.md b/questions/exams/exam-2024-dec-q3.md
index adeff5a..d8ee034 100644
--- a/questions/exams/exam-2024-dec-q3.md
+++ b/questions/exams/exam-2024-dec-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 17, 13]
topics: [sorting, complexity, dynamic-memory, problem-solving]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2024-dec-q4.md b/questions/exams/exam-2024-dec-q4.md
index 36f33d5..65ec260 100644
--- a/questions/exams/exam-2024-dec-q4.md
+++ b/questions/exams/exam-2024-dec-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 12, 11]
topics: [dynamic-programming, multidim-arrays, recursion, complexity]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2024-jul-q1.md b/questions/exams/exam-2024-jul-q1.md
index 2ffd5ab..ea4d354 100644
--- a/questions/exams/exam-2024-jul-q1.md
+++ b/questions/exams/exam-2024-jul-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [9, 2]
topics: [input-output, loops, integer-representation]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2024-jul-q2.md b/questions/exams/exam-2024-jul-q2.md
index 185fdf7..4e40b02 100644
--- a/questions/exams/exam-2024-jul-q2.md
+++ b/questions/exams/exam-2024-jul-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 10]
topics: [command-line-args, floating-point, arrays]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2024-jul-q3.md b/questions/exams/exam-2024-jul-q3.md
index 8337f26..058013c 100644
--- a/questions/exams/exam-2024-jul-q3.md
+++ b/questions/exams/exam-2024-jul-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 17, 15]
topics: [sorting, complexity, problem-solving, arrays]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2024-jul-q4.md b/questions/exams/exam-2024-jul-q4.md
index 29d7877..269b470 100644
--- a/questions/exams/exam-2024-jul-q4.md
+++ b/questions/exams/exam-2024-jul-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [22, 11, 15]
topics: [trees, recursion, complexity]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2024-sep-q1.md b/questions/exams/exam-2024-sep-q1.md
index 9f962cc..dcb81af 100644
--- a/questions/exams/exam-2024-sep-q1.md
+++ b/questions/exams/exam-2024-sep-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [3, 2]
topics: [input-output, functions, strings]
difficulty: 1
+level: 1
type: programming
---
diff --git a/questions/exams/exam-2024-sep-q2.md b/questions/exams/exam-2024-sep-q2.md
index d2be4e9..32b6175 100644
--- a/questions/exams/exam-2024-sep-q2.md
+++ b/questions/exams/exam-2024-sep-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [17]
topics: [searching, arrays]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2024-sep-q3.md b/questions/exams/exam-2024-sep-q3.md
index 157348b..b0b144d 100644
--- a/questions/exams/exam-2024-sep-q3.md
+++ b/questions/exams/exam-2024-sep-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [17, 15]
topics: [searching, complexity, floating-point]
difficulty: 2
+level: 1
type: programming
---
diff --git a/questions/exams/exam-2024-sep-q4.md b/questions/exams/exam-2024-sep-q4.md
index 1c54ec5..0ee2988 100644
--- a/questions/exams/exam-2024-sep-q4.md
+++ b/questions/exams/exam-2024-sep-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [9, 5]
topics: [input-output, operators]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2024-sep-q5.md b/questions/exams/exam-2024-sep-q5.md
index 325ecde..c1ccbe0 100644
--- a/questions/exams/exam-2024-sep-q5.md
+++ b/questions/exams/exam-2024-sep-q5.md
@@ -9,6 +9,7 @@ source:
chapters: [21, 13, 15]
topics: [linked-lists, dynamic-memory, complexity]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2024-sep-q6.md b/questions/exams/exam-2024-sep-q6.md
index 7d17ceb..9a321f4 100644
--- a/questions/exams/exam-2024-sep-q6.md
+++ b/questions/exams/exam-2024-sep-q6.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 11, 12]
topics: [recursion, multidim-arrays, command-line-args, files]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2025-jan-q1.md b/questions/exams/exam-2025-jan-q1.md
index d06ba1b..d4149f6 100644
--- a/questions/exams/exam-2025-jan-q1.md
+++ b/questions/exams/exam-2025-jan-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [5, 6]
topics: [bitwise, loops, undefined-behavior]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2025-jan-q2.md b/questions/exams/exam-2025-jan-q2.md
index a01ec9f..5e10f16 100644
--- a/questions/exams/exam-2025-jan-q2.md
+++ b/questions/exams/exam-2025-jan-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 13, 2]
topics: [strings, pointer-arithmetic, dynamic-memory]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2025-jan-q3.md b/questions/exams/exam-2025-jan-q3.md
index 35051e0..d6a80c3 100644
--- a/questions/exams/exam-2025-jan-q3.md
+++ b/questions/exams/exam-2025-jan-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 10]
topics: [command-line-args, arrays, floating-point]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2025-jan-q4.md b/questions/exams/exam-2025-jan-q4.md
index 093e78d..9333d15 100644
--- a/questions/exams/exam-2025-jan-q4.md
+++ b/questions/exams/exam-2025-jan-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [22, 21, 15]
topics: [trees, recursion, complexity]
difficulty: 1
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2025-jan-q5.md b/questions/exams/exam-2025-jan-q5.md
index 4109f64..e25f87c 100644
--- a/questions/exams/exam-2025-jan-q5.md
+++ b/questions/exams/exam-2025-jan-q5.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 13, 15]
topics: [strings, dynamic-memory, complexity]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2025-jan-q6.md b/questions/exams/exam-2025-jan-q6.md
index 08d6f69..16dc9a8 100644
--- a/questions/exams/exam-2025-jan-q6.md
+++ b/questions/exams/exam-2025-jan-q6.md
@@ -9,6 +9,7 @@ source:
chapters: [16, 18, 13]
topics: [multidim-arrays, files, complexity, dynamic-memory, problem-solving]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2025-sep-q1.md b/questions/exams/exam-2025-sep-q1.md
index c3d2d92..01c8fae 100644
--- a/questions/exams/exam-2025-sep-q1.md
+++ b/questions/exams/exam-2025-sep-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 2]
topics: [loops, variables, undefined-behavior]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2025-sep-q2.md b/questions/exams/exam-2025-sep-q2.md
index 0808e61..040ba05 100644
--- a/questions/exams/exam-2025-sep-q2.md
+++ b/questions/exams/exam-2025-sep-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [14, 12]
topics: [strings, pointer-arithmetic, pointers]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2025-sep-q3.md b/questions/exams/exam-2025-sep-q3.md
index ba757d3..cc092f4 100644
--- a/questions/exams/exam-2025-sep-q3.md
+++ b/questions/exams/exam-2025-sep-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 2]
topics: [command-line-args, floating-point, loops]
difficulty: 1
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2025-sep-q4.md b/questions/exams/exam-2025-sep-q4.md
index c2d4868..283c37b 100644
--- a/questions/exams/exam-2025-sep-q4.md
+++ b/questions/exams/exam-2025-sep-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [21, 15, 13]
topics: [linked-lists, complexity, dynamic-memory]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2025-sep-q5.md b/questions/exams/exam-2025-sep-q5.md
index b7294a6..b1271b0 100644
--- a/questions/exams/exam-2025-sep-q5.md
+++ b/questions/exams/exam-2025-sep-q5.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 12, 18]
topics: [dynamic-programming, multidim-arrays, files]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2026-jan-q1.md b/questions/exams/exam-2026-jan-q1.md
index c3a8bd9..92d41ff 100644
--- a/questions/exams/exam-2026-jan-q1.md
+++ b/questions/exams/exam-2026-jan-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [5, 6]
topics: [bitwise, operators, loops]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2026-jan-q2.md b/questions/exams/exam-2026-jan-q2.md
index 86110bf..db4d643 100644
--- a/questions/exams/exam-2026-jan-q2.md
+++ b/questions/exams/exam-2026-jan-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [17, 13, 12]
topics: [sorting, dynamic-memory, memory-model]
difficulty: 2
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2026-jan-q3.md b/questions/exams/exam-2026-jan-q3.md
index 04bc404..8fc9ab4 100644
--- a/questions/exams/exam-2026-jan-q3.md
+++ b/questions/exams/exam-2026-jan-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 4]
topics: [math-algorithms, loops, command-line-args]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2026-jan-q4.md b/questions/exams/exam-2026-jan-q4.md
index 0ee914e..8e7aea4 100644
--- a/questions/exams/exam-2026-jan-q4.md
+++ b/questions/exams/exam-2026-jan-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [22, 15, 20]
topics: [trees, recursion, complexity, unions-enums]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2026-jan-q5.md b/questions/exams/exam-2026-jan-q5.md
index 66b4966..dd007fd 100644
--- a/questions/exams/exam-2026-jan-q5.md
+++ b/questions/exams/exam-2026-jan-q5.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 12, 22]
topics: [graphs, multidim-arrays, input-validation, complexity]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2026-jan-q6.md b/questions/exams/exam-2026-jan-q6.md
index 0867702..b04ee0c 100644
--- a/questions/exams/exam-2026-jan-q6.md
+++ b/questions/exams/exam-2026-jan-q6.md
@@ -9,6 +9,7 @@ source:
chapters: [11, 13]
topics: [pointers, undefined-behavior, memory-model]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2026-jun-q1.md b/questions/exams/exam-2026-jun-q1.md
index 6990a1d..675b1dd 100644
--- a/questions/exams/exam-2026-jun-q1.md
+++ b/questions/exams/exam-2026-jun-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [5, 6]
topics: [bitwise, loops, types]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2026-jun-q2.md b/questions/exams/exam-2026-jun-q2.md
index 88eeab1..e4eaee6 100644
--- a/questions/exams/exam-2026-jun-q2.md
+++ b/questions/exams/exam-2026-jun-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [10, 2]
topics: [arrays, strings, undefined-behavior, types]
difficulty: 2
+level: 1
type: debug
---
diff --git a/questions/exams/exam-2026-jun-q3.md b/questions/exams/exam-2026-jun-q3.md
index 65828f7..126a0d3 100644
--- a/questions/exams/exam-2026-jun-q3.md
+++ b/questions/exams/exam-2026-jun-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 15, 9]
topics: [complexity, problem-solving, command-line-args, input-output]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2026-jun-q4.md b/questions/exams/exam-2026-jun-q4.md
index 305ff36..986a91d 100644
--- a/questions/exams/exam-2026-jun-q4.md
+++ b/questions/exams/exam-2026-jun-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [19, 18, 14]
topics: [structs, sorting, strings, input-validation, complexity]
difficulty: 3
+level: 4
type: programming
---
diff --git a/questions/exams/exam-2026-sep-q1.md b/questions/exams/exam-2026-sep-q1.md
index 1c6e1c1..0a40b9f 100644
--- a/questions/exams/exam-2026-sep-q1.md
+++ b/questions/exams/exam-2026-sep-q1.md
@@ -9,6 +9,7 @@ source:
chapters: [6, 2]
topics: [loops, operators, undefined-behavior]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2026-sep-q2.md b/questions/exams/exam-2026-sep-q2.md
index a73edf6..93ac852 100644
--- a/questions/exams/exam-2026-sep-q2.md
+++ b/questions/exams/exam-2026-sep-q2.md
@@ -9,6 +9,7 @@ source:
chapters: [10, 25]
topics: [arrays, loops, undefined-behavior]
difficulty: 1
+level: 1
type: trace
---
diff --git a/questions/exams/exam-2026-sep-q3.md b/questions/exams/exam-2026-sep-q3.md
index 024c7f6..93704e2 100644
--- a/questions/exams/exam-2026-sep-q3.md
+++ b/questions/exams/exam-2026-sep-q3.md
@@ -9,6 +9,7 @@ source:
chapters: [12, 9]
topics: [command-line-args, floating-point, loops]
difficulty: 2
+level: 2
type: programming
---
diff --git a/questions/exams/exam-2026-sep-q4.md b/questions/exams/exam-2026-sep-q4.md
index b334012..0edc767 100644
--- a/questions/exams/exam-2026-sep-q4.md
+++ b/questions/exams/exam-2026-sep-q4.md
@@ -9,6 +9,7 @@ source:
chapters: [21, 13, 15]
topics: [linked-lists, dynamic-memory, complexity]
difficulty: 2
+level: 3
type: programming
---
diff --git a/questions/exams/exam-2026-sep-q5.md b/questions/exams/exam-2026-sep-q5.md
index 452647f..b1a93a7 100644
--- a/questions/exams/exam-2026-sep-q5.md
+++ b/questions/exams/exam-2026-sep-q5.md
@@ -9,6 +9,7 @@ source:
chapters: [25, 15, 13]
topics: [complexity, arrays, problem-solving]
difficulty: 3
+level: 4
type: programming
---
diff --git a/tools/gen-exercises.py b/tools/gen-exercises.py
index 99189b3..4e8e2b6 100644
--- a/tools/gen-exercises.py
+++ b/tools/gen-exercises.py
@@ -17,6 +17,8 @@
numbered from the current order, like an edition of a book; a question's id is
its permanent reference. _data/refs.yml maps each question id to its label;
* questions/README.md, the index by chapter and by source;
+ * questions/exam-questions.md, every exam question by level (1-4), and
+ _data/exams.yml, its order, for the previous/next links on the question pages;
* the chapter table on the home page, README.md, between markers;
* with --build DIR: DIR/questions.md (every statement, grouped by chapter, for the
book appendix and llms-full.txt) and DIR/questions.json.
@@ -46,6 +48,13 @@
}
TYPES = {"programming", "short-answer", "trace", "debug", "multiple-choice", "tooling"}
STARS = {1: "★☆☆", 2: "★★☆", 3: "★★★"}
+LEVELS = { # exam questions only, see STYLE.md
+ 1: "Σύντομες ερωτήσεις",
+ 2: "Απλά προγράμματα με δεδομένα εισόδου",
+ 3: "Δομές δεδομένων και δυναμική μνήμη",
+ 4: "Τα δυσκολότερα θέματα",
+}
+MONTHS = {"jan": 1, "jun": 6, "jul": 7, "sep": 9, "dec": 12, "fall": 12}
BEGIN, END = "", ""
MISC = ("", "")
KAHOOT = ("", "")
@@ -110,6 +119,10 @@ def lint(qs, only=None):
err("missing topics")
if m.get("difficulty") not in STARS:
err(f"difficulty must be 1, 2 or 3, found {m.get('difficulty')!r}")
+ if m.get("kind") == "exam" and m.get("level") not in LEVELS:
+ err(f"exam questions need a level of 1, 2, 3 or 4, found {m.get('level')!r}")
+ if m.get("kind") != "exam" and "level" in m:
+ err("only exam questions have a level")
if m.get("type") not in TYPES:
err(f"type must be one of {sorted(TYPES)}, found {m.get('type')!r}")
if m.get("kind") == "kahoot":
@@ -294,6 +307,8 @@ def index(qs, lectures, refs):
"(Kahoot), και ένα μόνιμο αναγνωριστικό, π.χ. `exam-2025-jan-q2`. Ο αριθμός",
"ακολουθεί την τρέχουσα έκδοση του οδηγού· το αναγνωριστικό δεν αλλάζει ποτέ.",
"",
+ "Τα θέματα εξετάσεων, ταξινομημένα σε τέσσερα επίπεδα δυσκολίας, είναι και στη σελίδα",
+ "[Θέματα εξετάσεων](exam-questions.md).", "",
f"Σε μορφή για εργαλεία: [`questions.json`]({SITE}/downloads/questions.json).", "",
NOTE_2023, ""]
for l in lectures:
@@ -308,6 +323,51 @@ def index(qs, lectures, refs):
return "\n".join(out).rstrip() + "\n"
+def exam_order(qs):
+ """Exam questions by level, then newest exam first, then by variant and θέμα."""
+ def key(q):
+ m = re.match(r"exam-(\d{4})-([a-z]+)(?:-ex(\d+))?-q(\d+)$", q["meta"]["id"])
+ year, month, variant, n = m.groups()
+ return (q["meta"]["level"], -int(year), -MONTHS[month], int(variant or 0), int(n))
+ return sorted((q for q in qs if q["meta"]["kind"] == "exam"), key=key)
+
+
+def exams_page(qs, lectures):
+ slugs = {l["n"]: l["slug"] for l in lectures}
+ order = exam_order(qs)
+ count = {n: sum(1 for q in order if q["meta"]["level"] == n) for n in LEVELS}
+ out = ["# Θέματα εξετάσεων", "",
+ "", "",
+ f"Όλα τα θέματα εξετάσεων προηγούμενων ετών ({len(order)}), σε τέσσερα επίπεδα, από το",
+ "πιο εύκολο (1) στο πιο δύσκολο (4). Κάθε θέμα ανοίγει στη δική του σελίδα, με την",
+ "εκφώνηση και μια υπόδειξη, και από εκεί πηγαίνετε στο προηγούμενο ή στο επόμενο θέμα του",
+ "ίδιου επιπέδου. Όλες οι ασκήσεις του οδηγού, ανά κεφάλαιο, είναι στην",
+ "[τράπεζα ασκήσεων](./).", ""]
+ out += [f"{n}. [{LEVELS[n]}](#level-{n}) ({count[n]})" for n in LEVELS] + ["", NOTE_2023, ""]
+ for n in LEVELS:
+ out += [f'', "", f"## Επίπεδο {n}: {LEVELS[n]} ({count[n]})", ""]
+ for i, q in enumerate((q for q in order if q["meta"]["level"] == n), 1):
+ m = q["meta"]
+ ch = m["chapters"][0]
+ out.append(f"{i}. **[{m['title']}]({os.path.relpath(q['path'], 'questions')})** · {m['source']['title']} · "
+ f"Κεφ. [{ch}](../chapters/{slugs[ch]}/) · {m['type']}")
+ out.append("")
+ return "\n".join(out).rstrip() + "\n"
+
+
+def exams_yaml(qs):
+ """Each exam question's level and its neighbours on the page, within the level."""
+ order = exam_order(qs)
+ lines = ["# Generated by tools/gen-exercises.py: exam question id -> level, previous, next."]
+ for i, q in enumerate(order):
+ lvl = q["meta"]["level"]
+ prev = order[i - 1]["meta"] if i > 0 and order[i - 1]["meta"]["level"] == lvl else None
+ nxt = order[i + 1]["meta"] if i + 1 < len(order) and order[i + 1]["meta"]["level"] == lvl else None
+ fields = [f"level: {lvl}"] + ([f"prev: {prev['id']}"] if prev else []) + ([f"next: {nxt['id']}"] if nxt else [])
+ lines.append(f"{q['meta']['id']}: {{{', '.join(fields)}}}")
+ return "\n".join(lines) + "\n"
+
+
def refs_yaml(refs, lectures):
slugs = {l["n"]: l["slug"] for l in lectures}
lines = ["# Generated by tools/gen-exercises.py: question id -> label, anchor, chapter."]
@@ -433,6 +493,8 @@ def write(path, new):
new = filled
write(path, number_chapter(new, l["n"]))
write(os.path.join(ROOT, "questions", "README.md"), index(qs, lectures, refs))
+ write(os.path.join(ROOT, "questions", "exam-questions.md"), exams_page(qs, lectures))
+ write(os.path.join(ROOT, "_data", "exams.yml"), exams_yaml(qs))
write(os.path.join(ROOT, "_data", "refs.yml"), refs_yaml(refs, lectures))
write(os.path.join(ROOT, "_data", "chapters.yml"), chapters_yaml(lectures))
hpath = os.path.join(ROOT, "README.md")
From 4de56cfcbdb7e8671cf24cd7c7f5bd34737b84e3 Mon Sep 17 00:00:00 2001
From: Thanassis Avgerinos
Date: Fri, 9 Oct 2026 09:15:43 +0300
Subject: [PATCH 2/2] CI: refresh the apt index before installing poppler-utils
The runner image shipped an index pointing at a superseded poppler
version, so the install 404ed and the PDF check failed.
---
.github/workflows/pages.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
index 6038b51..451f041 100644
--- a/.github/workflows/pages.yml
+++ b/.github/workflows/pages.yml
@@ -52,6 +52,8 @@ jobs:
# A pandoc/xelatex failure can still leave a stub PDF behind.
- name: Check PDFs
run: |
+ # The runner image can ship a stale package index (404s on superseded versions).
+ sudo apt-get update -qq >/dev/null
sudo apt-get install -y -qq poppler-utils >/dev/null
for f in build/*.pdf; do
pages=$(pdfinfo "$f" | awk '/^Pages:/ {print $2}')