Hi There!

I'm Dan Schlegel, an Associate Professor in the Computer Science Department at SUNY Oswego

Midterm Exam Study Guide

Below is an outline of the concepts covered during the course through the end of class on 3/6. While all topics are fair game for the exam, this should provide an outline for studying.

  •  Concepts
    • How PLs Work
      • Compiler vs. Interpreter
      • Stages of compilation (what they are, what they do)
    • Syntax
      • BNF (parse trees, ambiguous vs. non-ambiguous grammars)
    • Memory allocation
      • Stack / heap
      • Avoiding common memory / security issues
    • Functional programming concepts
      • Lambdas, lambda calculus
      • Reduction as a method for evaluation
      • Higher order functions
      • Immutability
      • Pure functions (side-effect free)
      • Code is data is code (homoiconicity of data and code)
  •  Languages
    • C and Clojure

Expect questions to cover concepts, things we’ve done in class, and things which have been explored in projects. Questions comparing how language features are exposed in different programming languages are always fair game. For C and Clojure, expect “what does this code do?” style questions, as well as some short code writing problems (single lines of code, or very tiny functions using very common language constructs you have definitely used in class and in your project).