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.
Scroll to see reviews
2 / 5
5 / 5
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.
Historical grade information
Grades information from UBC Grades Database