Faculty of Science

Department of Computer Science

Land Acknowledgement

Toronto is in the `Dish With One Spoon Territory'. The Dish With One Spoon is a treaty between the Anishinaabe, Mississaugas and Haudenosaunee that bound them to share the territory and protect the land. Subsequent Indigenous Nations and peoples, Europeans and all newcomers have been invited into this treaty in the spirit of peace, friendship and respect.

Instructors Dave Mason
Office: ENG286
Tel: 416-979-5000, x7061-, Email: dmason@ryerson.ca
Office Hours: Fri 13:00-15:00 or by appointment

Alexander Ufkes
Office: ENG209
Email: aufkes@ryerson.ca
Office Hours: Fri 10:00-12:00 or by appointment
Prerequisites CPS209
Calendar Description A survey of major programming paradigms, with emphasis on the functional paradigm. Discussion of data typing, program decomposition, scoping rules, control structures parameter passing. Programming languages will likely include commercially important functional languages such as Haskell, Clojure and Erlang, with examples of others as time permits.
Compulsory Textbook N/A
Reference Textbooks See the resources section of this website.
Course Organization 3 hours of lecture per week for 12 weeks
1 hour of lab per week for 12 weeks
Learning Objectives At the end of the course, a successful student will be able to:
  • Explain the differences among Object-Oriented, Functional, and Imperative programming languages.
  • Explain the differences between static and dynamic properties of programming languages, particularly type.
  • Be able to write simple programs in Smalltalk, Elixir, Haskell, and Rust
  • Explain the differences and trade-offs of various memory management approaches, including malloc/free, reference counting, garbage collections.
  • Understand, interpret, articulate, and apply a basic knowledge of programming language syntax, semantics, pragmatics, and implementation.
  • Make accurate use of technical literature and other information sources, to learn a new programming language.
  • Demonstrate an appreciation for the diversity and variable applicability of programming languages.
Evaluation & Feedback
Evaluation will be on the basis of labs, assignments, and an exam.
Assignments are to be done individually.
EvaluationGrade %Due Date (midnight)Description
Assignment 110% (originally 8%)2022.03.20 (past) only 8% if not submitted
Assignment 211% (originally 8%)2022.04.01 (past)
Assignment 311% (originally 8%)2022.04.14 (past)
Assignment 40% (originally 8%)cancelled
Labs12%Weekly
Final Exam56%2022.04.26 (past) no supplemental exam. 58% if A1 not submitted
Results for midterms and assignments will be returned within 2 weeks of due date.
Grading requirements To pass the course you have to get at least 50% of the total course marks and 28 of the possible 56 exam marks.

Unlike in previous years, you must do all 4 assignments. The assignments have a programming problem and a time-restricted online component.
Labs Labs start the week of January 17th. Unless stated otherwise for particular labs, labs marks are for being in the lab and working on the course (lab or assignment) and there is nothing to actually be submitted.
Information Technology and electronic devices All the languages you will be using for assignments and labs are provided in the School of Computer Science labs. They also all have open-source implementations that are free to download on your computers. Cellular phones, laptop computers and other electronic devices may be used in the classroom as long as they are quiet and do not distract other students, or otherwise disrupt class.
Evaluation Guidelines The online portion of assignments and the final exam will contain multiple-choice, short answer and problem questions. Sharing of calculators, pencils, pens or erasers is not permitted during any course examination.
Missed Evaluations Students are required to inform their instructors of any situation which arises during the semester which may have an adverse effect upon their academic performance, and must request any considerations and accommodations according to the relevant policies and well in advance. Failure to do so will jeopardize any academic appeals.
  • Medical certificates - If a student misses the deadline for submitting an assignment, or the date of an exam or other evaluation component because of illness, he or she must submit a Ryerson Student Medical Certificate AND an Academic Consideration form within 3 working days of the missed date. Both documents are available at https://www.ryerson.ca/senate/forms/medical.pdf. If you are a full-time or part-time degree student, then you submit your forms to your own program department or school. If you are a certificate or non-certificate student, then you submit your forms to the staff at the front desk of the Chang School.
  • Religious observance - If a student needs accommodation because of religious observance, he or she must submit a Request for Accommodation of Student Religious, Aboriginal and Spiritual Observance AND an Academic Consideration form within the first 2 weeks of the class or, for a final examination, within 2 weeks of the posting of the examination schedule. If the required absence occurs within the first 2 weeks of classes, or the dates are not known well in advance as they are linked to other conditions, these forms should be submitted with as much lead time as possible in advance of the required absence. Both documents are available at https://www.ryerson.ca/senate/forms/relobservforminstr.pdf. If you are a full-time or part-time degree student, then you submit the forms to your own program department or school. If you are a certificate or non-certificate student, then you submit the forms to the staff at the front desk of the Chang School.
  • Students who need academic accommodation support should register with the Academic Accommodation Support office (formerly called the Access Centre). Before the first graded work is due, registered students should inform their instructors through an "Accommodation Form for Professors" that they are registered with Academic Accommodation Support and what accommodations are required.
Late Assignments Assignment submission will be using the Fossil version control system unless otherwise specified. Late assignments may be penalized up to 25% and no assignments can be marked after the on-time assignments have been marked. "Late" is determined by the server system clock. The version of the assignment with a commit text of "Assignment n submission" (with the appropriate n) will be the version marked. If no such version is found, the last version submitted before the marking is done will be the version marked (if it has not been changed from the last version submitted before the due date, no late penalty will be levied).
Communication with Students Ryerson's email policy states that only Ryerson e-mail accounts are to be used for communication with students. All students, including continuing education students, have access to Ryerson email through their my.ryerson.ca site, and this is the official way in which they receive communication. All students are required to register for and maintain this account. Emails sent from other accounts may not be answered!
Course Content
WeekTopicReadings
1-2Introduction; Smalltalk and OOPSmalltalk Resources
3Describing Syntax and Semantics
4-5Elixir, Erlang and functional programmingElixir Resources
6-8HaskellHaskell Resources
9Names, Bindings, Type Checking, and Scopes
10-11RustRust Resources
12Control Structures, Memory Management, other Implementation
Other topics as time permits
Note: the exact topic list, timing and order are subject to change
The labs will focus on the 4 programming languages, with 3 labs on each language.

Obligations - Students need to inform faculty of any situation arising during the semester which may have an adverse effect upon their academic performance; they must request any necessary considerations (e.g. medical or compassionate), or accommodations [e.g. religious observance, disability (should be registered with the Access Centre), etc.] according to policies and well in advance. Failure to do so will jeopardize any academic appeals.
Re-grading and Re-calculation - Must be requested within 10 working days of the return of the graded assignment to the class.
Academic Conduct https://www.ryerson.ca/academicintegrity/
In order to create an environment conducive to learning and respectful of others' rights, phones and pagers must be silenced during lectures, lab sessions and evaluations.
Students should refrain from disrupting the lectures by arriving late and/or leaving the classroom before the lecture is finished.
Academic Misconduct According to Ryerson policy 60 (https://www.ryerson.ca/content/dam/senate/policies/pol60.pdf), academic misconduct includes, but is not limited to:
  • Plagiarism which is the claiming of words, ideas, artistry, drawings or data of another person. This also includes submitting your own work in whole or in part for credit in two or more courses.
  • Cheating
  • Misrepresentation of personal identity or performance
  • Submission of false information
  • Contributing to academic misconduct
  • Damaging, tampering, or interfering with the scholarly environment
  • Unauthorized copying or use of copyrighted materials
  • Violations of departmental policies or professional behavior
  • Violations of specific departmental or course requirements
Committing academic misconduct will trigger academic penalties, including:
  • a course-grade reduction that may be more severe than assigning a grade of "zero" (0) on course work;
  • failing grades, suspension and possibly expulsion from the University.
As a Ryerson student, you are responsible for familiarizing yourself with Ryerson student conduct policies.
Automatic Plagiarism Detection N/A
Non-Academic Conduct Ryerson's Student Code of Non-academic Conduct is described in Policy 61.
Among many other infractions, the code specifically refers to the following as a violation: "Disruption of Learning and Teaching - Students shall not behave in disruptive ways that obstruct the learning and teaching environment".
Diversity and Inclusion Statement In this course I would like to create a learning environment that supports a diversity of thoughts, perspectives and experiences, and honors your identities (including race, gender, class, sexuality, religion, ability, etc.) For more information about our University's resources and services on Equity, Diversity, and Inclusion please visit https://www.ryerson.ca/equity/
Prepared by D. Mason and A. Ufkes, January, 2022 in accordance with Ryerson University Policy of Senate: Course Management Policy, Policy #145 - Approval Date: May 31, 2016