CMSC 331 Final Exam Section 0201 December 18, 2000

Similar documents
CMSC 331 Final Exam Section 0201 December 18, 2000

UMBC CMSC 331 Final Exam Section 0101 December 17, 2002

UMBC CMSC 331 Final Exam

UMBC CMSC 331 Final Exam

NOTE: Answer ANY FOUR of the following 6 sections:

Chapter 5 Names, Binding, Type Checking and Scopes

R13 SET Discuss how producer-consumer problem and Dining philosopher s problem are solved using concurrency in ADA.

Functional Programming. Pure Functional Programming

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

CS 415 Midterm Exam Spring 2002

1. true / false By a compiler we mean a program that translates to code that will run natively on some machine.

Programming Languages, Summary CSC419; Odelia Schwartz

MIDTERM EXAMINATION - CS130 - Spring 2005

CS 415 Midterm Exam Spring SOLUTION

Fifth Generation CS 4100 LISP. What do we need? Example LISP Program 11/13/13. Chapter 9: List Processing: LISP. Central Idea: Function Application

Midterm 2 Solutions Many acceptable answers; one was the following: (defparameter g1

Heap storage. Dynamic allocation and stacks are generally incompatible.

CS 314 Principles of Programming Languages

Chapter 5. Names, Bindings, and Scopes

CS 415 Midterm Exam Fall 2003

CPSC 3740 Programming Languages University of Lethbridge. Data Types

CSC 533: Organization of Programming Languages. Spring 2005

SE352b: Roadmap. SE352b Software Engineering Design Tools. W3: Programming Paradigms

Imperative languages

Functional Languages. CSE 307 Principles of Programming Languages Stony Brook University

Functional Programming. Big Picture. Design of Programming Languages

Test 1 Summer 2014 Multiple Choice. Write your answer to the LEFT of each problem. 5 points each 1. Preprocessor macros are associated with: A. C B.

Lisp Basic Example Test Questions

11. a b c d e. 12. a b c d e. 13. a b c d e. 14. a b c d e. 15. a b c d e

Principles of Programming Languages Topic: Scope and Memory Professor Louis Steinberg Fall 2004

Type Systems, Type Inference, and Polymorphism

Putting the fun in functional programming

Concepts Introduced in Chapter 7

Programming Languages Third Edition. Chapter 7 Basic Semantics

Final-Term Papers Solved MCQS with Reference

COP4020 Programming Languages. Functional Programming Prof. Robert van Engelen

Question No: 1 ( Marks: 1 ) - Please choose one One difference LISP and PROLOG is. AI Puzzle Game All f the given

Types and Type Inference

Chapter 5 Names, Bindings, Type Checking, and Scopes

Modern Programming Languages. Lecture LISP Programming Language An Introduction

Below are example solutions for each of the questions. These are not the only possible answers, but they are the most common ones.

FP Foundations, Scheme

Lisp. Versions of LISP

Control in Sequential Languages

CS 330 Lecture 18. Symbol table. C scope rules. Declarations. Chapter 5 Louden Outline

Names, Bindings, Scopes

Imperative Programming

COP4020 Spring 2011 Midterm Exam


Typed Scheme: Scheme with Static Types

Informatica 3 Syntax and Semantics

Functional Programming Languages (FPL)

Types and Type Inference

Functional programming with Common Lisp

CS 3360 Design and Implementation of Programming Languages. Exam 1

Programmiersprachen (Programming Languages)

CS 242. Fundamentals. Reading: See last slide

Lecture Overview. [Scott, chapter 7] [Sebesta, chapter 6]

CSE413 Midterm. Question Max Points Total 100

CSCI 3155: Principles of Programming Languages Exam preparation #1 2007

Chapter 5 Names, Bindings, Type Checking, and Scopes

St. MARTIN S ENGINEERING COLLEGE Dhulapally, Secunderabad

Functional Programming. Pure Functional Languages

Design Issues. Subroutines and Control Abstraction. Subroutines and Control Abstraction. CSC 4101: Programming Languages 1. Textbook, Chapter 8

Functional Programming. Pure Functional Languages

CSE 413 Languages & Implementation. Hal Perkins Winter 2019 Structs, Implementing Languages (credits: Dan Grossman, CSE 341)

9/7/17. Outline. Name, Scope and Binding. Names. Introduction. Names (continued) Names (continued) In Text: Chapter 5

G Programming Languages - Fall 2012

INSTITUTE OF AERONAUTICAL ENGINEERING

CPS 506 Comparative Programming Languages. Programming Language

Documentation for LISP in BASIC

Storage. Outline. Variables and Updating. Composite Variables. Storables Lifetime : Programming Languages. Course slides - Storage

SOFTWARE ARCHITECTURE 6. LISP

Scheme. Functional Programming. Lambda Calculus. CSC 4101: Programming Languages 1. Textbook, Sections , 13.7

CPS 506 Comparative Programming Languages. Programming Language Paradigm

Lecture 7: Type Systems and Symbol Tables. CS 540 George Mason University

COP4020 Programming Assignment 1 - Spring 2011

Notes on Higher Order Programming in Scheme. by Alexander Stepanov

Tail Calls. CMSC 330: Organization of Programming Languages. Tail Recursion. Tail Recursion (cont d) Names and Binding. Tail Recursion (cont d)

Functional Languages. Hwansoo Han

UNIVERSITY OF TORONTO AT MISSISSAUGA April 2006 Examination CSC 324H5 S Instructor: Richard Krueger Duration 3 hours No Aids Allowed

Data Types The ML Type System

COMP 181. Agenda. Midterm topics. Today: type checking. Purpose of types. Type errors. Type checking

Chapter 15. Functional Programming Languages

Equivalent Notations. Higher-Order Functions. (define (f x y) ( body )) = (define f (lambda (x y) ) ) Anonymous Functions.

Chapter 5. Variables. Topics. Imperative Paradigm. Von Neumann Architecture

Project 2: Scheme Interpreter

(Refer Slide Time: 01:01)

Principles of Programming Languages COMP251: Functional Programming in Scheme (and LISP)

MIDTERM EXAM (Solutions)

Introduction Primitive Data Types Character String Types User-Defined Ordinal Types Array Types. Record Types. Pointer and Reference Types

6.184 Lecture 4. Interpretation. Tweaked by Ben Vandiver Compiled by Mike Phillips Original material by Eric Grimson

11/6/17. Functional programming. FP Foundations, Scheme (2) LISP Data Types. LISP Data Types. LISP Data Types. Scheme. LISP: John McCarthy 1958 MIT

Data Types. (with Examples In Haskell) COMP 524: Programming Languages Srinivas Krishnan March 22, 2011

Functional Programming

TYPES, VALUES AND DECLARATIONS

Type Bindings. Static Type Binding

Fundamentals of Artificial Intelligence COMP221: Functional Programming in Scheme (and LISP)

The results for a few specific cases below are indicated. allequal ([1,1,1,1]) should return true allequal ([1,1,2,1]) should return false

Scheme: Data. CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Monday, April 3, Glenn G.

Transcription:

CMSC 331 Final Exam Section 0201 December 18, 2000 Name: nswers Student ID#: You will have two hours to complete this closed book exam. We reserve the right to assign partial credit, and to deduct points for answers that are needlessly wordy. 0. Logic (0) The multiple-choice question below has only one correct answer. Which one is correct? (a) nswer (a) or (b) (b) nswer (b) or (c) (c) nswer (c) 1. General multiple-choice questions (20) 1. Which kind of variable has the longest lifetime? (a) n implicitly heap-dynamic variable (b) static variable (c) stack-dynamic variable (d) flexible variable (e) fixed-length variable (f) lexically scoped variable 2. Which of the following is true of aliases? (a) n alias changes the name of something (b) n alias protects an existing value from being overwritten (c) n alias provides an alternative way of accessing something (d) n alias allows type inference (e) liases should be avoided if at all possible (f) liases support name equivalence of record types 0 00/ 1 20/ 2 10/ 3 15/ 4 40/ 5 10/ 6 10/ 7 20/ 8 20/ 9 10/ 10 15/ 11 15/ 12 10/ 13 10/ 14 15/ 15 20/ * 240/ 3. What happens in an assignment such as ``x := y''? (a) The address of x is modified to be the address of y (b) The address of y is modified to be the address of x (c) The object bound to y is copied and bound to x, and any previous binding of x to an object is lost (d) x and y become aliases 4. Which of the following is the strictest, as applied to record types? (a) name equivalence (b) structural equivalence (c) subtype agreement (d) assignment compatibility 5. Which of the following pairs of languages have type inferencing? (a) ML and Haskell (b) PL and SNOBOL (c) Fortran and PL/I (d) LISP and Prolog

6. Which of the following is true of l -values and r-vlaues (a) n l-value is a logical value, and an r -value is a real value. (b) l-values are always to the left of r-values (c) n l-value refers to a variable s location while an r-value to its current value (d) L-values are local and r -values are relative. 7. Which of the following situations will create a ``dangling pointer''? (a) setting an arbitrary pointer variable to ``null'' (b) setting the CDR part of a CONS cell somewhere in the middle of a list to ``null'' (c) freeing a block to which there still exists a live pointer (d) freeing a block which still contains pointers to other existing blocks 8. In Pascal, one problem with union types is that (a) Sets are implemented as arrays and are thus inefficient. (b) Every union type has to be defined as an enumeration type. (c) Pascal does not require a type discriminator field, so that it is possible to violate type safety. (d) Type inferencing is not supported across union types. 9. Which of these languages does not have a primitive data type for a character string: (a) Common Lisp (b) Pascal (c) da (d) Java 10. What distinguishes a purely ``functional'' programming language from an ``imperative'' one? (a) There are no variables and hence no assignment operation in a purely functional language (b) purely functional language lacks the ``go to'' statement, but an imperative language always has such a command (c) ll subprograms must be declared with the keyword function in a purely functiona l language (d) There is no real difference, only a difference in the recommended coding style 2. dvantages and disadvantages of virtual machines? (10) Java and other programming languages have taken the approach of executing on a virtual machine, as opposed to compiling to native machine code. Explain one advantage and one disadvantage of the virtual machine approach. Some advantages are: greater portability, greater security and resource control by building restrictions into the VM, more uniform execution environment (e.g., WT provides a single look and feel), bytecode programs will be smaller than machine language programs, so transmitting them across a network is quicker. Some disadvantages are: less efficient execution than in compiling to machine code, the uniform execution environment is likely to be the least common denominator. 3. Relating syntax concepts (15) Briefly explain the relationships between the following syntax terms: parse tree, derivation, grammar, language, and sentence. language consists of a set of legal sentences. grammar specifies which sentences care legal and thus in the language. Grammars also associate each sentence with one or more derivations, each of which corresponds to a parse tree. parse tree is a tree structure which shows one of the structure assigned to the sentence by the grammar.

4. Java true/false (40) 1. In Java array indices start at 0. True 2. Java class cannot contain both class and instance methods. False 3. To allow Java's automatic garbage collection mechanism reclaim the memory used by an object, one can assign the keyword null to an object reference. True 4. Since arrays are objects in Java they inherit all the characteristics of java.lang.object. true 5. In Java an array's length can chan ge at any time. False 6. In Java, a string is not a primitive data type but rather is defined as an object. true 7. There are three categories of variables in Java: class variables, instance variables, and local variables. True 8. Java array declared for an object type is really an array of object references, so creating the array, with new, simply creates empty references with the elements of the array are all set to null. true 9. Java s interface mechanism provides all of the benefits of multiple inheritance but do es so more efficiently than C++. false 10. Java s WT gives the programmer more control over the look and feel of a graphical user interface than does SWING. false 11. ll Java objects are descended from Java.Object. true 12. t most one public class may be defined by any one Java source file. true 13. If a public class appears in a Java source file, the name of the file and the name of the class must be the same. True 14. The value of a static variable cannot be changed once it has been initialized. false 15. Java class can have only one superclass but can extend any positive number of interfaces. true 16. ll objects of the same class share the same fields (if you change the field associated with one object all objects will see the same change.) False 17. System is a primitive data type in Java as shown by the use of System.out.println to output information. False 18. If a member is declared to be private, it can still be accessed by any class defined in the same package. False 19. The model-view-controller pattern most of the graphical ro utines are in the model. false 20. Java class cannot contain both class and instance methods. False 5. Evaluating Java (10) What gets printed by the following Java code fragment? int i = 3, j = 3, k; k = ++i + ++j + 2 ; System.out.println( i + " " + j + " " + k ); i = j = 3; k = i++ + j++ + 2 ; System.out.println( i + " " + j + " " + k ); i = 2; j=3 ;k = 4; k *= i - j; System.out.println( k ); 4 4 10 4 4 8-4 6. Short Java answers (10)

1. Suppose that takefinal is a method of a class named Stud ent. The takefinal method takes no arguments. Write an example of calling the method takefinal for an instance of Student named astudent. astudent.takefinal(); 2. What happens when an instance of an object is no longer referenced by any variable, array entry, or other collection of objects in Java? It gets garbage collected. 3. In declaration public static final int SIZE = 100; which of the modifiers makes SIZE a class variable? Static 4. In Java, new classes can be defined by extending existing classes. This is an example of: (a) encapsulation, (b) interface (c) polymorphism (d) inheritance (e) unification (f) objectification. (d) inheritance 5. Consider the following fragment of code: int field1 = 100; int field2 = 200; field2 = field1; field1 = filed2; // line 4 When the code has executed through the line with the comment "line 4", what are the values of field1 and field2? 100 and 100 7. Lisp true/false (20) 1. The Lisp function EQ is a test of pointers. True 2. In Lisp NIL is considered both an atom and a lis t. True 3. If L is bound to a non-nil list, then (eq L (reverse (reverse L))) always evaluates to T. false 4. In Lisp, the integer 0 represents logical false and any other integer represents logical true. False 5. The only way to introduce new user-defined special forms is by using macros. True 6. The lambda special form can be used to define anonymous functions in Lisp. True 7. special form is a function that does not evaluate all of its arguments or evaluates them in a non - standard way. True 8. Lisp s macro facilit y makes it easy to extend the language. True. 9. Every s-expression in Lisp returns a value when evaluated. True 10. Lisp does not allow you to assign a variable more than once. False 8. Lisp lists (20) fter evaluating (setq alpha '(1 2 3) beta '(a b c) gamma '(do re mi) empty '()), what would be the value of each of the following Lisp expressions. 1. (cons alpha beta) ((1 2 3) a b c) 2. (cons (car alpha) beta) (1 a b c) 3. (cons (car gamma) (cons (car beta) (cons (car alpha) empty))) (do a 1) 4. (cons (car alpha) (cons (cadr beta) (cddr gamma))) (1 b mi) 5. (cons empty empty) (nil) Using only the bindings alpha, beta, gamma, and empty as well as the procedures cons, car, and cdr, construct Lisp expressions with the following values. 6. ((a) (b) (c)) (cons (cons (car beta) empty) (cons (cons (car (cdr beta)) empty) (cons (car (cdr (cdr beta))) empty) empty))) 7. (3 re c) (cons (car (cdr (cdr alpha))) (cons (car (cdr gamma)) (cdr (cdr beta)))) 8. ((1 2 3) (a b c) (do re mi)) (cons alpha (cons beta (cons gamma empty)))

9. ((2 3) (b c) (re mi)) (cons (cdr alpha) (cons (cdr beta) (cons (cdr gamma) empty))) 10. (3 2 1) (cons (car (cdr (cdr alpha))) (cons (car (cdr alpha)) (cons (car alpha) empth))) 9. More Lisp lists (10) Complete the following table to show how various Lisp lists would be represented using the standard box - and-pointer diagram ming technique. We ve done the first one as an example and left the next five for you. ( B) (() ) B (()) ( (B) ((C))) B ( ) C ( (B (C))) B C 10. Lisp counttoms function (15) Write a recursive Lisp function counttoms that takes a list and returns the number on non -nil atoms in the list. For example: > (counttoms ((a b)((c)) (((e))) e)) 5 > (counttoms (((a)))) 1 > (counttoms ()) 0 > (counttoms (a nil (b) (c nil nil)((nil)))) 3 (defun counttoms (l) (cond ((null l) 0) ((atom l) 1)

11. Lisp butlast function (15) (t (+ (counttoms (car l)) (countatoms (cdr l)))))) The lisp function butlast takes a list L and returns a new list with the same elements of L except for the last one. For example: > (butlast '(a b c d)) (a b c) > (butlast '((a b) (c d))) ((a b)) > (butlast '(a)) nil > (butlast nil) nil Write two version of butlast: (a) one which only uses the function cond, if, car, cdr, and cons. nd (b) one that does not use recursion and uses the built -in lisp function reverse. (defun butlast (l) (cond ((null l) nil) ((null (cdr l)) nil) (t (cons (car l) (butlast (cdr l)))))) (defun butlast (l) (reverse (cdr (reverse l)))) 12. Unification in Prolog (10) For each of the following pairs of Prolog terms, say whether or not the unification would succeed and, if it does, the variable bindings that would result.. ssume that the same variable na me in two different terms in a given pair represents the same variable. We ve done the first one for you as an example. TERM1 TERM2 Unify? Bindings foo(bar,x) foo(y,mumble) yes Y=bar, X=mumble X loves(john,mary). Yes X=loves(john,mary) p(x, q(y), r(z)) p(r(a), q(x), r(b)) Yes X=Y=r(a), Z=b loves(john, X) loves(y,y) Yes X=Y=john and(father(p1, P2), and(father(x, john), Yes X=P1=P2=P3=john brother(p1, P3)) brother(john, john)) foo(x) X Yes X=f(f(f(f(f( [X, Y Z] [a, b, c, d, e, f, g] Yes X=a,Y=b,Z=[c,d,e,f,g] [ ] X yes X=[ ] [X, Y] [a, b Z] Yes X=a, Y=b, Z=[ ] + B - C '+'(1, '-'(2, 3)) Yes =1, B=2, C=3 2+3 3+2 No

13. Prolog predicate hasduplicates (10) Write a predicate hasduplicates/1 that take s a single argument that is a list returns true if the list contains multiple occurrences of some top-level element. You can assume that the predicate is always called with an instantiated argument. The hasduplicates/1 predicate should work like this:?- hasduplicates([a,b,a,c]). yes.?- hasduplicates([]). No.?- hasduplicates([a,b,[a],c]). No. Hint: try defining and using the auxiliary predicate isin/2 that is a variation of member/2: isin(x,[x _]). isin(x,[_ Tail]) : - isin(x,tail). hasduplicates([head Tail]) :- isin(head,tail). hasduplicates(([_ Tail]) :- hasduplicates(tail). isin(x,[x _]). isin(x,[_ Tail]) :- isin(x,tail). 14. Prolog mystery predicate (15) ssuming append has the usual definition, consider the following mystery predicate: p([ ],[ ]). p([ B], C) :- p(b, D), append(d, [], C). (a) [10] Describe what would happen for each of the following queries in terms of the kinds of errors that would result or the solutions(s) that would be found. If more than one solution would be found, characterize them all.?? p([a,b,c,d,e],x).?? If the first arg is instantiated and the second a variable X, then X is the reverse of the first argument. There is only one solution?- p([a,b,c,d,e],x). X = [e,d,c,b,a]? ; no?? p(x,[a,b,c,d,e])?? if the first argument is an uninstantiated variable and the second an instantiated list, then the first solution found is one in which the first argument is unified with the reverse of the second. n attempt to find a second solution does not terminate.?- p(x,[a,b,c,d,e]). X = [e,d,c,b,a]? ; Prolog interruption (h for help)? a {Execution aborted}?? p(x,y).?? If both arguments are uninstantiated variables, then there are infinitely many solutions found, corresponding to pairs of lists of increasing lengths (0, 1, 2, ) in which one is the reverse of the other.?- p(x,y). X = [], Y = []? ; X = [_],

Y = [_]? ; X = [_,_B], Y = [_B,_]? ; X = [_,_B,_C], Y = [_C,_B,_]? ; X = [_,_B,_C,_D], Y = [_D,_C,_B,_]? ; X = [_,_B,_C,_D,_E], Y = [_E,_D,_C,_B,_]? (b) [5] Describe what this predicate does in a simple sentence. P(X,Y) is true if X and Y are lists and X is the reverse of Y. The first argument should be instantiated to insure that it terminated. 15. Prolog true/false (20) (a) Prolog is a strongly typed language. false (b) The scope of a variable in Prolog is a single clause (i.e., a fact or rule) or a single query. True (c) Unification is transitive (i.e., assuming that t1, t2 and t3 are arbitrary Prolog terms, if t1 unifies with t2 and t2 unifies with t3 then t1 must unify with t3. false (d) The lack of explicit memory allocation and deallocation functions in Prolog is evidence that it performs automatic memory management, e.g. using garbage collection. true (e) One of Prolog strengths is its use of fuzzy logic. False (f) Terms are to Prolog as s-expressions are to Lisp. true (g) The empty list in Prolog is represented by the atomic symbol NIL. False (h) variable in Prolog must start with either an upper -case letter or an underscore (_). true (i) ll local variables must be declared before th ey are used in Prolog. False (j) Prolog variable can only be assigned to a value once. true