Term 
        
        Languages such as C and Java distinguish between uppercase and lowercase in specifying identifiers. What are the pros and cons of this design decision? Pros: _____ range of _____, can utilize _____ to signify meaning to identifiers, _____ of code when calling identifiers Cons: differences in _____ _____ between programmers, confusion between identifiers whose only _____ is case, programming _____ encountered when _____ variable case |  
          | 
        
        
        Definition 
        
        | greater, identifiers, case, uniformity, naming conventions, difference, bugs, mistyping |  
          | 
        
        
         | 
        
        
        Term 
        
        | Write EBNF of a C programming language switch statement. |  
          | 
        
        
        Definition 
        
        | switch -> "switch" expr {"case" expr "then" stmt} ["default" stmt] |  
          | 
        
        
         | 
        
        
        Term 
        
        | Write EBNF of a C for loop statement. |  
          | 
        
        
        Definition 
        
        | for_loop -> "for" expr [stmt] |  
          | 
        
        
         | 
        
        
        Term 
        
        | Write EBNF of a Java class construct. |  
          | 
        
        
        Definition 
        
        | class_construct -> ("public"|"private"|"protected") class_name [("extends"|"implements") class_name] [{var_type var}] stmt |  
          | 
        
        
         | 
        
        
        Term 
        
        | Give the order of the representation of a non-array variable and an array variable. |  
          | 
        
        
        Definition 
        
        Non-array: Selector, Type, Reference Array: Type, Constructor, Index type, Lower bound, Upper bound, Range type, Reference |  
          | 
        
        
         | 
        
        
        Term 
        
        | Why are there are so many programming languages? We are trying to improve _____ languages, For certain _____ of applications, For specific _____, Don't agree with the ways certain programming _____ are implemented in certain languages |  
          | 
        
        
        Definition 
        
        | previous, domains, hardware, constructs |  
          | 
        
        
         | 
        
        
        Term 
        
        | What makes a language successful? Easy to _____, _____, Easy to _____, Easy to _____, Who is _____ the language, _____ |  
          | 
        
        
        Definition 
        
        | learn, Familiarity, use, implement, pushing, popularity |  
          | 
        
        
         | 
        
        
        Term 
        
        | Scientific applications, business applications, artificial intelligence, systems programming, scripting languages, and special purpose languages are examples of _____ _____ |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Most conventional programming languages can be viewed as _____ of an underlying Von Neumann architecture |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        _____ or _____: Procedures are the main thing _____: Everything is a function call _____ _____ _____: Like Ada packages _____-_____: C Program Modules _____-_____: C++/Java Classes _____: Like Ada Generics/C++ Templates _____: Functional and logic programming languages |  
          | 
        
        
        Definition 
        
        | Imperative, procedural, Functional, Abstract Data Types, Module-Based, Object-Oriented, Generic, Declarative |  
          | 
        
        
         | 
        
        
        Term 
        
        | The compiler translates the high-level source program into an equivalent target program (typically in machine language) |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Interpreter stays around for the execution of the program. Interpreter is the locus of control during execution |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | The ability to group related features into a single unit. Use subroutines to group related computations units so they can be re-used in different parts of the application. |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | The ability to implement information hiding so that changes to a grouping (either control or data) are transparent |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | What does a program look like? It is a set of rules that formally describe the form or structure of the expressions, statements, and program units |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | What does a program mean? It is the meaning of any syntactically valid program written in the language, e.g., expressions, statements, and program units. Note that all syntactically correct programs have valid meaning |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Describe in English the meaning of a construct |  
          | 
        
        
        Definition 
        
        | informal description of the meaning of a language |  
          | 
        
        
         | 
        
        
        Term 
        
        | A mathematical model using formal notation to describe each construct |  
          | 
        
        
        Definition 
        
        | formal description of the meaning of a language |  
          | 
        
        
         | 
        
        
        Term 
        
        | It helps the programmer know how to write a syntactically correct program. Compiler developers use syntax rules to write syntax analyzer or parser to check the validity of a program. Availability of tools to generate lexical and syntax analyzers: Lex and Yacc |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | V* is the set of all words over V. V* is called the _____ of V |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | A set of rules for forming the words in a language is called a _____ |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | A language that is used to describe other languages |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Examples of _____:  "a""b""c""+""-"";""begin""end" |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Examples of _____:  < prog > < stmt_list > < stmt > < var > < exp > |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | A pictorial representation of the syntax of a language |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Two syntax rules have the same _____ _____ if they only differ at the lexical level or _____ _____ |  
          | 
        
        
        Definition 
        
        | abstract syntax, concrete syntax |  
          | 
        
        
         | 
        
        
        Term 
        
        | Rules that are enforced by the compiler at compile time. Example: Type checking, check functions/methods formal and actual parameters, etc. |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Rules of a given construct that are enforced at the runtime |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Describe the meaning of a program by executing its statements on an abstract machine. Each program statement is described by a set of operations of this machine |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Semantics based on formal logic (First order predicate calculus) |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | What is the weakest precondition of a=b+1 P={a>1}? |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | In _____ semantics, the state changes are defined by coded algorithms; in _____ semantics, they are defined by rigorous mathematical functions |  
          | 
        
        
        Definition 
        
        | operational, denotational |  
          | 
        
        
         | 
        
        
        Term 
        
        | It takes all the independent object files and links them together: your program in assembly language and the assembly version of all libraries used by your program |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | The output of the linker is the _____ _____ or _____ |  
          | 
        
        
        Definition 
        
        | executable file, executable |  
          | 
        
        
         | 
        
        
        Term 
        
        The _____ performs the following tasks: 1. Reads the executable and create an address space large enough for the program and its data 2. Copies the instructions and data into memory 3. Initializes the machines registers and sets the stack pointer 4. Load the Program Counter with the address of the entry point of the program (main method in Java or C) 5. Start the execution |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Source code is translated into an intermediate form and run by a software virtual machine. E.g., Java compiler produces byte code that can be run on any Java virtual machine (JVM) |  
          | 
        
        
        Definition 
        
        | hybrid implementation systems |  
          | 
        
        
         | 
        
        
        Term 
        
        | A set of tools that help programmers develop applications |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | A set of properties used to describe a program entity, e.g., variable and function |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Where the values of the attributes of an element are stored |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | The process of assigning a value to the attribute of an element |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | At what time a value is assigned an attribute |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | A binding is _____ if it first occurs before run time and remains unchanged throughout program execution |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | A binding is _____ if it first occurs during execution or can change during execution of the program |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Is the assignment of a value fixed or modifiable? |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Memory _____ with an _____ and a _____ |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Five Semantic Attributes of Variables |  
          | 
        
        
        Definition 
        
        | Name, Type, Scope, l-value, r-value |  
          | 
        
        
         | 
        
        
        Term 
        
        | _____ _____ is the activity of ensuring that the operands of an operator are of compatible types |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | _____ or _____: A compatible type is one that is either legal for the operator, or is allowed under language rules to be implicitly converted, by compiler-generated code, to a legal type |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | The _____ of a variable is the range of statements over which it is visible. The _____ rules of a _____ determine how references to names are associated with variables |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | The _____-_____ _____ of a program unit are those that are visible but not declared in the program |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | A pointer or reference: it is when the r-value of a variable is used to access another variable |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Subprograms, subroutines, procedures, functions, and methods are all _____ |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Some programming languages have _____ method and _____ for binding actual parameters to formal parameters in routine calls |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Routine _____: This specifies the types of parameters and the return type |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Method _____ is commonly used to create several methods with the same name that perform similar tasks |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Two names are _____ if they refer to the same entity at the same program points |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | _____ routines allow the same code to be used for multiple data types |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Language errors are _____ _____ in how a language's syntax and semantics are defined |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
         | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Languages that have strong type systems |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Languages that are not strongly typed |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | _____ _____ languages are _____ _____ languages |  
          | 
        
        
        Definition 
        
        | Statically typed, strongly typed |  
          | 
        
        
         | 
        
        
        Term 
        
        | Two variables can have compatible types only if they are in either the same declaration or in declarations that use the same type name |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Two variables have compatible types if their types have identical structures |  
          | 
        
        
        Definition 
        
        | structure type compatibility |  
          | 
        
        
         | 
        
        
        Term 
        
        | A type is defined by: a set of _____, a set of _____ |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | A _____ ST of a basic type T (also called parent type or supertype) can be defined as: a subset of the values of T, assume that operations of T are _____ by ST |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
         | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | It is the case where an object can have more than one type |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Functions work on a finite small set of types and may behave differently for each: overloading, coercion |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | Work uniformly for an infinite set of types, all of which have common structure: parametric, inclusion |  
          | 
        
        
        Definition 
         | 
        
        
         | 
        
        
        Term 
        
        | The implementation of each data object requires the _____ (structures used to store the attributes of the data) and _____ _____ (memory locations to store the actual values) |  
          | 
        
        
        Definition 
         | 
        
        
         |