Exams Overview
Exam Structure
As discussed in the syllabus, the exams in this class are meant to assess your ability on a specific set of core and advanced learning objectives. Each exam will have a posted set of learning objectives that you can demonstrate your ability on for that exam, and most learning objective will appear on at least 2 exams (a few at the end won’t have time, but you’ll have the chance to practice).
Exam Learning Objectives
The learning objectives that will ultimately all be assessed via exams are:
Kotlin foundations
Core
- KF1: Define variables for basic types
- KF2: Write if-else statements
- KF3: Write a basic indefinite and definite loop
- KF4: Write a specified function
Object orientation
Core
- OO1: Instantiate and use an object
- OO2: Implement a specified interface
- OO3: Implement a subclass
Time Complexity
Core
- TC1: Order polynomial complexity classes
Advanced
- TC2-AD: Order mixes of polynomial, logarithmic, and exponential complexity classes
Lists
Core
- LI1: Demonstrate the effects of a sequence of linked-list operations
- LI2: Define the Big-O of a specified linked list operation
- LI3: Demonstrate the effects of a sequence of array-based list operations
- LI4: Define the Big-O of a specified array-based list operation
Advanced
- LI5-AD: Demonstrate how you get the Big-O of a specified linked-list operation
- LI6-AD: Demonstrate how you get the Big-O of a specified array-based list operation
- LI7-AD: Use the appropriate list to solve a problem in very clear pseudocode
Stacks and Queues
Core
- SQ1: Demonstrate the effects of a sequence of stack operations
- SQ2: Define the Big-O of a specified stack operation
- SQ3: Demonstrate the effects of a sequence of queue operations
- SQ4: Define the Big-O of a specified queue operation
Advanced
- SQ5-AD: Demonstrate how you get the Big-O of a specified stack operation
- SQ6-AD: Demonstrate how you get the Big-O of a specified queue operation
- SQ7-AD: Use the appropriate data structure to solve a problem in very clear pseudocode
Sets and Hashing
Core
- SH1: Demonstrate the effects of a sequence of set and hash table operations
- SH2: Define the worst case Big-O of a specified hashing operation
Advanced
- SH3-AD: Explain how you get the Big-O of a specified hashing operation
Recursion
Core
- RC1: Define the three laws of recursion
Advanced
- RC2-AD: Write a recursive function in very clear pseudocode
Trees
Core
- TR1: Identify in-order, pre-order and/or post-order tree traversal
- TR2: Demonstrate insertion/deletion in a binary search tree
- TR3: Demonstrate adding to a 2-3 tree
Advanced
- TR4-AD: Use an appropriate tree to solve a problem in very clear pseudocode
Heaps and PQs
Core
- HP1: Demonstrate the effects of a sequence of heap operations
Advanced
- HP2-AD: Use a heap or priority queue to solve a problem in very clear pseudocode
Sorting
Core
- SO1: Demonstrate quicksort on a diagram
- SO2: Define the best and worst case Big-O of quicksort
- SO3: Define the worst-case Big-O of heapsort
Advanced
- SO4-AD: Explain the idea behind the Big-O of quicksort
- SO5-AD: Explain the idea behind the Big-O of heapsort
Graphs
Core
- GR1: Identify the first level of BFS
- GR2: Identify the first sequence of DFS
- GR3: Define the Big-O of BFS and DFS
Advanced
- GR4-AD Explain the idea behind the Big-O of BFS and DFS
- GR5-AD: Use a graph to solve a problem in very clear pseudocode
You can see how you are doing on each of these on Moodle under the “Grades” tab.