# Data Structures course (China, 2026) – English version

Dr. Ferenc Koczka · Eszterházy Károly University
16 weeks · 2 hours of lecture + 2 hours of practice per week · Java and Go · final test and practical grade in week 16

## Syllabus

| Week | Topic | Slide deck |
|---|---|---|
| 1 | Introduction, data, elementary data types, classification of data structures | `01_introduction` |
| 2 | Efficiency (O notation), linear and binary search | `02_efficiency_searching` |
| 3 | Arrays, address calculation, matrices, dynamic array | `03_arrays` |
| 4 | Strings, encoding (ASCII, Unicode, UTF-8), pattern search | `04_strings` |
| 5 | Sorting I: bubble, selection, insertion | `05_sorting_1` |
| 6 | Set: boolean vector, unordered and sorted representation | `06_set` |
| 7 | Stack, postfix expressions | `07_stack` |
| 8 | Queue, circular queue, deque, priority queue | `08_queue` |
| 9 | Model of dynamic memory, singly linked list | `09_linked_list` |
| 10 | Sentinel, doubly linked and circular list | `10_sentinel_doubly_list` |
| 11 | Stack and queue with lists, hash table | `11_dynamic_stack_queue_hash` |
| 12 | Recursion | `12_recursion` |
| 13 | Sorting II: merge sort, quicksort | `13_sorting_2` |
| 14 | Trees, binary trees, representation, traversals | `14_trees` |
| 15 | Binary search tree, balance, heap, summary | `15_bst_heap` |
| 16 | Final test and practical grade | `dolgozat/`, `practical/` |

Every deck has the same structure: review → lecture (pseudocode, Java, Go, diagrams) → summary → review questions → **practice** (demo programs, exercises, homework). The answers and the time plan are instructor notes (`<!-- … -->`) in the source – they do not appear in the PDF.

## Folders

| Folder | Content |
|---|---|
| `en/diak/` | Markdown source of the slide decks |
| `en/diak/kepek/` | diagrams (SVG) – generated by `eszkozok/abrak_hXX.py en` |
| `en/diak/tema/kurzus.css` | slide theme |
| `en/code/java/wXX/` | Java demo programs and solutions of the exercises (`ExercisesXX.java`) |
| `en/code/go/wXX/<program>/` | Go demo programs and solutions (`wXX/exercises`) |
| `en/dolgozat/` | final test (version “A”) and answer key, A4 theme |
| `en/practical/` | practical grade: task sheet, grading guide, starter code (`java/`, `go/`) |
| `en/practical/solution/` | reference solution of the practical task – **do not give it to the students!** |
| `en/pdf/` | all generated PDFs |

## Running the programs

```bash
# Java (JDK 17+): a single file, no separate compilation
cd en/code/java/w07 && java Postfix.java

# Go (1.23+): from the go folder
cd en/code/go && go run ./w07/postfix
```

## Building the PDFs

```bash
./build.sh                                   # every deck, test and task sheet (hu and en)
./build.sh en/diak/01_introduction.md        # a single file
python3 eszkozok/abrak_h07.py en             # regenerate the diagrams of one week
```

Requirements: `brew install marp-cli`, Firefox. Live preview: VS Code + the “Marp for VS Code” extension
(add `en/diak/tema/kurzus.css` to `markdown.marp.themes` in the settings, and enable HTML).

## Editing tips

- New slide: a `---` line
- Image: `![w:600](kepek/file.png)` · image as a background on the right: `![bg right:40%](kepek/file.png)`
- Two columns: `<div class="ket-hasab"><div> … </div><div> … </div></div>` (with blank lines around the Markdown)
- Slide types: `<!-- _class: fejezet -->` (section title), `<!-- _class: gyak -->` (practice), `<!-- _class: kicsi -->` (denser slide), `<!-- _class: kicsi tomor -->` (long code)
- Highlight box: `<div class="doboz">`, `doboz tipp`, `doboz figyelem`
- Instructor note: an `<!-- … -->` comment at the end of the slide (not shown in the PDF)
- The starter code of the practical task is generated from the reference solution (markers `// >>> SOLUTION` … `// <<< SOLUTION`):
  `python3 eszkozok/kiindulo_kod.py en/practical/solution/java/StudentRegistry.java en/practical/java/StudentRegistry.java java`
