Class: MWF 1535-1625, LSC 236 (for
AV, x6471, room 230)
Instructor: E. Milios
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)
|Feb. 6 (Wed.)
2:15pm - 3:15pm
|Feb. 28 (Thur)
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.
|Week||Date||Topic||Readings (required, optional)|
||7-9-11/1||Issues, Compilation/Interpretation. Models of Computation||PLP ch.1, CPL ch. 1, 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|
||PLP ch. 2, MCIJ ch. 3|
1/2 Munro day
Parsing [Recursive Descent Parsing, Parser Generators]
PLP ch. 2, 4, FSSPL ch. 3, 5, 9, CPL ch.3, MCIJ ch. 7,8
(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.|
||18-20-22/2 Reading week
25-27/2 - 1/3
(ass. 2 due)
|PLP ch. 6, CPL ch. 6, 7, MCIJ ch. 8|
Data Types, Garbage Collection
|PLP ch. 7, CPL ch. 5, MCIJ ch. 13|
||Subprograms, Activation Records||PLP ch. 8, CPL ch. 8,9, MCIJ ch. 6|
Putting things together: Building a Runnable Program.
PLP ch. 9.1-9.3, PLP ch. 5.6, MCIJ ch. 9, 11
Putting things together: Building a Runnable Program
|| (Data Abstration and Object-orientation)
||PLP ch. 10, CPL ch. 10,11, MCIJ ch. 14|
||PLP ch. 11, FSSPL ch. 5, CPL ch. 14, MCIJ ch. 15|
All assignments (except the last) are due in class on Friday.
[PLP] M. Scott: Programming Language Pragmatics, Morgan Kaufmann Publishers, 2000, ISBN: 1558604421
[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
a3 (due 12/4)
a4 (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).
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.
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