Announcements HW12: Transaction server Due today at 2pm

Slides:



Advertisements
Similar presentations
1 Programming Languages (CS 550) Mini Language Interpreter Jeremy R. Johnson.
Advertisements

Semantics Static semantics Dynamic semantics attribute grammars
Intermediate Code Generation
Semantic Analysis Chapter 6. Two Flavors  Static (done during compile time) –C –Ada  Dynamic (done during run time) –LISP –Smalltalk  Optimization.
CS7100 (Prasad)L16-7AG1 Attribute Grammars Attribute Grammar is a Framework for specifying semantics and enables Modular specification.
Recap 1.Programmer enters expression 2.ML checks if expression is “well-typed” Using a precise set of rules, ML tries to find a unique type for the expression.
Overview of Previous Lesson(s) Over View  Front end analyzes a source program and creates an intermediate representation from which the back end generates.
INF 212 ANALYSIS OF PROG. LANGS Type Systems Instructors: Crista Lopes Copyright © Instructors.
CSE 425: Semantics II Implementing Scopes A symbol table is in essence a dictionary –I.e., every name appears in it, with the info known about it –Usually.
Compiler Construction
Denotational Semantics Syntax-directed approach, generalization of attribute grammars: –Define context-free abstract syntax –Specify syntactic categories.
Functional programming: LISP Originally developed for symbolic computing First interactive, interpreted language Dynamic typing: values have types, variables.
1 Type Type system for a programming language = –set of types AND – rules that specify how a typed program is allowed to behave Why? –to generate better.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
Interpretation Environments and Evaluation. CS 354 Spring Translation Stages Lexical analysis (scanning) Parsing –Recognizing –Building parse tree.
CSE 425: Data Types I Data and Data Types Data may be more abstract than their representation –E.g., integer (unbounded) vs. 64-bit int (bounded) A language.
CMSC 330: Organization of Programming Languages Operational Semantics a.k.a. “WTF is Project 4, Part 3?”
Semantic Analysis II Type Checking EECS 483 – Lecture 12 University of Michigan Wednesday, October 18, 2006.
CMSC 330: Organization of Programming Languages Operational Semantics.
1 Announcements Exam 2 graded Rainbow grades: HW1-5, Exam 1-2, Quiz 1-6 Part 1: Problem 1, Problem 2, will go over 2 Part 2: Problem 1, Problem 2 Part.
LECTURE 10 Semantic Analysis. REVIEW So far, we’ve covered the following: Compilation methods: compilation vs. interpretation. The overall compilation.
Operational Semantics of Scheme
Lecture 9 Symbol Table and Attributed Grammars
Functional Programming
Chapter 3 – Describing Syntax
Describing Syntax and Semantics
Programming Languages and Compilers (CS 421)
Names and Attributes Names are a key programming language feature
Context-Sensitive Analysis
A Simple Syntax-Directed Translator
Expressions and Assignment
Chapter 13: Pointers, Classes, Virtual Functions, and Abstract Classes
Information Science and Engineering
7. Inheritance and Polymorphism
CS 326 Programming Languages, Concepts and Implementation
CS 326 Programming Languages, Concepts and Implementation
Representation, Syntax, Paradigms, Types
September 4, 1997 Programming Languages (CS 550) Lecture 6 Summary Operational Semantics of Scheme using Substitution Jeremy R. Johnson TexPoint fonts.
Ch. 4 – Semantic Analysis Errors can arise in syntax, static semantics, dynamic semantics Some PL features are impossible or infeasible to specify in grammar.
Programmazione I a.a. 2017/2018.
Data Types.
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes
CS 3304 Comparative Languages
Chapter 15 Pointers, Dynamic Data, and Reference Types
Final Review In Text: Chapters 1-3, 5-11,
CSE 3302 Programming Languages
Chapter 14: Pointers, Classes, Virtual Functions, and Abstract Classes
Chapter 6 Intermediate-Code Generation
Final Review In Text: Chapters 1-3, 5-10, 12,
Final Review In Text: Chapters 1-3, 5-10, 12,
FP Foundations, Scheme In Text: Chapter 14.
Final Review In Text: Chapters 1-3, 5-10,
Representation, Syntax, Paradigms, Types
Midterm Review In Text: Chapters 1-3, 5-10, 15.
Closure Closure binds a first-class function and a lexical environment together This is a complex topic, so we will build up our understanding of it we.
Procedures App B: SLLGEN 1.
Final Review In Text: Chapters 1-3, 5-12,
Announcements HW4 due today. There is no HW5. (It was merged into HW4.) HW6 (Scheme, Problem 1) out today, due October 23rd We’ll cover 100% of what you.
Announcements Quiz 6 HW7 due Tuesday, October 30
Final Review In Text: Chapters 1-3, 5-16.
Announcements Exam 2 on Friday, November 2nd Topics
Announcements Quiz 5 HW6 due October 23
Compiler Construction
Assignments and Procs w/Params
Final Review In Text: Chapters 1-3, 5-16.
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Midterm Review In Text: Chapters 1-3, 5-11, 15.
COP4020 Programming Languages
COP4020 Programming Languages
Compiler Construction
Presentation transcript:

Announcements HW12: Transaction server Due today at 2pm You can use up to 2 late days, as always Fall 18 CSCI 4430, A Milanova

Announcements Final Exam, December 17, 3-6pm, in DCC 308 and 318 Closed book You are allowed 5 “cheat” pages Practice problems available in Course Materials Check grades in Rainbow grades HW1-11, Quiz1-8, Exam1-2 I have emailed paper critique assignment to all students enrolled in CSCI-6430. It is due Friday, 12/21 at noon by email

Announcements Office hours this week: Ana: Tue 4-5pm, Wednesday 2-4pm Fri 2-4pm (TENTATIVE, may cancel if ill) Sam: Thu 5-7pm Varun: TBD Mike: Fri 12-2pm Fall 18 CSCI 4430, A Milanova

Review

Final Exam is Cumulative Programming Language Syntax (Ch. 2.1-2.3.3) Logic Programming and Prolog (Ch. 12) Scoping (Ch. 3.1-3.3) Programming Language Semantics (Sc. Ch. 4.1-4.3) Functional programming (Ch. 11) Scheme and Haskell, map/fold questions Lambda calculus (Ch. 11 Companion) Data abstraction: Types (Ch. 7, 8) Control abstraction: Parameter Passing (Ch. 9.1-9.3) Object-oriented languages (10.1-10.2) Scala Concurrency (13.1). “What can go wrong?” questions Dynamic languages (Ch. 14 optional) Comparative Programming Languages Fall 18 CSCI 4430, A Milanova

Practice Problems (Quiz 7) type Name = String data Expr = Var Name | Val Bool | And Expr Expr | Or Expr Expr | Not Expr | Let Name Expr Expr Fill in the type signature of find: -- Looks up variable n in binding environment env. -- Returns first binding or throws Exception if no binding of n. -- Ex: find "x" [("x",True),("x",False),("y",True)] returns True find :: _________________________________ find n env = head [ bool | (var,bool) <- env, var == n ] Name -> [(Name,Bool)] -> Bool

Practice Problems (Quiz 7) Fill in the Or and Let arms of eval: -- Purpose: evaluates expression e in binding environment env -- Returns the boolean value of e or throws an Exception -- Ex.: eval (Var "x") [("x",True),("x",False)] returns True eval :: Expr -> [(Name,Bool)] -> Bool eval e env = case e of Var n -> find n env Val b -> b And e1 e2 -> (eval e1 env) && (eval e2 env) Or e1 e2 -> ______________________________ Not e1 -> not (eval e1 env) Let n e1 e2 -> _____________________________ (eval e1 env) || (eval e2 env) eval e2 ((n,(eval e1 env)):env)

Practice Problems (Quiz 8) In programming languages types and type checking Prevent runtime errors Abstract data organization and implementation Document variables and subroutines All of the above Fall 18 CSCI 4430, A Milanova

Practice Problems (Quiz 8) Let A denote all syntactically valid programs. Let S denote all syntactically valid programs that execute without forbidden errors. Let T denote all programs accepted by certain type-safe static type system. Which one best describes the relation between T, S and A?

Quiz 8 Question 2 A: All programs S: All programs that run without forbidden errors T: All programs accepted by a type-safe static type system Fall 18 CSCI 4430, A Milanova

Practice Problems (Quiz 8) Again, let S denote all syntactically valid programs that execute without forbidden errors. Let T’ denote all programs accepted by certain type-unsafe static type system. Fall 18 CSCI 4430, A Milanova

Quiz 8 Question 3 A: All programs S: All programs that run without forbidden errors T’: All programs accepted by a type-unsafe static type system Fall 18 CSCI 4430, A Milanova

Practice Problems (Quiz 8) int w[10]() is an invalid declaration in C. Why? true false In C, functions are third-class values. Thus, we cannot pass a function as argument, return a function as a result, or assign a function value to a variable, or structure. Fall 18 CSCI 4430, A Milanova

Practice Problems (Quiz 8) w in declaration int (*w[10])() is A function An array A pointer Fall 18 CSCI 4430, A Milanova

Practice Problems (Quiz 8) A is a 3-dimensional array of ints: int [0..1,0..1,0..1] A. The elements are ordered in memory as: A[0,0,0],A[1,0,0],A[0,1,0],A[1,1,0],A[0,0,1], A[1,0,1],A[0,1,1],A[1,1,1] This is Column-major order Row-major order Neither Fall 18 CSCI 4430, A Milanova

Practice Problems (Quiz 8) typedef struct { int *i; char c; } huge_record; void const_is_shallow( const huge_record* const r) { int *x = r->i; // or just *(r->i) = 0; *x = 0; } Is this a compile time error? No.

Practice Problems (Quiz 8) By value: 1, 1 By reference: 2, 2 By value-result: 2, 3 By value-result, we assume 2 things. First, addresses (l-values) are recalculated at procedure exit. Second, parameter write-out happens from left to right. By name: 2, 4

Practice Problems (Quiz 9)

Practice Problems (Quiz 9) 10,20,30 What can act.ammount be at the end?

Practice Problems (Quiz 9) Generic Java class MyList is defined as: public class MyList<T extends Number> { // Type parameter T is bounded // MyList uses interface of Number, // e.g., intValue(), doubleValue()… ... } Is MyList<Integer> valid? Is MyList<String> valid? Yes. No. Fall 18 CSCI 4430, A Milanova

Programming Language (PL) Syntax Regular expressions Context-free grammars Derivation, parsing, ambiguity, precedence LL(1) grammars and parsing FIRST, FOLLOW, PREDICT sets, LL(1) parsing table Obstacles to LL(1)-ness SLR(1) grammars and parsing CFSM Conflicts in SLR(1) Fall 18 CSCI 4430, A Milanova

PL Syntax Problems Problem 1. Given grammar Start  S S  TS | [ S ] S | ε T  ( X ) X  TX | [ X ] X | ε Fill in the FIRST and FOLLOW table: FIRST FOLLOW S T X Is this grammar an LL(1) grammar? What language does this grammar generate? The language of properly balanced parentheses and brackets.

PL Syntax Problems Problem 2. Augmented grammar S  E E  E + E E  y Construct the CFSM and add the “reduce by” labels. Is the grammar a SLR(1) grammar? Fall 18 CSCI 4430, A Milanova

Prolog, Scoping Prolog --- expect simple programming questions, as in practice tests and Exam 1 Scoping Static scoping Dynamic scoping with deep and shallow binding Scoping when functions are first-class values Scoping questions on code in Scala and Python Exam 2 Jensen’s device in Scala, etc. Fall 18 CSCI 4430, A Milanova

Programming Language Semantics Attribute grammars Attributes Synthesized vs. inherited Semantic rules S-attributed grammars L-attributed grammars Only terms, no problems that involve L-attributed grammars Fall 18 CSCI 4430, A Milanova

Attribute Grammar Problems Given CFG E -> E + T | T T -> T * F | F F -> ( E ) | id Write an attribute grammar which computes at the root of the tree a count containing the maximum depth to which parentheses are nested in the expression Fall 18 CSCI 4430, A Milanova

Scheme Recursion Higher-order functions Scoping in Scheme Tail recursion Shallow and deep recursion Higher-order functions map/fold problems Scoping in Scheme Fall 18 CSCI 4430, A Milanova

Scheme Problems Problem 1 Consider the following function: (define fun (lambda (n) (if (= n 1) 0 (+ 1 (fun (quotient (+ n 1) 2))) ))) What does this function do? Is it tail-recursive? If not, write a tail recursive version of this function. Ceiling of the log_2(n). Fall 18 CSCI 4430, A Milanova

Scheme Problems Problem 2 Define a function filter which takes a list and returns a list containing all elements that satisfy a given predicate. For example, (filter (lambda (x) (< x 5)) ‘(3 9)) should return (3). The entire body of filter should be one call to foldl. (define (filter p lis) (foldl________________________ Fall 18 CSCI 4430, A Milanova

foldl foldl op lis id id ( r1 r2 r3 … rn ) id1 ( r2 r3 … rn ) id2 ( r3 … rn ) … idn-1 ( rn ) idn Fall 18 CSCI 4430, A Milanova

More Scheme Problems Other problems Problems from sample final Part 1 from practice problem set Fall 18 CSCI 4430, A Milanova

Haskell Problems Write all Scheme problems in Haskell too! Fall 18 CSCI 4430, A Milanova

Lambda Calculus Syntax and semantics Free and bound variables Rules of lambda calculus α-conversion β-reduction Evaluation order Applicative order reduction Normal order reduction Normal forms: WHNF, HNF, NF Fall 18 CSCI 4430, A Milanova

Lambda Calculus Problems Problem 1 (from sample final). Reduce the following term until no more reductions are possible: (x. x x) ((y. y) (z. z)) Problem 2 (from sample final). Suppose we defined the following combinators: T = x.y.x /* T stands for true */ F = x.y.y /* F stands for false */ N = x. (x F T) /* N stands for not */ Show that N (N z) β z where z is either T or F Fall 18 CSCI 4430, A Milanova

Rules of Lambda Calculus: Exercises Use -conversion and/or β-reduction: (x. x) y  ? (x. x) (y. y)  ? (x.y.z. x z (y z)) (u. u) (v. v)  Notation:  denotes that expression on the left reduces to the expression on the right, through a sequence -conversions and β-reductions. Fall 18 CSCI 4430, A Milanova

Normal Forms z. z z is in NF, HNF, or WHNF? (z. z z) (x. x) is in? x.y.z. x z (y (u. u)) is in? (x.y. x) z ((x. z x) (x. z x)) is in? z ((x. z x) (x. z x)) is in? z.(x.y. x) z ((x. z x) (x. z x)) is in? Fall 18 CSCI 4430, A Milanova

Lambda Calculus Problems Other problems Go over problems from HW8 Fall 18 CSCI 4430, A Milanova

Definitions What is a closure, higher-order function, tail recursion? What is normal-order reduction, applicative-order reduction? What does “functions are first-class values” mean? Weak-head normal form (WHNF), head normal form (HNF), normal form Other… Fall 18 CSCI 4430, A Milanova

Types and Type Equivalence Type construction Type equivalence Structural equivalence Name equivalence Loose name equivalence, strict name equivalence Type equivalence in C Fall 18 CSCI 4430, A Milanova

Types Problems Problem 1 (from HW10). Consider the following type declaration in C: double ( *foo(double (*)(double, double[]), double) )() Using appropriate type constructors (pointerTo, array and ), show the type tree for foo Fall 18 CSCI 4430, A Milanova

Types Problems Other sample problems Go over HW10 Problem 6 from sample final Problems from practice problem set Fall 18 CSCI 4430, A Milanova

Definitions What is a type system? What is type safety? What is statically typed language? Dynamically typed language? What is recursive type? What is structural type equivalence? What is name type equivalence Loose name equivalence, strict name equivalence? Fall 18 CSCI 4430, A Milanova

Parameter Passing Mechanisms Call by value Call by reference Call by value-result Call by name Fall 18 CSCI 4430, A Milanova

Parameter Problems Problem 1 (from practice problem set). Write a single program fragment that produces different result under each of the following parameter passing mechanisms Call by value Call by reference Call by value-result Call by name Fall 18 CSCI 4430, A Milanova

Parameter Passing Problems x : int c : array [0..1] of int procedure p(y,z : int) begin y := y+1 print x,z end x := 0; c[0] := 0; c[1] := 1; p(x,c[x]); print x; By value? By reference? By value-result? By value: 0,0, 0 By reference: 1,0, 1 By value-result: 0, 0, 1 By name: 1,1, 1 By name?

Parameter Passing Problems Other problems Problem 5 from sample final Problems from practice problem set Note: All questions on parameter passing assume value model for variables, unless explicitly specified otherwise Fall 18 CSCI 4430, A Milanova

Definitions What is the value model for variables? Give examples of languages that use the value model for variables What is the reference model for variables? Give examples of languages that use the reference model for variables Fall 18 CSCI 4430, A Milanova

Object-oriented Programming Benefits of object-oriented programming What is subtype polymorphism? What is dynamic binding? What is parametric polymorphism? Explicit parametric polymorphism, implicit parametric polymorphism? Fall 18 CSCI 4430, A Milanova

Concurrency Definitions “What can go wrong” questions Message passing vs. shared memory Shared mutable state Atomic action Data race, atomicity violation, deadlock Memory consistency models Actor model “What can go wrong” questions Fall 18 CSCI 4430, A Milanova

Concurrency Problems Other problems Part 6 from practice problem set Examples we did in class Fall 18 CSCI 4430, A Milanova

Other Topics Comparative programming languages Problem 7 Fall 18 CSCI 4430, A Milanova

THANK YOU! We started at about 330 we are now at 311 Thanks to Barb Cutler and all of you who have contributed to Submitty Thanks to Sam, Mike, Varun, Bill, Jordan and Kasra Fall 18 CSCI 4430, A Milanova