To provide a solid foundation for studying advanced topics in Programming Language Specification and Design.
Specifically, the student learning outcomes include:
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, 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.
The course load includes programming assignments, a
midterm exam, and a final exam.
(1)
Programming assignments must be submitted but will not be scored/graded. You may work in
teams of two/three and share your work with team members to
improve your understanding of the material. Do not plagiarize from online sources.
(2) The exams will be conducted in-person in the class. No electronic device usage is allowed during the exams. The exams will provide helpful
information and code snippets from the text book or course notes if necessary.
(3)
The entire class is expected to take the exams simulaneously though
different versions of the same exam may be given to minimize
cheating. (Exceptions may be made only
under extraordinary circumstances such as a documented medical need or
family emergency.)
(4) Any academic impropriety (which includes copying
from other students or plagiarizing from online resources are
prohibited) during an exam (or on a graded assigment) 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.
The final letter grade are normally determined 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 for a small class. For a large class such as yours, I will describe my approach to fitting a Gaussian in a separate email.
Applicable University Policy on Generative AI
You are not permitted to use generative AI tools for any work for this course. This includes the use of popular tools like ChatGPT, Midjourney, GitHub Co-Pilot, as well as all other tools built on generative AI technologies. Due to the nature of this course, the professor can only fairly and accurately evaluate work that is not assisted by generative AI. Use of generative AI for assigned work in this course will be considered a violation of the university’s academic integrity policies. In general, if you have any questions about whether or not use of a particular tool or technology is allowed, check with your instructor first. (Also 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 provide.)
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 |
|
|
|
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 |
|||
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) |
||
FINAL EXAM: (December 5, 9:30am-10:50am) |