# 5. Report contents / Зміст звіту The report is submitted together with the source code. It must contain the following sections. 1. **Title block** — course, laboratory work number and title, student's name and group, date. 2. **Objective** — a short statement of the goal of the work (see [1purpose.md](1purpose.md)). 3. **Brief theory** — the definition of a set and of each implemented operation (union, intersection, difference, complement), in your own words and using the notation of [Lecture 2](../../Lectures/CDM-L02.md). 4. **Chosen representation** — how a set is stored *without* a built-in set type, and how the **no-duplicates** invariant is maintained. 5. **Implementation** — the source code of every implemented function, with brief comments. State the programming language used. 6. **Testing** — for each function, a table of test cases and results. Include the examples from [4task.md](4task.md) **and** your own edge cases (empty sets, disjoint sets, equal sets, string elements). 7. **Achieved tier** — state the highest tier you completed and which functions it covers (see the grading bands in [4task.md](4task.md)). 8. **Complexity** — the time complexity of your membership test and of each operation, with one sentence on how a built-in set type would improve it. 9. **Conclusions** — what was implemented, the difficulties encountered, and what you learned. **Submission requirements.** The source files must compile/run and reproduce the example outputs of [4task.md](4task.md). The language's built-in set type must not appear anywhere in the submitted code.