CSCI 3136: Principles of Programming Languages

Class: MWF 1535-1625, LSC 236 (for AV, x6471, room 230)
Instructor: E. Milios
Office Hours
TA: Hongyu Liu
The TA will be holding two "office" hours (afternoon and evening) in the Learning Centre before the due date of each assignment to answer questions.

Off. hrs. for ass. 1 Off. hrs. for ass. 2 Off. hrs. for ass. 3 Off. hrs. for ass. 4
Feb. 4 (Monday)
6:00pm - 7:00pm

Feb. 27 (Wed)
1:30-3:00 (eem's office)

Feb. 6 (Wed.)
2:15pm - 3:15pm
Feb. 28 (Thur)

Calendar Description

Class mail

How to password protect your site

**** Today's announcements ***

This class provides a comparative study of advanced programming language features. Topics include statement types, data types, variable binding and parameter passing mechanisms. Formal methods for syntactic and semantic description of programming languages are examined.

Prerequisites: CSCI 2110, CSCI 2121, knowledge of at least two programming languages. MATH 2112/2113 is nice to have.

Weekly Schedule (lecture slides)

Week Date Topic Readings (required, optional)
Week 1
7-9-11/1 Issues, Compilation/Interpretation. Models of Computation PLP ch.1, CPL ch. 1, 2
Week 2


Regular Expressions, Finite automata, Context-free grammars, Pushdown automata, Formal Methods of Describing Syntax
PLP ch. 2, FSSPL ch. 1, CPL ch. 3, MCIJ ch.2
Week 3
21-23-25/1 Lexical Analysis
PLP ch. 2, MCIJ ch. 3
Week 4 28-30/1
1/2 Munro day

Parsing [Recursive Descent Parsing, Parser Generators]
Formal Methods of Describing Semantics

PLP ch. 2, 4, FSSPL ch. 3, 5, 9, CPL ch.3, MCIJ ch. 7,8

Week 5
(ass. 1 due)

Introduction to Scheme.
Variables, storage, scope, bindings.
PLP ch. 3, ch. 11.2, FSSPL app. 2, CPL ch. 4
Week 6 11-13-15/2 Variables, storage, scope, bindings.  
Week 7
18-20-22/2 Reading week
25-27/2 - 1/3
(ass. 2 due)
Control Statements
PLP ch. 6, CPL ch. 6, 7, MCIJ ch. 8
Week 8


(Common Lisp)
Data Types, Garbage Collection
PLP ch. 7, CPL ch. 5, MCIJ ch. 13
Week 9 8-10-12/4
Subprograms, Activation Records PLP ch. 8, CPL ch. 8,9, MCIJ ch. 6
Week 10

Putting things together: Building a Runnable Program.

PLP ch. 9.1-9.3, PLP ch. 5.6, MCIJ ch. 9, 11
Week 11 22-

Putting things together: Building a Runnable Program

Week 12
  (Data Abstration and Object-orientation)
PLP ch. 10, CPL ch. 10,11, MCIJ ch. 14
Week 13
PLP ch. 11, FSSPL ch. 5, CPL ch. 14, MCIJ ch. 15

All assignments (except the last) are due in class on Friday.

Required Textbook

[PLP] M. Scott: Programming Language Pragmatics, Morgan Kaufmann Publishers, 2000, ISBN: 1558604421

Additional Reading

[CPL] Robert W. Sebesta: Concepts of Programming Languages, 5th edition, 2002, ISBN 0201752956.

[MCIJ] A. Appel: Modern Compiler Implementation in Java, Cambridge Univ. Press 1998, ISBN: 0 521 58388 8

[FSSPL] Kenneth Slonneger and Barry L. Kurz. Formal Syntax and Semantics of Programming Languages, Addison Wesley, 1995. This book is currently out of print but is available on the Web.

[SICP] H. Abelson, G. Sussman: Structure and Interpretation of Computer Programs, 2nd ed., MIT Press, 1996. (includes full text in HTML format).

[OOSC] B. Meyer: Object-oriented Software Construction, 2nd ed. Prentice Hall, 1997.

Leslie B.Wilson and Robert G.Clark: Comparative programming languages, Addison Wesley, Third edition, 2001 , ISBN 0-201-71012-9

Terrence W.Pratt and Marvin V.Zelkowitz: Programming languages Design and Implementation, Prentice Hall, Fourth edition, 2000


Assignments a1 a2
a3 (due 12/4)
(due 19/4)
60% All assignments weighted equally.
Midterm 8/4 20% in class (last year's midterm for practice)
Final Exam 22/4 20% in class.

Late submissions will not be accepted, except when accompanied by a doctor's note stating the days the student was unable to work. NO EXCEPTIONS will be made to this rule.
It is a good idea to form study groups, talk to your friends, and ask others for help but please do your own work. Please acknowledge all collaborators in your write up. Dalhousie University has a zero tolerance policy in the matters of plagiarism and cheating. Engagement in any form of anti-intellectual behavior may result in severe punishment and can include expulsion from the university. Read carefully the posted plagiarism guidelines, and ask the instructor if you are unclear about any of them.

Lecture attendance is not required, but historically non-attendance results in poor grades. Questions during or after the lectures are encouraged but disturbing others in class in any way will not be tolerated. Please be considerate of other people’s time and try to avoid disturbing others (e.g., by coming in quietly through the back door if you are late, and by not talking during the class).

Important Note

Survival in this course requires some familiarity with UNIX (do the UNIX tutorial, if you lack this). You will be required to use an editor (e.g. vi or emacs) to write programs in various programming languages, and compile and run them. Do the gnuemacs tutorials 0 1 2 3 and consult the GNU emacs Manual or the vi tutorial if you lack this. Of the two, gnuemacs is recommended. Basic file and directory management will be useful.

Useful links

L. Prechelt: "An empirical comparison of seven programming languages", IEEE Computer, October 2000, Vol. 33(10), pp. 23-31. (provides hard data about the relative effectiveness of C,C++,Java,Perl,Python,Rexx, Tcl. Available from the IEEE electronic library).

E. Gat: Lisp as an alternative to Java, ACM intelligence, Dec. 2000, pp. 21-24.

Robert St. Amant, Michael Young North Common Lisp resources on the Web intelligence, Volume 12 , Issue 3 Fall 2001