# IIOT Syllabus

### Version 2 — May 19th, 2019

Download PDF

## Level 1

- Primitive data types (e.g.
`int`

, `char`

, `double`

, `bool`

)
- One-dimensional arrays (e.g.
`int[]`

, `char[]`

, `double[]`

, `bool[]`

)
- Branching (
`if`

/`else`

statement)
- Bounded loops (simple
`for`

statement)

## Level 2

- Multi-dimensional arrays (e.g.
`int[][]`

)
- Queue and stack data structures
- Unbounded loops (
`while`

statement)
- Functions and exhaustive recursion (e.g. listing permutations)
- Binary search
- Quadratic sorting algorithms (e.g. bubble sort)
- Strings and quadratic substring search
- Euclidean algorithm for the greatest common divisor
- Basic concepts of geometry and arithmetic

## Level 3

- Standard containers (e.g.
`vector`

, `set`

, `map`

)
- Divide et impera
- Dynamic programming on one- or multi-dimensional arrays
- Graph traversals (BFS, DFS)
- Efficient sorting algorithms (
`sort`

or `qsort`

)
- Approximate optimization through heuristics techniques

## Level 4

- Disjoint-set data structure (union-find)
- Data structures for range queries
- Least common ancestor in trees
- Graph algorithms: shortest path, spanning tree
- Dynamic programming on acyclic graphs
- Backtracking (branch and bound algorithms)

## Level 5

- All other topics not mentioned in previous levels