CS430 Fall 2006

Chapter Outline of Concepts of Programming Languages by Robert Sebesta

 

·         Ch. 1: Why Study Programming Languages?

o        Concepts of programming languages (reasons for studying) 2-4

o        Programming domains (5-8)

o        Language evaluation criteria (7-20)

o        architecture effects language design – von Neumann architecture in which programs and data are stored in same memory  - CPU which executes the memory is separate and instructions and data need to be moved from memory and results back to memory

o        Language categories (paradigms) (23-32) – example languages for each

o        definitions and differences between interpretation and compilation

o        Von Neumann  bottleneck – instructions can be executed faster than they can be moved to the CPU for execution.

 

·         Ch. 2: History of Programming Languages

o        FORTRAN

§         arithmetic if

§         do loop

§         format statements

§         computed goto

§         error handling

§         goal of language design

§         Be able to read , determine output (trace), write  FORTRAN code

 

o        Functional programming  

§         intended for symbolic computation

§         useful in AI

§         LISP atoms and lists

§         LISP read eval print loop

§         Be able to read , determine output (trace), write LISP code

 

o        Design goals of BASIC

o        Snobol

§         design goals

§         parameter passing mode

§         Be able to read , determine output (trace), write  Pascal code

 

o        Pascal

§         design goal and use

§         parameter passing modes

§         block structure inherited from Algol

§         Be able to read , determine output (trace), write  Pascal code

 

o        Prolog

§         design goal and use

§         facts and rules

§         Be able to read , determine output (trace), write  Prolog code

 

o        Ada

§         design goals

§         parameter passing modes

 

o        Java

 

 

·         Ch. 3: Syntax

o        Describing syntax

§         strings of a language are sentences or statements

§         syntax rules specify which strings are legal

o        BNF

§         whole programming languages can be described by context-free grammars

§         natural notation for describing syntax

§         metalanguage is a language that is used to describe another language

§         BNF is a metalanguage for programming languages

§         be able to generate valid strings, given a grammar

§         be able to draw a parse tree and a left-most derivation showing the generation of valid strings, given a grammar

§         be able to determine whether a string is valid, given a grammar

§         know what makes a grammar ambiguous and be able to determine if a grammar is ambiguous

§         given a grammar, be able to describe accurately and completely in simple English what the sentences of the grammar consist of

§         know what EBNF added to BNF

o        Dr. Adams’ note: Know 4 elements of a grammar

§         (1. terminals, 2. nonterminals, 3. productions, 4. goals)

 

·         Ch. 4: (Excluded from final)

 

·         Ch. 5: Scope Rules

o        Names

§         difference between keywords and reserved words

§         know which languages we have looked at have reserved words and which do not

§         know what pre-defined terms are

o        Binding 

§         four types of bindings

·         name, value, type, location

§         when does each type of binding occur?

·         run time, load time, compile time, language design time, etc.

§         implicit versus explicit

§         static versus dynamic

§         lifetime of a variable – allocation / deallocation

·         stack-dynamic

·         explicit heap-dynamic

·         implicit heap-dynamic

o        Type checking

§         type compatibility

§         strong typing

o        Scope

§         static

§         dynamic

§         block scope

§         referencing environment

§          

o        Initialization

 

·         Ch. 6: Data Types

o        Primitive data types

o        String types

§         design choices

o        Ordinal types

o        User-defined types

o        Arrays

§         address computation for single-dimensional arrays

§         address computation for two-dimensional arrays stored in row-major order

§         address computation for two-dimensional arrays stored in column-major order

o        Records

§         difference between arrays and records

§         how record fields are referred to

o        Pointers

§         anonymous variables

§         dynamic variables

§         dereferencing

§         problems

·         dangling pointers

·         garbage

 

·         Ch. 7: Expressions & Assignments

o        Arithmetic expressions

§         what do you need to know to evaluate arithmetic expressions

o        Overloaded operators

o        Type conversion

§         implicit

§         explicit

§         what languages allow/prohibit them

§         which languages allow mixed mode expressions

o        Relational & Boolean expressions

§         use of boolean variables in conditional expressions

§         short circuit evaluation

o        Assignment statements

 

 

·         Ch. 8: Statement-level Control Structures

o        Selection statements

§         definition

§         forms

§         required elements

o        Iterative statements

§         definition

§         different types 

·         pre-test/post-test

·         counter controlled / logic controlled

§         forms

§         getting out

o        Unconditional branching

 

·         Ch. 9: Subprograms

o        Subprograms

o        Procedures & functions

§         similarities and differences

§         which languages use which

o        Design issues

o        Parameter passing

§         pass by value

§         pass by reference

§         pass by result

§         pass by value-result

§         pass by name

§         type checking of parameters

§         which languages use which method

§         parameter mode indicators in languages studied

o        Overloaded subprograms

o        Generic subprograms

§         definition

o        Design issues

 

·         Ch. 10: (Excluded from final)

o        except for activation records

§         static links

§         dynamic links

§         return address

§         stack

 

·         Ch. 11: Abstract Data Types

o        definition of an abstract data type

o        Data abstraction

o        Design issues

o        Language examples

§         Ada packages as encapsulating constructs

·         specifications – public interface

·         bodies – provide implementation – may be public or private

o        Dr. Adams’ note: encapsulation

§         the implementation can be hidden for simplification purposes

 

·         Ch. 12:   Object Oriented Programming (excluded from final)

o        except as it’s used in Alice

 

·         Ch. 13: Concurrency (excluded from final)

o        except as it’s used in Alice

 

·         Ch. 14: Exception Handling

o        only basic concepts of exception handling  and exception handling design issues

§         Java exception handling

§         FORTRAN “exception handling”

·          

·         Ch. 15: Functional Programming Languages

o        Mathematical functions

o        LISP

o        Be able to read , determine output (trace), write LISP code

o        Dr. Adams’ note: functional language applications

§         Know that best use is for AI applications; models the real world differently than other language paradigms (recursion and math are more natural in functional languages)

 

·         Ch. 16: Logic Programming Languages

o        Logic programming (624-625)

o        Prolog history (625-626)

o        Prolog basics (626-640)

o        Be able to read , determine output (trace), write Prolog code

o        Prolog deficiencies

o        Prolog applications