![]()
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 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.
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.
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.)
| 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) |
||
| Test 2 OFFERING-SPECIFIC |