CPSC 311

Definition of Programming Languages

Course Description

Comparative study of advanced programming language features. Statement types, data types, variable binding, parameter passing mechanisms. Methods for syntactic and semantic description of programming languages.

Scroll to see reviews

Add a Review for this course

Please ensure that your review is respectful and constructive. Read about UBC's aim for creating a safe and inclusive learning environment here. These reviews may take several days to process and will be scanned for inappropriate or malicious content.

Please enter a name/username.
Enter a valid url including the 'https://' prefix. (https://www.example.com)
Please enter your course review. [minimum length: 50 characters]

Enter your UBC CWL email here to enter in a raffle to win 50% off a CSSS Hoodie ($22.50 value) or one of five $10 AMS gift cards! Each course review is an entry in the raffle, with a maximum of five entries per person. Raffle will take place at the end of the 2022W2 term. This email will not be visible on the published review.

Email must end in ubc.ca.

I personally would really recommend 311 and 312. While they don’t teach you the most directly applicable skills, they really develop critical thinking skills and give you many tools for thinking outside of the box with regards to programming. While I don’t tend to write interperters (311) or use pure functional or logic paradigms (312) I find I often find ways of incorporating concepts I learned in those classes when tackling hard problems that don’t have a de facto standard solution. For instance at my day job I’ve been working on developing visual scripting tools for use by non programmer game designers. To do so we had to design and model a basic programming logic model that was domain specific to our project’s given domain. The model we have come up with has to treat state very explicitly to solve networked multiplayer, so I used a ton of the concepts from 312 with regards to stateless programming paradigms. 311 also gives some rudimentary experience with regards to parsing data as logic, which came in handy for designing the data format and tools used for creating the visual scripts.
/u/Aruzan, Mar 5 2014
311 with Steve Wolfman. It was very intellectually engaging. It managed to be both very abstract and very technical. Easily one of my favourite courses of 3rd year. I think you’d be doing yourself a disservice as someone in CS if you don’t understand how interpreted languages get well… interpreted. The techniques you learn are very interesting. You’ll be able to take 411, which will let you know how compilers work. It forces you think about programming languages in ways you never really considered. All very fascinating stuff.
/u/creamenator, Mar 5 2014
When I took it, it was an easy course with Prof. Joshua Dunfied. He is no longer at UBC. The course is taught by Dr. Wolfman now (iirc) and I would say it is the same level of difficulty as his 320 classes.
/u/vaastav05, May 23 2019
Awesome course that teaches you about programming languages, with a emphasis on language semantics. Despite being a third year course, CPSC 311 directly uses quite a lot of the concepts from CPSC 110. Some notable things include the PLAI (Racket) language and templates. Finally, for recent offerings taught by Prof. Ron Garcia (2020, 2021), all exams are coding exams done on the computer.
eqfy, Jan 21 2022

Historical grade information

Grades information from UBC Grades Database