Programming Paradigms


Jochen Lang

  • Office hours: Wednesdays 13:00-14:00
  • Office: STE-5098, 800 King Edward Ave, Ottawa, On., Canada

Teaching Assistants

Amir Eaman

  • Office hours: Thursdays 14:30-15:30
  • Office: CBY-B405
  • Tasks: Tutorial, Thursdays 16:00-17:30, Marking assignments and midterms

Vidya Nanda Hruday Pidikiti

  • Office hours: Tuesday, 9:00-10:00am
  • Office: STE-5000J
  • Tasks: Laboratory 1, Mondays 8:30-10:00, STE-2060, Marking labs, assignments and midterm

Sonam Rinchen

  • Office hours: Mondays 13:30-14:30
  • Office: STE-3034
  • Tasks: Laboratory 2, Mondays 8:30-10:00, STE-2052, Marking labs, assignments and midterm

Heidi Fahim

  • Office hours: Mondays 10-11am
  • Office: STE5000D
  • Tasks: Laboratory 3, Mondays 8:30-10:00, STE-0131, Laboratory 4, Thursdays 10:00-11:30, STE-2060, Marking labs, assignments and midterm

Ahmed Haj Abdel Khaleq

  • Office hours: Fridays, 13:00-14:00
  • Office: STE-5000J
  • Tasks: Laboratory 5, Thursdays 10:00-11:30, CBY-B02, Marking labs, assignments and midterm

Ali Bhangoo

  • Office hours: Wednesdays, 8:30-9:30
  • Office: STE-5000J
  • Tasks: Laboratory (occasional), Virtual Campus, Marking assignments and midterm

General and Specific Objectives of the Course

Study different paradigms to understand programming at a more abstract level for a better overall understanding, to realize that different problems, different challenges benefit from different approaches and to be able to chose the best paradigm and language for a new task. In addition, knowing many languages will help to learn new (future) languages.

Calendar Description

Presentation of the major programming paradigms: object-oriented, imperative, logic, functional. Related programming languages, their essential properties and typical applications. Programming in imperative, logic and functional languages. Influence of programming paradigms on problem solving and program design strategies. An overview of other paradigms, such as constraint-based, rule-based and event-driven programming.

Course Prerequisites: CSI2110

See the official descripton in the University of Ottawa calendar.

Teaching Methods and Student Expectations

The course material will be covered in lectures, labs and tutorials. Additional resources in form of textbooks and on-line references are listed below. Attendance of and participation in lectures, labs and tutorials is mandatory. The course will be using group work and interactive student feedback using a web clicker. You must register for an account (details to follow on virtual campus) and answer questions during lectures. Although this is motivated by wanting to help you to learn and to retain the material better (and hopefully enjoy learning it more), it is also used to determine if you complied with the Faculty of Engineering rule of minimum attendance of 80% of lectures.

Recommended Textbooks

  • William F. Clocksin and Christopher S. Mellish, Programming in Prolog, Springer, 5th ed., 2003.
    This is the classic textbook on Prolog, covering the ISO standard in its 5th edition.
  • Patrick Blackburn, Johan Bos, and Kristina Striegnitz, Learn Prolog Now!, College Publications, 2006.
    This book is also available on-line. Covers most topics for the course.
  • R. Kent Dybvig, The Scheme Programming Language, MIT Press, 4th ed., 2009.
    Textbook from the developer of the Chez Scheme, available on-line.
  • Ivo Balbaert, The Way To Go: A Thorough Introduction To The Go Programming Language, iUniverse, 2012.
    Comprehensive treatment of the language and packages. Detailed chapter on concurrency.
  • The Go Authors, The Go Programming Language.
    The golang site has a lot of information including tutorials, reference amd an on-line sandbox.

General Textbooks

  • Allen B. Tucker and Robert E. Noonan, Programming Languages: Principles and Paradigms, McGraw Hill, 2nd ed., 2007.
    Comprehensive textbook which covers programming paradigms in itself along with syntax, types, names and semantics.
  • Maurizio Gabbrielli and Simone Martini, Programming Languages: Principles and Paradigms, Springer, 2010.
    This textbook is available on-line from the library.

Course Topics and Readings

Course notes will be made available through Virtual Campus, see a tentative list of topics with relevant chapters of the textbook.

Selected On-line Resources

  • Official Go Site
    Go is available for Linux, MacOS and Windows. Modern language started at Google in 2007.
  • SWI Prolog
    Open source prolog compiler available for all major platforms.
  • MIT/GNU Scheme
    Full scheme system for Linux, MacOS and Windows but the dedicated emacs editor is broken on Windows. Use racket instead.
  • Racket
    Racket is an extension of Lisp and Scheme with a decent IDE.

Student Evaluation

Student evaluation will be based on a midterm and a final exam as well as lab quizzes, three programming assignments and a comprehenisve programming assignment in three parts.

Marking Scheme

The maximum is 100 marks*) with the following breakdown:

Lab quizzes (6) 6 marks
Assignments (3) 18 marks
Comprehensive Assignment 12 marks (3 + 6 + 3 marks)
Midterm 26 marks
Final exam 38 marks

*) If the student's mark in the exam component is less than 50%, i.e., (Midterm + Final) < 32, then the student's mark in the course will be (Midterm + Final) / 64.

The midterms and final exams will be closed book except for one page of notes (single-sided, letter-sized, handwritten; except double-sided for final), no other aids or notes.


The midterm is scheduled to take place during class on

Tuesday, March 5th, 2019, 16:00-17:30

Note: The final exam mark will not overwrite the midterm mark(s).

Attendance at the midterm exam is mandatory. A student who has an official medical certificate (from the University Health Services) for the absence during the midterm will have the final scaled accordingly. In this case, the student will not receive more than 9% of his/her final grade by the drop date.

Reminder: Academic Regulations

Class attendance is mandatory. As per academic regulations, students who do not attend 80% of the class may not be allowed to write the final examinations.

All components of the course (i.e laboratory assignments, projects, etc.) must be fulfilled otherwise students may receive an INC as a final mark (equivalent to an F). This also holds for a student who is taking the course for the second time.

Academic Fraud and Plagiarism

Any form of plagiarism or fraud including on an assignment will be reported. If it is found that (parts of) an assignment submission is copied, it will result in an automatic zero for the assignment. The TAs and myself are using software (moss) that identifies code similarity automatically.

For any plagiarism or fraud the university regulation on academic fraud applies. The plagiarism rules explains the University of Ottawa rules. Please familiarize yourself with them.