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.