Fall 2020 - CMPT 383 D100

Comparative Programming Languages (3)

Class Number: 6617

Delivery Method: In Person


  • Course Times + Location:

    Tu 11:30 AM – 1:20 PM

    Th 11:30 AM – 12:20 PM

  • Prerequisites:

    CMPT 225, and (MACM 101 or (ENSC 251 and ENSC 252)).



Various concepts and principles underlying the design and use of modern programming languages are considered in the context of procedural, object-oriented, functional and logic programming languages. Topics include data and control structuring constructs, facilities for modularity and data abstraction, polymorphism, syntax, and formal semantics.


The objective of this course is to give the student a better understanding of non-imperative programming, and other important distinctions between languages. Various concepts and principles underlying the design and use of modern programming languages are considered. We will take a detailed look at a pure functional programming language, and a language that promotes concurrency. Online offering notes: you will need a computer with a webcam and reliable Internet access. The computer should be powerful enough to run a virtual machine: at least 8 GB memory, 20 GB disk, and a reasonably decent processor. There will be 3-4 quizzes during the semester which must be completed during the lecture time. Otherwise, lectures will be posted as a "watch party" where we can watch together (and ask questions in a forum), but they can also be viewed later.


  • Expressing algorithms functionally
  • Functional programming in Haskell
  • Type systems in programming languages
  • Compilers, interpretters, and runtime environments
  • Challenges and techniques in concurrent programming
  • Concurrent programming in Go


  • Weekly exercises 15%; assignments 35%; quizzes 24%; final project 26%. May be adjusted: if so, changes will be announced in the first week of the semester. Students must attain an overall passing grade on the weighted average of exams in the course in order to obtain a clear pass (C- or better).



  • Programming in Haskell, Graham Hutton, Cambridge University Press, 

ISBN: 9781316626221

Registrar Notes:


SFU’s Academic Integrity web site http://www.sfu.ca/students/academicintegrity.html is filled with information on what is meant by academic dishonesty, where you can find resources to help with your studies and the consequences of cheating.  Check out the site for more information and videos that help explain the issues in plain English.

Each student is responsible for his or her conduct as it affects the University community.  Academic dishonesty, in whatever form, is ultimately destructive of the values of the University. Furthermore, it is unfair and discouraging to the majority of students who pursue their studies honestly. Scholarly integrity is required of all members of the University. http://www.sfu.ca/policies/gazette/student/s10-01.html


Teaching at SFU in fall 2020 will be conducted primarily through remote methods. There will be in-person course components in a few exceptional cases where this is fundamental to the educational goals of the course. Such course components will be clearly identified at registration, as will course components that will be “live” (synchronous) vs. at your own pace (asynchronous). Enrollment acknowledges that remote study may entail different modes of learning, interaction with your instructor, and ways of getting feedback on your work than may be the case for in-person classes. To ensure you can access all course materials, we recommend you have access to a computer with a microphone and camera, and the internet. In some cases your instructor may use Zoom or other means requiring a camera and microphone to invigilate exams. If proctoring software will be used, this will be confirmed in the first week of class.

Students with hidden or visible disabilities who believe they may need class or exam accommodations, including in the current context of remote learning, are encouraged to register with the SFU Centre for Accessible Learning (caladmin@sfu.ca or 778-782-3112).