200 likes | 409 Views
Topics. Covers everything 1) in slides 2) from the very beginning. Language classification, history, and comparison Programming paradigms Structured programming vs. Unstructured programming Imperative programming vs. Declarative programming
E N D
Topics • Covers everything • 1) in slides • 2) from the very beginning. • Language classification, history, and comparison • Programming paradigms • Structured programming vs. Unstructured programming • Imperative programming vs. Declarative programming • Functional programming (Scheme, lambda calculus, XSLT, Mapreduce) • Logic programming (Prolog, Horn Clause) • Object-oriented programming (polymorphism) • Concepts and programming
Types of questions • Multiple choices; true/false; filling in blanks. • Running results of programs; • Modify programs; • Short explanations; • Others.
BNF was first used to describe the syntax of which language: A. C B. Fortran C. AlgolD. COBOL E. LISP F. None of the above
Which of the following language is not a declarative language? A. Java B. Prolog C. SQL D. Scheme E. None of the above.
Which of the following is the closest to the theoretical foundation of Prolog language? • BNF; • Horn clause; • Lambda calculus; • First order logic; • None of the above.
Which one of the following is not a type of polymorphism • coercion • overloading • overriding • generics • All of them are types of polymorphism
Given the expression ((x. x)x.x)a in lambda calculus. Derive the expression as far as possible using β-reduction. The final result will be: • (x.x)a • x.x • xa • a • none of the above
Given the expression ((x.x)(x.xxx))a in lambda calculus. Derive the expression as far as possible using β-reduction. The final result will be: • xx • x.x • Xa • a • aa • aaa • none above
( x y . x y) ( x . x y) ( a b . a b) ( x z . x z) ( x . x y) ( a b . a b) conversion ( z . ( x . x y) z) ( a b . a b) reduction ( x . x y) ( a b . a b) reduction ( a b . a b) y reduction • ( b . y b) reduction • y reduction
What is the value of (map (lambda (x) (* 2 x)) (1 2 3)) ? • a run-time error • ( ) (the empty list) • (3 4 5) • (2 4 6) • 12 • none of the above • What is the value of (map (lambda (x) (* 2 x)) '(1 2 3)) ? • What is the value of (eval (map (lambda (x) (* 2 x)) '(1 2 3)))?
General form of a rule (Horn Clause) • A :- B1, B2, ...., Bn. • meaning A is true if B1 and B2 and ... Bn are all true • Clause: a disjunction of literals • Horn clause: if it contains at most one positive literal.
True or False? • XPath is a language that is not in XML format. • XPath is part of XSLT. • Both Scheme and Prolog are declarative languages. • In Prolog, changing the order of subgoals will not lead to different results.
edge(a,b). edge(b,c). edge(c,d). edge(d,e). edge(b,e). edge(d,f). path(X,Y):-edge(X,Z), path(Z,Y). path(X,X).
The expressive power of Prolog is stronger than first order logic. • Prolog is mainly for AI applications.
Write the result of running the following Scheme programs. (define (f lst) (if (null? lst) lst (append (f (cdr lst)) (list (car lst))))) (f '(1 2 3)) % reverse? (define (g lst n) ; assumes lst is non-empty and n >= 0 (if (= n 0) (car lst) (g (cdr lst) (- n 1)))) (g '(1 2 3 4) 2) %n-th element
rainy(seattle). rainy(rochester). cold(rochester). snowy(X):-rainy(X), cold(X). p([ ],[ ]). p([H|T],L) :- p(T,Z), append(Z,[H],L). likes(john, mary). likes(dwight, X). likes(john, X):-likes(mary, X). likes(mary, sue). Write the answer(s) of the following queries. If there are more than one answer, write all of them. | ?- snowy(X). | ?- p([1, 2, 3], X). | ?- likes(X, mary).
(define f (lambda (x) (lambda (y) (+ x y)))) (define (g x) ((f x) 3)) (define h (lambda (x) (lambda (y) (y x)))) (define (p f) ((h 2) f)) • a). What is the return value of (g 2)? 5 • b). What is the return value of (p +)? 2
Assuming that the following definitions are executed in this order: (define b ‘(3 14 27)) (define c (cons (car (cdr b)) (list ‘a ‘b ‘c))) • What is the result of typing the following into the Scheme interpreter: • c • (14 a b c) • (car (cdr (cdr c))) • b
Given the following XML document as an input for XSLT programs, answer the following questions: <source> <employee> <firstName>Joe</firstName> <surName>Smith</surName> </employee> <employee> <firstName>Andrew</firstName> <surName>Wang</surName> <supervisor> <employee> <firstName>Steve</firstName> <surName>Miller</surName> </employee> </supervisor> </employee> </source> Write the output of the following XSLT program. You don’t need to write the exact spaces and carriage returns. <xsl:stylesheetxmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="employee/supervisor/employee"> first name is <xsl:value-of select="firstName"/> </xsl:template> </xsl:stylesheet>