CS 442Principles of Programming Languages
- Units
- 0.50
- Faculty
- Mathematics
- Subject
- Computer Science
When it runs
- F24
- W25
- S25
- F25
- W26
- S26
- F26
- W27
- S27
Ran in 3 of the last 7 terms. Winter 2027: scheduled, 2 lecture sections. Spring 2027: schedule not out yet.
An exposure to important concepts and issues in contemporary programming languages. Data types, abstraction, and polymorphism. Program structure. Lambda calculus and functional programming, logic programming, object-oriented programming. Semantics of programming languages. Critical comparison of language features and programming methodologies using examples drawn from a variety of programming languages including Lisp, Prolog, ML, Ada, Smalltalk, Icon, APL, and Lucid. Programming assignments involve the use of some of these languages.
Prerequisites
- Complete all of the following
- Must have completed at least 1 of the following:
- Must have completed at least 1 of the following:
- Must have completed at least 1 of the following:
- Enrolled in H-BBA & BCS Double Degree, H-Computer Science (BCS), H-Computer Science (BMath), JH-Computer Science (BCS), JH-Computer Science (BMath), H-Computing & Financial Management, H-Data Science (BCS), or H-Software Engineering
Antirequisites
None listed.
Leads to
No course lists it as a requisite.
Winter 2027 sections
| Section | Class | Enrolled | Meets |
|---|---|---|---|
| LEC 001 | 5610 | 0 / 70 | TTh 13:00–14:20 |
| LEC 701 | 2194 | 32 / 9999 | Online or by arrangement |
| TST 101 | 6410 | 0 / 70 | Mar 1 16:30–18:20 |
Resources
Around the web
Found by uwloo’s link finder, which checks that each page names CS 442.
- CS 442/642: Home Course website · student.cs.uwaterloo.ca Remove
- CS442 Course Notes Course notes · jaidenratti.com · from Jaiden Ratti’s site, CS webring Remove
- Final notes Past final · richardwu.ca · posted on r/uwaterloo Feb 2020 Remove
Reviewed on UW Flow
77% liked it47% easy66% useful
From 43 ratings and 13 comments on UW Flow. The most helpful comments, quoted as written, without names. Read them all on UW Flow.
Varies a lot depending on the professor. In Professor Richards offering, assignments could look daunting but usually weren't so bad once you get your head around them. Overall, cool course that teaches you lots of different ways to think about programming, which in my opinion is useful.
Apr 2025 · liked it · 1 found this helpfulOn UW FlowRemove this
Super interesting course! You learn the theoretical underpinnings of 1980-era programming languages. Very neat. Assignments are a lot of fun, and are well suited to the material. Midterm felt a bit too long.
Feb 2020 · liked it · 1 found this helpfulOn UW FlowRemove this
Very complex course that requires learning a deep understanding of the concepts in order to succeed in it. I think taking it will prove to be extremely useful in the rest of my life.
Apr 2014 · 1 found this helpfulOn UW FlowRemove this
(Brad Lushman, W26) Great course! Content is kind of non-trivial but the midterm, assignments, and final were mostly easy -- I'd say if you understood the content like, 70% well you'd do great on each.
Apr 2026 · liked itOn UW FlowRemove this
Under Brad Lushman there was a heavy focus on lambda calculus and functional programming (like 80% of the course), which was challenging but I definitely learned a lot. The assignments were mostly manageable, with a fair midterm and final. For both exams, you could bring a cheatsheet and had some choice in which questions you wanted to answer (only had to answer 8 out of 9 for the midterm and 8 out of 12 for the final).
Apr 2026 · liked itOn UW FlowRemove this
Discussed on r/uwaterloo
112 posts and comments in 92 threads mention CS 442, January 2012 to December 2024. Quoted word for word, newest first; each reply sits under the post and the comment that started its branch. Search r/uwaterloo for newer posts.
Fall 2024
Thoughts on CS442? 3 points, 3 comments
u/Status-Dragonfly-175: “How easy/difficult is CS442? I am looking for an Easy cs course.”
Winter 2024
CS442 final 1 point, 1 comment
u/bvxj: “anyone else in cs442 worried about the exam?”
Exchange at UWaterloo advice 10 points, 1 comment
“So as in the title, I am going to do an exchange at UWaterloo in Fall 2024 term. I have some questions about it to get some advice from you, thanks, especially about the courses as the deadline for …”
u/rngpenguin: “… maybe also CS 442 is a bit harder but really unique and interesting. 3. CLAS 201 is great, intro course on ancient greece. really easy too! 4. …”
Upper year CS courses like Cs135/136 6 points, 5 comments
“Wondering if there's courses like CS135/136 in 3xx+ level.”
u/UnintentionalSwatter: “CS442 includes some functional programming.”
Should I take CS 365 or CS 442? 3 points, 2 comments
u/EducatedImagination: “… However, based on my schedule, I have the option to take only one of the following two courses: CS 365 or CS 442. I am wondering which one is more interesting conceptually and which one is more useful practically. …”
u/2kofawsome: “… CS365 (https://outline.uwaterloo.ca/view/nny8zs) will cover undecidability from CS245 and greatly expand on the complexity topics from CS341 CS442 (https://outline.uwaterloo.ca/view/n8uwb9) is for those "who loved CS245" according to the prof this term in the first lecture”
Anyone taking CS 442 this term? 1 point, 4 comments
u/VP_Strickland: “Does anyone know what room CS 442 is being taught in this term? I want to enrol in it as an elective, but since I’m not in CS, I need to wait till the second week of classes before I can enrol. …”
Fall 2023
make up final for cs 246 cs 245 ? 3 points, 4 comments
“Hey does anyone know if I can do a make up final for CS 246, 245 ? because of some medical reasons I can only do 2 out of the 4 finals that I have, ie. I won't be able to do CS 245 and CS 246 final. …”
u/winniejy: “I think they will give you a mark of INC and you will have to take the exam the next term (but you don't necessarily have to take 4 months off).”
u/2kofawsome: “… All the previous ones + CS348, CS360, CS370, CS442, CS449, CS487, CS492 All in all, it won't be the end the world, but it will make things way harder to plan courses.”
Spring 2022
Is there any 4xx CS course that can be taken safely on a coop term? 4 points, 9 comments
“Currently, I am thinking about taking (one of) CS451 and CS488. I wonder if these 2 courses will provide enough information online, so I don't need to attend lectures physically. …”
u/tendstofortytwo: “I don't know how much Gregor Richards plans to change his CS442 offering, but if it's like winter then that course is complete-able without attending a single lecture. …”
CS students, what courses have you taken each term 9 points, 21 comments
“Inspired by https://www.reddit.com/r/uwaterloo/comments/v3b8nj/can\any\current\mathcs\students\let\me\know\their/ but recognizing that one term is a very narrow view, What courses have you taken each …”
u/BubblesfromSunnyvale: “… 227 2B: CS 240, CS 241, CS 251, MATH 239, STAT 231 Co-op 3: CS 341 3A: CS 350, CS 480, CS 442, PMATH 340, ECON 371, CO 487 3B: CO 250, MUSIC 140, CS 360, CS 458, CS 370 4A: CS 444, CS 462, CO 331, MUSIC 246 4B: CS 486, CO 342, CO 380, GEOG 181 In 4B now, would be happy to talk …”
CS course suggestions because advisors didn’t help 2 points, 9 comments
“Hi there! In 2B CS. For some particular reasons, I only have CS courses left as part of my degree requirements. I’ve taken CS 135, 136, 245, 246, and 251. …”
u/2kofawsome: “I think you can take CS 346, CS 348, CS 370, CS 457 But, I dont think its possible in 2B CS to have only CS courses left. …”
u/2kofawsome: “… After you take 240 and 241 this term it will open up CS 341, 349, 350, 360, 365, 442, 449, 487, 492 and taking 370 would open CS 475, 476, 479, 484 for next term, so after this term you will have tons of options. …”
Winter 2022
CS452 (Trains) + CS480 (ML) = overkill? 5 points, 21 comments
“Hey all, I'm trying to plan my future course pathway and was wondering on any upper-year / alums' opinions on taking CS452 + CS480 in the same semester (alongside 3 other bird courses). …”
u/AutomaticClass7289: “It's overkill....plan it out so that u take them one by one in each term”
u/KnowledgeVampire: “Currently the plan is CS454, 456 for summer term, CS448, CS442, CS444, CS451 for a winter term.”
CS 442 1 point, 1 comment
Check it elsewhere for Fall 2026
- Undergraduate Calendar, 2026–27The official entry
- Requirements for Fall 2026Waterloo’s requisite checker
- Schedule of Classes, Fall 2026Instructors, rooms, live seats
- Quest Class SearchWhere you enrol
- Course outlinesSyllabi from past terms (UW login)
- UW FlowStudent ratings and reviews
- WClassesPast sections back to 2004, and who taught them