Overview
This foundational course introduces the organization, representation, and processing of data through abstract data types, data structures, and algorithms. Topics include asymptotic analysis, Big O and Big Theta notation, best-case and worst-case reasoning, recurrence relations, introductory correctness arguments, and the practical trade-offs among alternative representations.
Students implement, test, trace, visualize, and benchmark arrays, linked lists, stacks, queues, hash tables, trees, binary search trees, heaps, priority queues, and graphs. Algorithmic techniques include linear and binary search, elementary and efficient sorting, recursion, divide and conquer, greedy methods, breadth-first and depth-first search, shortest paths, spanning trees, and introductory dynamic programming. Programming assignments and a substantial project emphasize testing, documentation, code review, maintainability, and evidence-based selection of computational solutions.
Learning Outcomes
- Analyze the time and space complexity of algorithms using asymptotic notation and introductory recurrence relations.
- Select appropriate data structures according to operational requirements, input characteristics, and performance trade-offs.
- Implement and test core data structures, including lists, stacks, queues, hash tables, trees, heaps, and graph representations.
- Implement and compare searching, sorting, graph, greedy, divide-and-conquer, and introductory dynamic programming algorithms.
- Apply recursion and recurrence reasoning to formulate and evaluate algorithmic solutions.
- Trace algorithms on representative inputs and explain their behavior, intermediate states, and resource requirements.
- Evaluate introductory correctness arguments and identify assumptions, limitations, and potential failure cases.
- Synthesize a documented, tested, benchmarked, and maintainable software solution to a substantial algorithms and data structures problem.
- Communicate design decisions and comparative evaluations through code review, visualization, technical documentation, and performance evidence.
Timetable
| Type | Length | Frequency | Period |
|---|---|---|---|
| Lecture | 2 hours | Weekly | All semester |
| Lab | 2 hours | Weekly | All semester |
| Tutorial | 1 hour | Fortnightly | All semester |
| Workshop | 2 hours | Fortnightly | Second term |
Assessment Schedule
| Type | Description | Weighting |
|---|---|---|
| Assignment | Programming assignments (4 × 7.5%) | 30.00% |
| Quiz | Algorithm tracing and complexity quizzes (4 × 2.5%) | 10.00% |
| Test | Practical implementation test | 15.00% |
| Deliverable | Code review and benchmarking report | 10.00% |
| Capstone | Substantial data structures and algorithms project | 20.00% |
| Exam | Final examination | 15.00% |
Prerequisites
- Requirement 14 NCEA Level 2 Mathematics credits, externally assessed
Teaching Staff & Programs
This course is delivered jointly by faculty from the participating programs listed below. In line with the Douchewater Way, the University of Sexology tailors core instruction directly to each cohort's specific discipline — adapting curriculum to program needs rather than forcing students into a one-size-fits-all model. Learn more about our approach at The Douchewater Way.

