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
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
- 10 assignments (A)
The best 8 assignments count; each has equal weight.
- Midterm (M)
- Final (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.