Coding III - Data Structures
Agentic coding tools now emit textbook data structure implementations on demand, so the scarce professional skill has moved from writing them to specifying them precisely, choosing the right one for a workload, and verifying machine-generated code against its invariants and cost model. At the same time data structures have become AI infrastructure - inverted indexes, tries, and approximate-nearest-neighbor graphs are what make retrieval-augmented systems work - so the course keeps its classical core and adds both the verification discipline and the indexing structures industry now depends on.
Current catalog prerequisites — (CSC 250 or 2050).
Current description → proposed description
As sub-disciplines of artificial intelligence, machine learning and robotics hold much promise for the creation of partial and useful AI systems, but the correct understanding and application of these disciplines requires careful study of their theoretical underpinnings. This course examines the underlying theory behind current machine learning and robotic applications as well as their practical implementations. Students will work with state-of-the-art algorithms for supervised, and reinforcement learning. Students will also complete practical assignments related to robotic construction and navigation. Moral, ethical, and worldview issues related to these topics will be addressed from the Lutheran Christian perspective.
Prerequisites: (CSC 250 or 2050).
Coding III develops the data structures and cost analysis required to build software that remains efficient as data volume grows. Students implement and test dynamic arrays, linked structures, stacks, queues, hash tables, balanced search trees, heaps, tries, and graphs, derive worst-case and amortized bounds, and confirm those bounds by measurement on realistic workloads. Structure selection is treated as an engineering decision governed by access pattern, memory hierarchy, and cost rather than by habit. Because AI coding agents now produce such implementations on demand, the course shifts emphasis from typing an implementation to specifying it precisely and establishing that it is correct. Students review machine-generated structures against their stated invariants using property-based tests, adversarial inputs, and profiling, and remain accountable for behavior they did not write. Students also examine the indexing structures beneath modern AI systems, including hash and inverted indexes, tries, and approximate-nearest-neighbor graphs, measuring the recall, latency, and memory tradeoffs that govern retrieval at scale.
What changes
- Verification of agent-generated implementations added alongside required hand-implementation
- Property-based tests, invariant checks, and adversarial inputs as first-class practice
- New unit on AI retrieval indexes: inverted indexes, tries, ANN graphs
- Empirical benchmarking reconciled against derived asymptotic bounds
- Written design rationale defending structure selection for a stated workload
6 proposed outcomes, mapped to 6 program outcomes
Each outcome below is written to be observable and assessable, and each is mapped to the program learning outcomes for which it produces evidence.
Students will be able to implement the core abstract data types of the discipline - dynamic arrays, linked structures, stacks, queues, hash tables, balanced search trees, heaps, tries, and graphs - from specifications they write precisely enough that an independent implementer or coding agent could satisfy them, defending each structural invariant the specification imposes.
Writing a specification precise enough for an independent implementer or coding agent to satisfy, then defending each invariant it imposes against the implementation produced, is the propose-and-evaluate judgment PLO 4.2 names, exercised on the structures those agents now generate.
Students will be able to analyze the time, space, and memory-hierarchy cost of a data structure both asymptotically and empirically, reconciling performance measured on realistic workloads, including the retrieval indexes built in this course, with the derived worst-case and amortized bounds.
Interpreting and explaining the measured behavior of the AI retrieval indexes built in this course is the AI data outcome PLO 6.1 asks graduates to make intelligible. Reconciling those measurements with derived worst-case and amortized bounds is quantitative analysis that must yield a defended conclusion, as PLO 6.2 requires.
Students will be able to evaluate data structure implementations generated by AI coding agents by testing them against their stated invariants with property-based tests, adversarial inputs, and profiling before accepting them into a codebase.
Testing agent-generated implementations against their invariants with adversarial inputs, and judging the downstream risk of accepting code the student did not write, is exactly the critical analysis of AI-produced output that PLO 4.1 names.
Students will be able to construct the indexing structures that support retrieval in modern AI systems - hash and inverted indexes, tries, and approximate-nearest-neighbor graphs - measuring the recall, latency, and memory tradeoffs that distinguish them.
Recall, latency, and memory measurements taken from a retrieval index are AI data outcomes in the literal sense PLO 6.1 names, and the CLO requires students to produce and explain them.
Students will be able to justify a data structure selection for a stated workload in a written design rationale that a non-specialist stakeholder can act on, naming the assumptions under which the choice fails.
The written design rationale, including the assumptions under which the chosen structure fails, is transparent technical communication offered with integrity rather than advocacy, as PLO 5.1 requires. Writing so that a non-specialist stakeholder can act on the recommendation is the translation of technical knowledge for a broader audience named in PLO 5.3.
Students will be able to differentiate problems that a change of data structure solves from problems that require a change of algorithm, selecting and defending the appropriate intervention.
Selecting and defending the intervention - a different structure versus a different algorithm - is the propose-and-evaluate judgment PLO 4.2 names. The differentiation must be made on profiling and complexity evidence, drawing a meaningful conclusion from quantitative analysis as PLO 6.2 requires.
Program outcomes this course reaches
Filled cells are program learning outcomes with at least one supporting course learning outcome in this course. Sparse coverage is expected — no single course carries all eighteen.