ON THE FINAL: ============= - Everything, except last week (no Frontiers of Computer Science) - Computer architecture and digital logic: - Draw circuit for Boolean formula - Adder - Convert decimal <-> binary - Von Neumann architecture - Binary functions; equivalence of formulas, truth tables - Python programming: - Write code - Trace code - Give runtime of code - Worst-case runtime, best-case runtime, input examples - Write simple recursive code - Trace recursive code - Searching and sorting: - Know runtimes and how algorithms work Minimum, linear search, binary search, selection sort, merge sort - Lists and Trees: - Classes and methods -> Only need to be able to use a class - Linked lists: - Definition and coding (iterative, recursive) - Runtimes compared to arrays - Binary trees: - Definition and coding (iterative, recursive) - Binary search trees - Graphs: - Definition - Storage - Run BFS and understand how it works (why does it use a queue?) - Code to find whether there is an edge from u to v (i.e., v is in the adjacency list of u), or to print the whole adjacency list of u - Data Mining: - What is supervised machine learning? Classification (e.g., nearest neighbor), (linear) regression - Know concepts, no code NOT ON THE FINAL: ================= - MIPS details - Hex - Doubly-linked list - Coding with matrices - Coding for data mining - Detailed coding of methods or classes - Coding for Huffman coding - Weighted graphs - Adjacency matrix