UP | HOME

Final Exam Review
Lecture 14

Table of Contents

Final Exam Review

Instructions

The exam questions will be available to see and answer from 10am to 1pm EST 12/11. Any late submissions for any question will count as zero, unless you have prior arrangements via SAS or the instructor.

You must answer all questions on your own using only your notes from the course, any materials under the https://cop3402fall20.github.io/ (Links to an external site.) webiste domain (excluding external links), and the dragon book. No other help from people, materials or other may be used. Some examples of prohibited activities during the exam include the following: performing arbitrary web searches; communicating with others via any means (except the instructor and TAs for the purpose of asking questions); compiling, executing, or in any other way using machine or human assistance in writing your programs; saving or sharing questions. Note that this is not a comprehensive list of prohibited activities, but only examples. You must answer all questions on your own using only your notes from the course, any materials under the https://cop3402fall20.github.io/ (Links to an external site.) webiste domain (excluding external links), and the dragon book.

There are 15 questions, each worth 1pt. Some questions have multiple parts, which have point values evenly divided across the 1pt. Partial credit for incorrect answers may be given only at instructor discretion.

Pick the best answer in the context of the material from this class.

Regular expression use the operators concatenation “aa”, alternation “a|a”, and Kleene closure “a*”. The order of operations from highest priority to least is Kleene star, concatenation, then alternation. Parentheses maybe be used to make priority explicit.

Transition tables have one state per row and one column per element of the alphabet.

Finite automata diagrams use a circle, which may be labeled, for a state, an arrow labeled with the element of the alphabet for transitions, an in-edge arrow for the starting state, and a double circle for accepting states.

For all representations of regular languages you may assume the alphabet is comprised of only those symbols given in the representation unless otherwise specified.

Grammars are defined with terminals (given in quotes), nonterminals (given with a capitalized single letter), productions with an arrow ->, and a starting symbol (on the left side of the first production in the grammar).

An LR parsing table has one row per state and columns for transitions on terminals (the action table) and transitions on nonterminals (the goto table). The action table may have entries for shift, reduce, accept, and error. An empty entry means an error entry.

Please answer this question with “I agree” to signal agreement with the following sentence: “I agree to exercise academic integrity and abide by UCF’s Golden Rule policy.” A missing answer for this question may result in a zero for the entire exam.

  • 15 webcourses assignments.
  • Time limited to final exam period.
  • Published just before final.
  • Answer in any order.
  • Instructor and TAs on-hand during final exam period.

Vagrant

  • Lecture 1
  • Identify vagrant commands used in class
  • Know difference between host and guest OS
  • Know concepts of virtualization, directory mapping, access via shell

git

  • Lecture 2
  • Know git commands used in this course

GNU/Linux command-line shell

  • Lecture 2
  • Know shell commands used in this course

Compilers

  • Lectures 3 and 4
  • Know overall compiler concepts, phases
  • Understand the toy compiler's operation

The SimpleC language

  • Lecture 4
  • Projects 1 and 2
  • Know proper syntax

Regular languages

  • Lecture 6
  • Know definition of regular languages
  • Compare to context-free languages

Size of language? Size of alphabet?

Regular expressions to NFAs

  • Lecture 6
  • Homework 2
  • Convert regular expression to NFA

NFA to DFA conversion

  • Lecture 6
  • Homework 2
  • Convert NFA to DFA

Context-free grammars

  • Lecture 7

Know pieces of grammar: terminals, nonterminals, productions, starting symbol

LR parsing

  • Lecture 7
  • Homework 3
  • Be able to use parsing table

Compiling SimpleC

  • Lectures 9-12
  • Projects 3 and 4
  • Be able to write equivalent assembly for small snippets of SimpleC

Implementing functions

  • Lecture 9
  • Project 3
  • Know Intel ABI and SimpleC design (parameter passing, local variables, calling, returning, return values, etc)

Decompiling SimpleC language constructs

  • Lectures 9-12
  • Projects 3 and 4
  • Detect SimpleC constructs from given assembly snippets

Expressions, statements, function definitions and calls, pointer use, control-flow

Stack-smashing attacks

  • Understand why stack-smashing works to execute arbitrary code
    • Buffer overflow, controlling return address, deploying payload

Author: Paul Gazzillo

Created: 2020-12-04 Fri 09:47