CIS 706

Prerequisites by Topic


  • working knowledge of a high-level language, preferably Java, C, or C++;
  • ability to use and implement common data structures such as lists, stacks,
    queues, and trees;
  • principles of functional, block-oriented programming languages  including types,
    scoping, abstraction mechanisms, exceptions, and concurrency
  • principles of object-oriented programming languages  including
    classes and objects
  • knowledge of software architecture and design

Knowledge and Skills Acquired


  • Mastery of:

    • Deterministic parsing, Semantic analysis, Abstract syntax trees
    • Symbol tables, type checking, resource allocation
    • Generating LR parsers using automated tools such as Flex and Bison
    • Code generation

  • Familiarity with:

    • Domain specific languages
    • Garbage collection, native code generation, static analysis
    • Virtual machines and run-time environments