Course description

The main topics of this course include a comparative study of programming language features, an introduction to programming language design and implementation, and an introduction to the theory of formal languages.

The course objectives are

  • To provide an introduction to formalisms for specifying syntax and semantics of programming languages, including an introduction to the theory of formal languages,
  • To provide an exposure to core concepts and principles in contemporary programming languages, and
  • To explore various important programming methodologies, such as functional programming, logic programming, programming with abstract data types, and object-oriented programming.


  • CSCI 2110: Computer Science III
  • CSCI 2112: Discrete Structures I
  • CSCI 2132: Software Development

Related courses

CSCI 3132: Object-Oriented Programming explores object-oriented programming methodologies more in-depth.

CSCI 4112: Theory of Computation provides a more in-depth discussion of the theory of formal languages.

CSCI 4131: Compiler Construction discusses the design and implementation of compilers for programming languages in more detail.


The notes are still work in progress. I post them here so you can read ahead, but please be aware that there may be slight changes between the version you view here and the one used in class. As I make changes to the slides I use in class, I upload the updated version here. Also note that the dates in the table indicating when a topic will be covered are rough estimates at this point. These dates may shift depending on how we progress with some of the topics covered (and to account for Reading Week and other holidays not yet reflected in this schedule).

Jan 9 & 11
Jan 14, 16, 18, 21, 23 & 25
Jan 25, 28 & 30, Feb 1 & 4
Feb 6 & 8
Feb 11, 13, 15 & 18
Feb 18, 20, 22, 25 & 27, Mar 1 & 4
Mar 6, 8 & 11
Mar 13, 15 & 18
Mar 20, 22 & 25
Apr 3, 5 & 8
Not taught


Required textbook

Michael L. Scott. Programming Language Pragmatics. 3rd edition, Morgan Kaufmann, 2009.

Recommended reading

John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman. Introduction to Automata Theory, Languages, and Computation. 3rd edition, Addison Wesley, 2006.
Allen B. Tucker and Robert E. Noonan. Programming Languages: Principles and Paradigms. 2nd edition, McGraw-Hill, 2007.
Robert W. Sebesta. Concepts of Programming Languages. 7th edition, Addison Wesley, 2005.
A. Appel. Modern Compiler Implementation in Java. Cambridge University Press, 1998.
Kenneth Slonneger and Barry L. Kurz. Formal Syntax and Semantics of Programming Languages. Addison Wesley, 1995.
H. Abelson and G. Sussman. Structure and Interpretation of Computer Programs. 2nd edition, MIT Press, 1996.
B. Meyer. Object-Oriented Software Construction. 2nd edition, Prentice Hall, 1997.
Leslie B. Wilson and Robert G. Clark. Comparative Programming Languages. 3rd edition, Addison Wesley, 2001.
Terrence W. Pratt and Marvin V. Zelkowitz. Programming Languages Design and Implementation. 4th edition, Prentice Hall, 2000.


  • 10 assignments (A)

    The best 8 assignments count; each has equal weight.

  • Midterm (M)
  • Final (F)
Final grade = max(40% * A + 20% * M + 40% * F, 40% * A + 60% * F)


Collaboration: I encourage you to form study groups to discuss the course material and work on exercises. However, I do not allow any form of collaboration on assignments, except within groups of students handing in a joint assignment. Collaboration between groups will be treated as plagiarism. Sufficiently similar assignments will be handed over to the Faculty's Academic Integrity Officer.

Plagiarism: I will not tolerate any form of plagiarism (copying from your classmates, copying solutions from the web, etc.). According to university regulations, I have to report you to the Faculty's Integrity Officer if I suspect you of academic dishonesty, and I will. The Integrity Officer may refer your case to the Senate Committee on Plagiarism. The penalties for plagiarism can range from failing the course to expulsion from the university. So please save me and yourself the aggravation. For more information, make sure you read the university policy on intellectual honesty and the Dalhousie Academic Integrity Page.

Late assignments: I do not accept late assignments without a doctor's note or any other official document that certifies a good reason why you could not hand your assignment in on time. In case of important events in your personal life, I am willing to make an exception to this rule if you discuss these circumstances with me and apply for a reasonable extension of the deadline in advance.

Missed exams: If you miss an exam, I may, at my discretion, agree to give you the opportunity to sit the exam at a later date. You must, however, present a good reason why you were not able to sit the exam at the regularly scheduled time. Also, unless there are a large number of students who missed the regularly scheduled exam, make-up exams are oral exams.

Norbert Zeh
Teaching assistants
Zhijiang Li
Amin Khalafvand
Office hours
W 12:00–14:00
F 13:00–15:00
Goldberg 314
MWF 15:30–1630
Chemistry 226
Feb 20, 2013
Chemistry 226
April 19, 2013
Jan 14
Jan 21
Jan 21
Jan 28
Jan 28
Feb 4
Feb 4
Feb 11
Feb 11
Feb 18
Mar 4
Mar 11
Mar 11
Mar 18
Mar 18
Mar 25
Mar 25
Apr 1
Apr 1
Apr 8
Apr 3, 2013
Last year's final is here. The solutions are here.
Mar 4, 2013
Sample solutions for this year's midterm are here.
Feb 8, 2013
Last year's midterm is here. The solutions are here.
Jan 9, 2013
First class.
Jan 9, 2013
No office hours due to conference attendance.
Jan 7, 2013
Class cancelled due to conference attendance.