Skip to main content

Advanced Topics in Computer Science Study Guide

The whole course, unit by unit

Ten units from a Java and design bridge through the classic data structures to graphs and the consequences of computing. Each unit explains what to know, how to apply it, what typically goes wrong, and one study move that makes the material stick.

Ten units

From a Java and design bridge, through recursion and the classic data structures, to graphs and the social consequences of computing.

No national exam

This is an honors course set by the school rather than the College Board, so assessment is by class tests, projects, and implementation work.

Prerequisite

AP Computer Science A or equivalent Java fluency. The course assumes classes, arrays, ArrayList, and recursion are already familiar.

Where it leads

College data structures and algorithms, competitive programming, and technical interviews.

Units

The ten units

Unit 1 is the largest by a wide margin. The rest move faster, and the last one is the bridge into calculus.

0

Unit 0 · Bridge unit

Computer Science Foundations

The bridge from AP CSA into honors work. It re-establishes Java fluency and then adds the habits the rest of the course assumes: designing before coding, testing deliberately, and explaining a decision in writing.

AbstractionEncapsulationInterfaceTest planBoundary caseRefactoring
1

Unit 1 · Foundational

Recursion

Solving a problem by defining a smaller version of itself. The unit is less about writing recursive code than about arguing that it terminates and that the recursive step actually covers the problem.

Base caseRecursive stepCall stackStack frameRecursion depthCorrectness argument
2

Unit 2 · Heavy

Sorting, Searching, and Efficiency

Where the course starts comparing solutions rather than just producing them. The sorts are the vehicle; asymptotic reasoning is the actual subject.

Big-OBig-ThetaWorst caseStabilityIn placePivot
3

Unit 3 · Moderate

Linked Lists

The first structure with no indexing. Everything is reached by following references, which trades constant-time access for cheap insertion and removal once you are already in position.

NodeHeadTailReferenceSingly linkedDoubly linked
4

Unit 4 · Moderate

Stacks and Queues

Two abstract data types defined by a restriction rather than a capability. The restriction is the point: limiting which element is reachable is what makes each fit a specific class of problem.

LIFOFIFOPushPopEnqueueDequeue
5

Unit 5 · Heavy

Sets, Maps, and Hash Tables

Lookup by key instead of by position. Hashing is the first place where average and worst case diverge sharply, which makes stating the case a required part of every answer.

SetMapHash functionBucketCollisionChaining
6

Unit 6 · Heavy

Trees

The first genuinely recursive structure, where the recursion of the code mirrors the recursion of the data. Binary search trees are fast only while they stay balanced, and that caveat is the unit.

RootLeafHeightDepthIn-orderPost-order
7

Unit 7 · Moderate

Heaps and Heap Sort

A tree with a weaker ordering than a BST, which is exactly what makes it cheap to maintain. The heap property constrains parents against their own children only, so the extreme value sits at the root and nothing else is sorted.

Heap propertyComplete treeSift upSift downPriority queueIn place
8

Unit 8 · Heavy

Graphs and Graph Theory

The most general structure in the course, and the one where the choice of representation changes the complexity of everything built on top of it.

VertexEdgeAdjacency listAdjacency matrixBFSDFS
9

Unit 9 · Assessed seriously

Computing and Society

The consequences of the systems built in the other nine units. It is assessed with the same rigour as the technical material and rewards specific, traceable reasoning rather than general opinion.

Algorithmic biasData minimisationAnonymisationRe-identificationAccessibilityTrade-off

Mathematical Practices

The habits that run through every unit

Four habits this course assesses directly: stating a guarantee, arguing correctness, comparing by growth, and tracing pointers carefully.

1. State the guarantee

Before using a structure, say what it makes cheap and what it makes expensive. A stack is not merely a list with rules; it is a promise about which element is reachable, and that promise is why it fits some problems and not others.

2. Argue correctness, not output

A program that produces the right answer on your example is not yet shown correct. Name the invariant the loop maintains, or the base case and recursive step that cover every input.

3. Compare by growth

Judge algorithms by how their work scales, not by how fast one run felt. Constant factors matter in practice, but the course assesses asymptotic reasoning.

4. Trace the pointers

Linked structures, trees, and graphs fail at the joins. Draw the nodes and redraw them after every reassignment rather than reasoning about the diagram in your head.

Assessment

How to answer, not only what to know

Two lists: one for selected-response work, one for anything you have to write out.

Multiple choice

  • Ask which case is being asked about. Average and worst case differ sharply for hashing, quick sort, and binary search trees.
  • For any structure, check the empty and single-element cases first. Those are where implementations break.
  • On complexity questions, drop constants and lower-order terms before comparing.
  • When a traversal order is asked for, name whether the structure being used is a stack or a queue; that alone determines depth-first versus breadth-first.
  • For recursion, find the base case before following the recursive step. An unreachable base case is the intended flaw in many questions.

Written work

  • State the invariant or base case explicitly. Correctness arguments earn credit that a working implementation alone does not.
  • Handle the empty structure, the single element, and the duplicate case unless told otherwise.
  • When asked to choose a structure, justify the choice by naming the operation that must be fast.
  • Give complexity in terms of the input size and say which case you are describing.
  • When manipulating pointers, write the reassignments in an order that never loses a reference you still need.

Study plan

Where the time is best spent

Four moves, in the order that pays off.

1

Rebuild recursion from the base case

Most later units use recursion as a tool. Practise until you write the base case first by reflex and can state why it is reachable from every call.

2

Learn the cost table

For each structure, memorise what insertion, deletion, search, and access cost, and in which case. That table is the backbone of the whole course.

3

Draw every linked operation

Insertion and deletion in linked lists, trees, and heaps are pointer choreography. Draw before coding and the code becomes transcription.

4

Implement one of each

Write a stack, a queue, a binary search tree, and a hash map from scratch once. Nothing else produces the same understanding of their trade-offs.

5

Practise choosing, not just using

Given a problem statement, name the structure and justify it before writing code. Selection is the skill the course actually assesses.

6

Do not skip Unit 9

The societal unit is assessed with the same seriousness as the technical ones and rewards specific reasoning rather than opinion.

Curriculum scope

What this sequence includes

The organising idea is that a data structure is a set of guarantees, and choosing one is a decision about which operations must be fast. Every unit adds a structure, states what it makes cheap and what it makes expensive, and asks the student to justify the trade rather than memorise it.

Algebra and trigonometry core

Essential foundations

  • Recursion, base cases, the call stack, and recursive correctness
  • Sorting and searching, with comparison by growth rather than by timing
  • Linked structures, stacks, queues, and the cost of pointer manipulation
  • Sets, maps, hashing, collision handling, and load factor
  • Trees, traversals, binary search trees, and balance
  • Heaps, priority queues, and heap sort
  • Graph representation, traversal, shortest paths, and spanning trees

Breadth beyond the assessed core

Included in this sequence

  • Abstraction, encapsulation, and interface design as an explicit skill
  • Writing a correctness argument rather than only a working program
  • Comparing implementations of the same abstract data type
  • Ethical and societal consequences of computing systems

Varies by course

Compare with the school syllabus

  • Balanced trees. AVL and red-black trees are covered in depth in some sections and named only in others.
  • Dynamic programming. Sometimes attached to the algorithms unit and sometimes left to a later course.
  • Language. Java is standard here, though some schools permit Python for implementation work.
  • Project weight. The balance between written assessment and implementation projects differs substantially by teacher.

Glossary

Terms worth being precise about

Abstract data type

A specification of operations and their meaning, independent of how they are implemented.

Invariant

A statement that remains true before and after each iteration or call, used to argue correctness.

Base case

The non-recursive branch that stops a recursion, which must be reachable from every call.

Amortised cost

The average cost per operation across a sequence, used when one operation is occasionally expensive.

Load factor

Entries divided by buckets in a hash table, which predicts collision frequency.

Collision

Two keys hashing to the same bucket, resolved by chaining or by probing.

Balanced tree

A tree whose height stays logarithmic in the number of nodes, guaranteeing fast search.

Heap property

The constraint that every parent compares correctly against its own children, which puts the extreme value at the root.

Adjacency list

A graph representation storing each vertex with its neighbours, using space proportional to vertices plus edges.

Topological order

An ordering of a directed acyclic graph in which every edge points forward.