Students taking this course are expected to understand the basic concepts of machine language (which processor doesn't matter much), as one would learn in Systems I (CSC 371). Students should also be familiar with data structures such as linked lists, heaps, FIFO and priority queues, as one would learn in Data Structures (CSC 343). A third official prerequisite is Probability (MTH 361), but I don't anticipate using anything more sophisticated than the notions of mean and standard deviation.