CS 7100 Advanced Programming Languages

  • Instructor: T. K. Prasad
  • Phone No.: (937)-775-5109
  • Email: t.k.prasad@wright.edu
  • Home Page: http://knoesis.wright.edu/tkprasad
  • Semester: Fall, 2018
  • Class Hrs: TTh, 9:30am-10:50am,  339 RC 
  • Instructor Office Hrs: TTh, 11:15am-12:15pm (395 Joshi) (or by appointment)
  • Grader:  N/A
  • TA / Office Hours / Location  N/A

  • Course Objectives

    To provide a solid foundation for studying advanced topics in Programming Language Specification and Design.

    Specifically, the student learning outcomes include:

    Prerequisites CS 3180/5180 Comparative Languages

    Course Description

    This course introduces standard concepts related to the specification and design of high-level programming languages. It discusses different programming paradigms, algebraic specification and implementation of data types, and develops interpreters in Racket (Scheme) for specifying (operationally) various programming language features/constructs (spanning simple expression language to class-based object-oriented language). It also introduces attribute grammar framework that is convenient for automatic translation and axiomatic semantics formalism that assists in program verification. The programming assignments will be coded using Racket IDE.

    Course Load

    The course load includes programming assignments, a midterm exam, and a final exam.

    In view of recent experiences with violations of academic integrity and plagiarism, I am instituting the following policy for this course.
    (1) Programming assignments will  not be graded. You may work in teams of two and share your work with each other to improve your understanding of the material. Do not plagiarize from online sources. 
    (2) The exams will be closed notes and closed book. No cheat sheets will be allowed in the exam. Instead, the exam will provide helpful information and code snippets from the text book or course notes that are deemed necessary for answering questions.
    (3) The students are prohibited from using any computer (e.g., laptop), calculator, or cell phone during the exam. These devices must be turned off and kept away during exams. Violation of this policy will result in failing the class. If you are expecting an emergency call, redirect them to call the Department at 937-775-5131, to reach you.
    (4) Distance Learning section students should take both the midterm exam and the final exam in person. In all likelihood, the exams for all the sections will be conducted together and everyone will be graded on the same scale.  
    (6) Any academic impropriety during an exam (which includes copying from other students, or accessing resources using electronic devices which are prohibited, and passing it off as your own work) will have a minimum penalty of an 'F' grade, plus additional disciplinary action for unethical behavior. See http://www.wright.edu/students/judicial/integrity.html for details.

    Tentatively, both the midterm exam and the final exam are expected to be weighted equally for determining the final grade. If this policy is modified for any reason, you will be informed about it in the class.


    1. Friedman, Wand and Haynes: Essentials of Programming Languages. 2nd (preferred) or 3rd Edition. MIT Press, 2001. ISBN 0-262-06217-8  (code.zip)
    2. R. Kent Dybvig: The Scheme Programming Language, 4th Edition. The MIT Press, 2009.
    1. Guttag, J.V., "Abstract Data Types and the Development of Data Structures,"  CACM, vol. 20, No. 6, June 1977, pp. 396-404.
    2. Chapter 1 of Guttag, J. V., et al, Larch: Languages and Tools for Formal Specification, Springer-Verlag, NY, 1993.
    3. H. Abelson and G. J. Sussman, Structure and Interpretation of Computer Programs, 2nd Ed., MIT Press, 1996.
    4. M. Felleisen, R. B. Findler, M. Flatt, and S. Krishnamurthi, How to Design Programs, 2nd Ed., MIT Press, 2018.
    5. Scheme : Language Reference Manual
    6. The Teaching About Programming Languages Project
    7. Racket Download Site (http://racket-lang.org/)


    The final letter grade will be determined solely based on the cumulative score on the midterm exam (weighted 50%) and the final exam (weighted 50%) using the following scale: A[90-100], B[80-90), C[70-80), D[60-70), and F[0-60). However, I reserve the right to adjust the scale somewhat to utilize the gaps in the distribution.

    Class Schedule and Syllabus

    Topics with links to Lecture Notes Addl. Readings (EOPL-2nd ed)
    Class 1 Evolution of Programming Languages Turing Awards
    Class 2 Why specify?

    Class 3
    Scheme Metalanguage; Recursive Definitions  Chap 1.1, 1.2
    Class 4
    Abstract Data Types: Algebraic Specs Chap 2
    Class 5
    Class 6
    Programming Paradigms
    Class 7
    Abstract Syntax and its Representation Chap 2
    Class 8
    Interpreter for a Simple Expression Language Chap 3
    Class 9
    User-Defined Functions; Scoping Chap 1.3, 3
    Class 10 Implementing Recursion Chap 3
    Class 11
    Closures and Streams
    Class 12
    Midterm Exam  ( Oct 11 : 9:30am - 10:50am))
    Class 13 Imperative Programming : Assignment Chap 3
    Class 14 Interpreter for an Object-Oriented Language Chap 5
    Class 15 (oopl.ps)  (oopl.pdf)  
    Class 16 Introduction to Attribute Grammars
    Class 17 (continue)
    Class 18 Introduction to Axiomatic Semantics
    Class 20

    Case Study: Specification of  COOL

    Class 21

    Class 22

    Case Studies: Specification of  Java

    (Old Course)
    Class 23

    Class 24

    Case Study: Design of multi-paradigm languages 

    Class 25

      Final Exam  (Dec 11, 8am-10am)

    Assignments (Fall 2018)

    1. Assignment 1 . (asg1.ppt)

    2. Assignment 2 .

    3. Assignment 3 

    Lecture videos will be posted on Pilot.
    Old Exams  (Spring 2011,  Spring 2014, Fall 2016)