ITEC 380: Exam 1 topics - Fall 2010
- Announcement: Chapter 4 will NOT be on this exam
- Topics
- Through week 6
- Chapters 16, 1, 2, 3 (Semantics not included)
- Lecture and notes, supplemented by text
- Homework
-
Chapter 1: Introductory Material
- Evaluation criteria and language characteristics: describe how characteristics
influcence criteria and give some examples using common languages
- von Neumann architecture: describe it and its influence on programming languages
- Evolution of imperative languages: list and describe the basic mechanisms for control
and data abstraction
- Language paradigms: list, describe fundamental characteristics, give example languages
- Programming domains: describe programming language features that support
various common programming domains
- Compilation and interpretation: describe and distinguish between, give examples of
languages that use each, compare hardware and software interpretation
- Syntax vs Semantics: describe each and distinguish between
- Compiler phases (and symbol table): diagram phases showing relationships among
them and inputs and outputs of each
- Chapter 2: Evolution of Major Languages
- Church's thesis:
- Turing machine: informally define
- Church's thesis: define and describe relevance
- Turing complete: define, describe relevance
- Periods: Dominant themes and major languages and their characteristics
- Important languages - when developed, major characteristics, why important
- Late 1940's and Early 1950's: programming before high level languages
- Late 1950's: FORTRAN and LISP
- Early 1960's: COBOL, ALGOL, BASIC
- Later 1960's: PL/1, SIMULA
- 1970's: Pascal, Modula2, C, PROLOG, Smalltalk
- 1980's: Ada, C++, Eiffel
- 1990's: Ada95, Java, Scripting (Perl, python, ruby, tcl, vbscript, javascript)
- 2000's: Scripting, C#, .NET, Ada 2005
- 2010's: ???, Ada 2012
- Chapter 3: Grammars (Semantics not included)
- Fundamental concepts:
- Describe relation between grammars, valid programs,
program structure, and programming language syntax
- Recognize parts of a grammar and define terms
(eg variables and terminals, start symbol, productions)
- Define Backus Normal Form (BNF) and Context Free Grammar (CFG)
- Describe the relation between CFG and Programming Languages
- Derivations and Parse Trees
- Write a derivation of a string
- Left/Rightmost derivations: define and create
- Parse tree (abstract and concrete): define and create
- Describe relation between derivation and parse tree
- Determine and describe the strings produced by a grammar
- Write grammar to define a given language (using recursive productions as needed)
- Write and interpret grammars for programming common language constructs (eg
programs, statements, if-then, assignment, expressions)
- Expression grammars:
- Give and interpret ambiguous and unambiguous expression grammars
- Write an unambiguous expression grammar with desired precedence and associativity
- Ambiguous grammars:
- Define
- Prove that a grammar is ambiguous
- Describe ambiguous if problem and its solutions
- EBNF
- List and define EBNF notation: (|), [], {}
- Interpret EBNF descriptions
- Distinguish between language and metalanguage in EBNF descriptions
- Express common programming language structure using EBNF
-
Chapter 16: PROLOG
- As covered in class
- Process of execution/pattern matching
- Facts, rules, predecates, queries
- Recognize, interpret and describe basic language concepts:
- Variables (use good names)
- If then
- And, or
- Arithmetic
- Lists
- Common functions (eg member, append, length): interpret and write
- Special notation [ H | T ]: interpret and use
- Instantiating lists: interpret and write predicates and queries involving list
- Write recursive predicates with a base case
- Determine values taken by variables when matching queries with facts and rules
- Write predicates to accomplish a task, including list processing
- Update (10/18) on exam content (approximate):
- Grammars,etc: 50 points
- Prolog: 25 points
- Chapters 1 and 2: 25 points