TOPICS FOR TENTH GRADE CS

TOPICS FOR TENTH GRADE CS

Managing complexity

We introduce the formal study of algorithms by making concrete the kinds of problems they can solve. These should be paired with application domains where students can find authentic uses for them. (For example, I’m avoiding the classic algorithmic problem of sorting because I can’t think of a lot of examples where you would actually implement your own sorting alogrithm.) These should also be sequenced so that shared concepts can built on each other.

Algorithms which offer a clever way to solve a problem, where a naive approach is available but scales poorly

Algorithms

Recursion – factoring numbers / finding primes

Memoization / Linear programming – computing high values of the fibonacci series – computing rows of Pascal’s triangle – finding optimal paths through sequential choices

Search – breadth-first – depth-first

Algorithms which solve some problem where the solution space is initially hard to see (eg students might not have any idea how to formalize or solve the problem).

Pathfinding – A* – Dijkstra’s algorithm

Encoding – Huffman encoding – image compression – tree lexicon (eg for word-guessing games)

Game-playing – minimax (winning tic-tac-to, nim)

Logic – Some kind of proposition prover?