Wael Aboulsaadat



CSC324 Principles of Programming Languages (Spr 11, Spr 09, Sum 05, Sum 04, Fall 04)


Administrative Docs and Links
Course Info Sheet
Policy on Collaboration
Weekly Lecture Survey
The Portal!
CDF Resources
UoT - Medical Certificate
Current UoT CS Courses
UoT Arts & Science Calendar

References
Concepts of Programming Languages by Sebesta

Course Schedule and Notes
Lecture 1:    PL History, PL Paradigms
Lecture 2:    LP Intro, Logic Propositions, Resolution, Logic Laws Summary
Lecture 3:    Horn clause, Prolog Intro
Lecture 4:    Prolog: Unification, Reasoning, Backtracking
Lecture 5:    Prolog: Backtracking, Unification Operators, Structures, Recursion
Lecture 6:    Prolog: Recursion Examples, Cut Operator, Negation. Logical vs. Imperative
Lecture 7:    Prolog: Structures, Logical Predicates. Java Reflection Intro
Lecture 8:    Java Reflection, Code: Usage of Reflection
Lecture 9:    Software Automation, Functional PL, Scheme: Expressions, Lists, Data types
Lecture 10:  Scheme: Functions
Lecture 11:  Scheme Examples. Software Formal Verification., Induction Notes
Lecture 12:  ML: Intro, Types, Operators, Pattern Matching
Lecture 13:  ML: Records, Polymorphism, Exceptions
Lecture 14:  ML: Signatures. Language Specification: Grammar & Derivation
Lecture 15:  LS: Example Grammars, Parse Trees, Ambiguity
Lecture 16:  Imperative Languages: Primitive & Structured Data Types
Lecture 17:  IL: Pointer Data Type, Object, Class, Function Type
Lecture 18:  IL: Function Type, Type Conversions, Names & Variables, Binding, Operators
Lecture 19:  IL: User-defined Ops, Assignment, SubProg, Activation Records & Stack Frames
Lecture 20:  IL: SubProgram Parameter Passing Modes
Lecture 21:  IL: Static & Dynamic Scopes. Aspect Oriented Programming
Lecture 22:  IL: Containers

Assignments
Assignment Cover Sheet
Assignment Coding Guidelines
Assignment/midterm Remark Form  (pdf)
Software Testing Document by Diane Horton
A1:    Prolog Questions
A1:    Prolog Coding Style
A1:    Marking Scheme
A2:    Scheme Questions
A3a:  ML Questions
A3b:  Grammar Question
A3b:  Marking Scheme
A3b:  AntlrWorks.jar v1.4.2
A3b:  Using Antlr With Java.g
A3b:  Parser Test Cases
A3b:  Sample Solution

Midterm/Exam
Midterm + Solution

Scheme & Lisp Links
MIT Scheme Home Page
Debugging in MIT Scheme
"The Scheme programming language" by Dybvig
"Common Lisp the Language" by Guy L. Steele
"An Introduction to Scheme and its Implementation" by Paul R. Wilson
Google archive of news://comp.lang.scheme/
StackOverflow tags: Scheme, Lisp


ML Links
SML/NJ Home Page
What is ML?
A Gentle Introduction to ML by Andrew Cumming
Programming in StandardML by Robert Harper
Notes on Programming SML/NJ by Riccardo Pucella
Google archive of news://comp.lang.ml/
StackOverflow tags: ML


Prolog Links
SWI-Prolog Home Page
Coding Guidelines for Prolog by Michael Covington
GNU Prolog Manual
"Prolog by Examples" by Roman Bart?
Intermediate Prolog :- tutorial by J.R.Fisher
"Prolog Programming A First Course" by Paul Brna
Adventure in Prolog by Amzi! inc
Google archive of news://comp.lang.prolog/
StackOverflow tags: Prolog


Interesting Reads (optional)
C++? A Critique of C++ by Ian Joyner
The Case Against C by P.J. Moylan
A Comparative Overview of C#
A Critique of Java by Harold Thimbleby
A Critique of Standard ML by Andrew Appel
Why Functional Programming Matters by John Hughes
The Development of the C Language by Dennis Ritchie
Go To Statement Considered Harmful by Edsger W. Dijkstra
Why Pascal is Not My Favorite Programming Language? by Brian Kernighan
Can Programming Be Liberated from the von Neumann Style? by John Backus
Teaching the Fatal Disease by Richard C. Holt