CPSC 312

Functional and Logic Programming

Course Description

Principles of symbolic computing, using languages based upon first-order logic and the lambda calculus. Algorithms for implementing such languages. Applications to artificial intelligence and knowledge representation.

Average difficulty
2 / 5
Average quality
5 / 5
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 loved 312!! Steve Wolfman taught it in my offering last term (2021W1) and it was really fun - he really made the course worth it with his teaching style and enthusiasm and we learned all about really interesting programming languages that are outside the traditional few (C, C++, Java, JavaScript) as well as some programming tasks that are much easier/faster in those different paradigm languages! probably one of the most insightful and enjoyable classes I’ve taken in my degree so far next to 340
/u/xKaillus, Jan 31 2023, course taken 2021W1
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. I am also personally a fan of the profs who often teach these classes, Steve (311) and Kurt (312). If either is on sabbatical though, the experience might be different from my own.
/u/Aruzan, Mar 5 2014

Historical grade information

Grades information from UBC Grades Database