| Contents (hide) 1 Welcome to Principles of Programming Languages homepage 1.1 Goal: 1.2 Course plan: 1.3 Textbooks 1.4 Grading Policy 2 Staff Info |
Welcome to Principles of Programming Languages homepage
Goal:
Provide a wide understanding of the principles of programming languages, problem solving, program construction, and software design. The programming language is Scheme.Course plan:
- Building Abstractions with Procedures. chapter 1:
- The elements of programming – 1.1 – class1.
- Procedures and the processes they generate – 1.2 – Part 1; Part 2 (text version)
- Formulating abstractions with higher-order procedures – 1.3 – class3.
- Building Abstractions with Data. chapter 2:
- Introduction to data abstraction – 2.1 – class4 class4.txt
- Hierarchical data and the closure property – 2.2 – class5 class5.txt
- Symbolic data and multiple representations for abstract data – 2.3 – exercise – class SymbolicData. 2.4 – class6 class6.txt
- Systems with generic operations – 2.5 – exercise. Class GenericOperators.
- Modularity, Objects, and State. chapter 3:
- Assignment and local state; the environment model of evaluation - 3.1-2 – class7 class7.txt, operational semantics.txt
- Object-Oriented programming – class8 class8.txt. A simulator for Digital Circuits – 3.3.4 – exercise. Propagation of constraints – 3.3.5 – exercise. Class CP.
- Modeling with mutable data – 3.3 exercise. Class MutableADT.
- Concurrency: Time is of the essence 3.4.
- Metalinguistic Abstraction. chapter 4:
- The metacircular evaluator - 4.1, extended with a Scheme grammatical Specification - class 10 class10 class10.txt. Includes:
- The naïve Evaluator (4.1.1 – 4.1.6)
- The Analyzer (4.1.7), that separates syntactic analysis from execution. Analyzer examples
- The metacircular evaluator - 4.1, extended with a Scheme grammatical Specification - class 10 class10 class10.txt. Includes:
- Introduction to Logic Programming:
- Continuation Passing Style (CPS):
Textbooks
- Main textbook: Harold Abelson and Gerald Jay Sussman, with Julie Sussman: Structure and Interpretation of Computer Programs, MIT Press, 2nd ed., 1996. Home page of the book has entire text online, including SCHEME CODE.
- CPS (Continuation-Passing Style) is partially based on Chapters 7-8 of: Daniel P. Friedman, Mitchell Wand, & Christopher T. Haynes, Essentials of Programming Languages, 2nd edition, MIT Press, 2001.
- Prolog is based on: Leon Sterling & Ehud Shapiro, The Art of Prolog, MIT Press, 1986
Grading Policy
- Final exam: 65% (or 75% without the bohan)
- Mid-Term Quiz (Bohan): 10%, which is MAGEN–counts only if higher than exam.
- Programming assignments: 25%
- Important: you must pass the final exam to pass the course. If you fail the exam, exercises are not taken into account.
- If exam grade is much lower than assignment grades, the weights will be different.