Overview

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.

Prerequisites

  • 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.

Notes

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).

Note
Dates
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

Textbooks

Required textbook

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

Recommended reading

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

Evaluation

  • 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)

Policies

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.

Instructor
Norbert Zeh
Teaching assistants
Zhijiang Li
(A1–A4)
Amin Khalafvand
(A5–A10)
Office hours
W 12:00–14:00
F 13:00–15:00
Goldberg 314
Class
MWF 15:30–1630
Chemistry 226
Midterm
Feb 20, 2013
15:30–17:00
Chemistry 226
Final
April 19, 2013
12:00–15:00
Dalplex
Assignments
Posted:
Jan 14
Due:
Jan 21
Posted:
Jan 21
Due:
Jan 28
Posted:
Jan 28
Due:
Feb 4
Posted:
Feb 4
Due:
Feb 11
Posted:
Feb 11
Due:
Feb 18
Posted:
Mar 4
Due:
Mar 11
Posted:
Mar 11
Due:
Mar 18
Posted:
Mar 18
Due:
Mar 25
Posted:
Mar 25
Due:
Apr 1
Posted:
Apr 1
Due:
Apr 8
News
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.