CS 7100 Advanced Programming Languages


  • Instructor: T. K. Prasad
  • Phone No.: (937)-775-5109
  • Email: t.k.prasad@wright.edu
  • Home Page: http://cecs.wright.edu/~tkprasad
  • Semester: OFFERING-SPECIFIC
  • Class Hrs / Location:  OFFERING-SPECIFIC

  • (WebEx recorded lectures will be available via CS7100 course web page on Pilot. 
  • The two tests will be conducted  in-person for uniformity and fairness.)

  • Office Hrs / Location:  OFFERING-SPECIFIC/ 395 Joshi Res.Ctr. (and if necessary by appointment)
  • Instructor/Class Communication: Prefer email (for private issues) and discord channel (for CS7100 class-related issues). 
  • By Email (t.k.prasad@wright.edu) / Discord (https://discord.gg/pMUMzTt)
  • GTA/[Grader]: OFFERING-SPECIFIC

  • Course Objectives

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

    Specifically, the student learning outcomes include:


    Prerequisite CS 3180/5180 Comparative Languages


    Course Description

    This course introduces standard concepts and constructs related to the specification and design of high-level programming languages. It discusses different programming paradigms, algebraic specification and implementation of data types, abstract syntax trees, 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 and two tests. All the recorded lectures will be available in WebEx/Panopto from course webpage on Pilot and slide decks for the lectures from this publically available course webpage (https://cecs.wright.edu/~tkprasad/courses/cs7100/cs7100.html).  Note that sometimes the lectures and slide decks in Powerpoint  are organized  around  topics and may not clearly  map to  fixed lecture time periods. But they will  cover all the requisite content.

    Assignment and Exams Policy

    (1) Programming assignments will NOT be scored/graded. Team work is allowed on the assignments and in person discussions are encouraged. While team work is not mandatory to allow flexibility, forming teams of 2 to 3 students to learn together and collaborate on  joint-assignments is strongly encouraged. This sharing is to improve your understanding of the material. Plagiarising from online resources or other teams or from previous years  is prohibited for your own good.
    (2) The tests will be conducted in-class and every registered student MUST take the tests in person. The tests will be closed notes and closed book. You will not be permitted to use any electronic devices, including calculators, laptops, and phones, during the test. Each test will provide helpful information and code snippets from the text book or course notes that are deemed necessary for answering the questions. The format of the test will be communicated to you before the test and they will not be comprehensive.
    (3) The entire class is expected to take the test simulaneously and multiple versions of the questions (of comparable coverage and difficulty) can be administered depending on the class size. 
    (Exceptions may be made only under extraordinary circumstances such as a documented medical need or family emergency.) 
    (4) Any academic impropriety during the test  (which includes copying from or communicating with other students, or accessing web resources) will have a minimum penalty of 'F' grade, plus additional disciplinary action for unethical behavior. See http://www.wright.edu/students/judicial/integrity.html for details. 

    (5) While we expect constant exchanges on Course-Related Discord Channel and use of emails for personal matters, the course instructor and/or GTA will be available to the students on WebEx or in person for additional meetings as needed, through appointments.  The students will be notified in advance of any planned brief absences of the instructor due to conference travel, or research panel meetings, or for personal reasons, and every effort will be made to minimize disruption. 


    Reference

    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/)
    8. K. Thirunarayan, G. Kniesel, and H. Hampapuram, Simulating Multiple Inheritance and Generics in Java, In : Computer Languages, Vol. 25(4), pp. 189-210, 2001.

    Grading

    The final letter grade are normally determined based on the cumulative score on the tests: first test (weighted 40%) and second test  (weighted 60%) 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 to utilize the gaps in the distribution for a small class. For a large class such as yours, I will describe my approach to fitting a Gaussian using mean and standard deviation, in detail, in a separate email. 

    Applicable University Policy on Generative AI

    You are discouraged from using generative AI tools (such as ChatGPT and Co-Pilots)  for this course to improve your understanding of the material and experimenting with code, rather than stare at a prepared solution. (Note that the output generated by these tools can be invalid (due to hallucination) and you will not be able to detect it without first knowing what the "correct" answer is, which is what this course is trying to introduce.)


    Tentative Syllabus, Class Schedule, and Linked Lecture Slide Decks


    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
    (continue)
    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
    Test 1 OFFERING-SPECIFIC
    (Last day to drop course with a W grade: October 31, Friday)
      
    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
    Class19
    (continue)
    Class 20

    Case Study: Specification of  COOL


    Class 21
    (continue)

    Class 22

    Case Studies: Specification of  Java

    (Old Course)
    Class 23
    (continue)

    Class 24

    Case Study: Design of multi-paradigm languages 


    Class 25
    (continue)

      Test 2 OFFERING-SPECIFIC


    Assignments (Generic)

    1. Assignment 1 . (asg1.ppt)

    2. Assignment 2 .

    3. Assignment 3  

    4. Assignment 4 

    Lecture videos will be available on Pilot to all registered students.
    Lecture slide decks are linked to lecture schedule on this public page.

    Old Exam Samples

    Additional details on grading, planned/unplanned absences, participation roster, etc will be communicated via email.
    So please check your emails regularly.