CmpE 260 Principles of Programming Languages 2020 Spring

Assistants: 

Course Schedule: 

TWW 412 BM A2

Course Program: 

This course is intended to introduce the student to the main paradigms of computation, languages representative of these paradigms, techniques of implementing various programming language constructs, as well as basic concepts relating to the specification of programming languages.

 

Syntax and semantics of programming languages, basic constructs that are common to all languages (control structures, subprograms, etc.), and basic programming paradigms (functional, logic, etc.) will be covered. The intent of the course is not teaching a specific programming language; instead, using several languages to exemplify the main concepts and constructs.

 

Course Content:

 

Introduction (Reasons for studying PLs, Evaluation criteria and related factors)

Syntax (Recognizers, Generators, Grammar types, Context-Free Grammar (CFG), Backus-Naur Form (BNF), Relationship between CFG and BNF, Derivations, Parse tree, Ambiguity, Extended BNF (EBNF), Syntax graph)

Static Semantics (Attribute grammar)

Semantics (Operational semantics, Denotational semantics)

Logic Programming (Declarative languages, Predicate calculus, Clausal form, Resolution, Prolog programming language, Facts and rules, Backtracking, Lists, Limitations of Prolog)

 

Functional Programming (Lambda notation, Referential transparency, Functional forms, Lisp and Scheme programming languages, S-expression, Define and Eval functions)

 

Binding (Binding time, Early/Late binding, Static/Dynamic binding, Name-declaration/Declaration-reference/Reference-value binding, Blocks)

 

Lifetime

Referencing Environment (Visibility, Local/Nonlocal/Global variables)

Scope (Scope rules, Referencing operations, Static/Dynamic scoping)

Subprograms (Protocol and parameter profile (signature), Formal/Actual parameters, Positional/Keyword parameters, Default parameters, Feature interaction, Subprogram overloading, Data exchange between subprograms, Parameter passing, Aliasing, Eager/Normal-order/Lazy evaluation)

 

Subprogram Implementation (Activation record, Static/Dynamic chain, Static chain method, Display method,

Deap/Shallow access, Subprograms as parameters, Labels as parameters, Generic subprograms,

Separate/Independent compilation)

Control Structures (Selection statements, Two-way/Multiple selectors, Iterative statements, Guarded commands)

 

 

 

Textbook: 

Concepts of Programming Languages

Reference Books: 

  • Comparative Programming Languages, R.G.Clark, Addison Wesley Pub.Co., 2000
  • Concepts in Programming Languages, John C. C. Mitchell, Krzysztof Apt, Cambridge University Press, 2002
  • Foundations of Programming Languages, Seyed H. H. Roosta, Course Technology, 2002
  • Programming Language Design Concepts, David A. Watt, William Findlay, Wiley, John & Sons, 2004
  • Programming Language Pragmatics, Michael L. Scott, Elsevier, 2005
  • Programming Languages and Methodologies, Robert J. Schalkoff, Jones & Bartlett Pub., 2007
  • Programming Languages, Design and Implementation, T.W.Pratt, M.V.Zelkowitz, Prentice Hall, 4th ed., 2001
  • Programming Languages: Principles and Paradigms, Allen B. Tucker, Robert Noonan, McGraw-Hill, 200

Grading: 

Catalog grading method is used.

  • 2 Projects 40% (2 * 20%)
  • Midterm 25%
  • Final 35%

Notes: 

  • The midterm and final examinations will be “closed books and notes”.
  • You can follow the announcements about the course from Moodle and Piazza.
  • You can obtain the text book from the bookstore and some of the reference books from the instructor.
  • Attendance for both the midterm exam and the final exam, and submitting both projects are obligatory. Otherwise, you will fail the course, regardless of the grades obtained in other parts of the course.
  • Attendance for lectures is not obligatory. But you are responsible from lectures’ contents.

Contact us

Department of Computer Engineering, Boğaziçi University,
34342 Bebek, Istanbul, Turkey

  • Phone: +90 212 359 45 23/24
  • Fax: +90 212 2872461
 

Connect with us

We're on Social Networks. Follow us & get in touch.