Quiz Learning Objectives

This page lists the Quiz Learning Objectives for this course. The focus here is on quizzes, but you’ll have a chance to practice these skills in class and on assignments as well.

The following is the list of Quiz Learning Objectives, divided by unit.

Unit 1: Bits and Bytes

Number representations

  • NR 1: binary

    • Proficiency: convert from unsigned binary to decimal
    • Mastery: convert from unsigned binary to hexadecimal
  • NR 2: hexadecimal

    • Proficiency: convert from hexadecimal to binary and decimal
    • Mastery: add/subtract two hexadecimal numbers
  • NR 3: 2’s complement

    • Proficiency: negate a binary value
    • Mastery: convert from decimal to 2’s complement
  • NR 4: floating point

    • Proficiency: identify the parts of a floating-point binary sequence
    • Mastery: convert between floating point and binary

Data representations

  • DR 1: UTF-8 encoding (with table provided)

    • Proficiency: encode a codepoint (given byte count)
    • Mastery: encode a codepoint (determine appropriate byte count)
  • DR 2: UTF-8 decoding (with table provided)

    • Proficiency: decode an encoded byte sequence (<= 2 bytes)
    • Mastery: decode a multi-character encoded byte sequence (any byte count)
  • DR 3: struct layout

    • Proficiency: understand how a struct is stored in memory (with arrays, no buffer bytes)
    • Mastery: understand how a struct is stored in memory (with buffer bytes and/or unions)
  • DR 4: array layout

    • Proficiency: understand how elements of an array are stored in memory
    • Mastery: understand how complex elements (e.g., structs with nested array(s)) of an array are stored in memory
  • DR 5: C strings

    • Proficiency: understand the use of \0 to null-terminate a string
    • Mastery: understand the difference and risks between strcpy and strncpy
  • DR 6: char array interpretation

    • Proficiency: understand how bytes are interpreted with %c and %d
    • Mastery: understand how bytes are interpreted with %c, %d, %x, %s, and %p
  • DR 7: integer byte ordering

    • Proficiency: understand how an integer is stored in big- and little-endian
    • Mastery: understand how an array of integers are stored in big- and little-endian
  • DR 8: pointers

    • Prociency: understand the difference between a value and its address
    • Mastery: understand how pointers are stored in memory

Operators

  • OP 1: bitwise/logical/shift

    • Proficiency: perform given bitwise/logical/shift operations
    • Mastery: provide bitwise/logical/shift operation(s) for a given affect (e.g., via masking)
  • OP 2: resizing

    • Proficiency: resize an integer value to a smaller size
    • Mastery: resize an integer value to a larger size (signed or unsigned)
  • OP 3: addressing and dereferencing

    • Proficiency: identify incorrect use of & and * operators
    • Mastery: correctly use & and * operators
  • OP 4: pointer arithmetic

    • Proficiency: work with addresses of members of a struct or elements in a char array
    • Mastery: work with addresses of complex elements (or their parts) of an array
  • OP 5: overflow

    • Proficiency: identify when overflow occurs in addition
    • Mastery: identify when overflow occurs in addition/subtraction and perform computation

Unit 2: Instruction Set Architecture

Assembly instructions

  • AI 1: addressing modes

    • Proficiency: interpret operands with constants, registers, and basic memory lookups
    • Mastery: interpret operands with offsets, indexing, and scaling
  • AI 2: move instructions

    • Proficiency: interpret simple mov instructions
    • Mastery: interpret resizing mov instructions
  • AI 3: pointer arithmetic

    • Proficiency: interpret instructions using pointer arithmetic
    • Mastery: provide instruction(s) given array/struct statement(s)
  • AI 4: arithmetic instructions

    • Proficiency: interpret arithmetic instruction
    • Mastery: interpret arithmetic instruction with condition codes
  • AI 5: jump instructions

    • Proficiency: determine outcome of cmp jump sequence
    • Mastery: determine outcome of test jump sequence
  • AI 6: stack

    • Proficiency: identify locations on the stack with offsets
    • Mastery: draw stack given push/pop/add/sub instruction(s)

Assembly code

  • AC 1: control patterns

    • Proficiency: distinguish recursion/looping/branching
    • Mastery: distinguish type of loop/branching
  • AC 2: data transfer

    • Proficiency: identify number of function parameters
    • Mastery: identify types of parameters and output
  • AC 3: reverse engineering

    • Proficiency: reconstruct part of C program from assembly
    • Mastery: reconstruct all of C program from assembly
  • AC 4: functionality

    • Proficiency: provide low-level explanation of functionality
    • Mastery: provide high-level explanation of functionality

Unit 3: Systems Sampling

Security

  • SEC 1: trusting trust

    • Proficiency: provide high-level explanation of trusting-trust attack
    • Mastery: provide deep explanation of trusting-trust attack or defense
  • SEC 2: buffer overflows

    • Proficiency: provide high-level explanation of buffer-overflow attack and defense
    • Mastery: interpret or provide string input to cause a buffer-overflow attack

Networking

  • NW 1: sockets

    • Proficiency: differentiate between TCP and UDP communication
    • Mastery: write a simple socket client in C
  • NW 2: DNS

    • Proficiency: provide high-level explanation of DNS
    • Mastery: provide deep explanation of DNS or an attack against it

Operating systems

  • OS 1: file systems

    • Proficiency: provide relative path for given file system structure
    • Mastery: provide Unix command(s) with redirection and/or piping
  • OS 2: fork

    • Proficiency: interpret programs with one fork call
    • Mastery: interpret programs with multiple fork calls

Memory hierarchies

  • MH 1: addresses

    • Proficiency: interpret cache parameters
    • Mastery: interpret address(es)
  • MH 2: cache impact

    • Proficiency: provide high-level explanation of cache benefits
    • Mastery: explanation performance implications of loop ordering