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 reviewsI 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.
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.
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.
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.