Joel with textbook, yawning

Joel Friedman's Course Materials

Materials below may have errors! Errors will be corrected either here or in class. If you are not attending my classes: use these materials at your own risk!

"Don't let them fool yuh / Or even try to school yuh /.../ I in the darkness, yuh muss cum out di light" -- Bob Marley

Current Courses (Winter 2024-25)
    Courses listed in grey have no syllabus at present. For undergraduate courses, see previous years to get an idea of the syllabus. Graduate courses typically vary greatly from year to year, even if the course number and title are the same.
  • CPSC 421-101/501-101 (Introduction to the Theory of Computing)
  • CPSC 531F-201 (Introduction to Discrete Hodge Theory and Topological Data Analysis)
Recent Older Courses (Fall 2019 to Spring 2024)
Some Even Older Courses
You could try the WayBack Machine (an archive) for some courses not found here, or for any snapshots before the final version (the course webpages typically vary during the term). These are provided as is: they may contain broken links, etc.
  • MATH 441 (Math Modeling: Discrete Optimization Problems, 2018-19)
  • MATH 223 (Honours Linear Algebra, 2018-19)
  • CPSC536J (Topics in Algorithms and Complexity: Linear Algebra Problems, 2018-19)
  • MATH 441 (Math Modeling: Discrete Optimization Problems, 2017-18)
  • CPSC 421 (Introduction to the Theory of Computing, 2017-18)
  • MATH 200 (Third semester calculus, 2015-16)
  • MATH 340 (Introduction to Linear Programming, 2015-16)
  • CPSC 421 (Introduction to the Theory of Computing, 2015-16)
  • MATH 340 (Introduction to Linear Programming, 2014-15)
  • CPCS 421 (Introduction to the Theory of Computing, 2014-15)
Some Way Older Courses
These courses likely have material that were lost during a rather hasty move of files from the UBC Mathematics servers to the UBC Computer Science servers around early 2019. I'll do the best I can...
You could try the WayBack Machine (an archive) for some courses not found here, or for any snapshots before the final version (the course webpages typically vary during the term). These are provided as is: they may contain broken links, etc.
Some Handouts
These are some handouts from my previous courses that I have been able to find on my course webpages. To access some others, you could try the WayBack Machine (an archive).

As with all course materials, these handouts may have mistakes, typos, etc., that were only corrected in class; if time permits, I'll indicate which parts of these handouts seem free of major errors.

Selected Oddities and Humour from Courses
This page is always under construction, correction, etc. There is no intention to offend anyone, except possibly myself. Please email me with the words "Selected Oddities" in the beginning of the Subject Header of the email if you have a concern about the content; I'll do what time permits.
  • This is why all my course materials come with a disclaimer regarding people who access this material and are not taking the course: in the early days of the internet, I circulated some notes on complementary slackness algorithms on my Math 340 course webpage. Some book (connected with physics, I think) referenced these notes, whereupon I received an email from a seemingly disgruntled expert in the field, I believe about the lack of proper attributions and/or references.

  • In addition to the standard O(f(n)), o(f(n)), etc., I think everyone computer scientist should see the notation OO(f(n)), pronounced "uh-oh of f(n)," which I believe is due to Udi Manber (?) (see almost any of my course notes for CPSC 421 somewhere).

  • In Math 523, Spring 2014, I taught Valiant's profoundly impactful result that an algebraic formula of size m can be expressed as a determinant of size m+2 (my recollection is that coupled with a result regarding the permanent, this is an "algebraic analog" of NP versus (something that roughly looks like) NC, which due to a collapse in the algebraic model becomes an algebraic analog of NP versus P). After botching the proof a few times in front of the class, I realized there was a reason: this often quoted result has a minor bug. The bug can easily be fixed to yield a determinant of size 2m+1, which does not change the impact of the result. Furthermore, as of 2014, there was (a much more elaborate) proof yielding a size m+1 formula. What is curious is that no one checked the details of this short proof (or at least bothered to report the error) for years, and many sources reported this m+2 "result," including a textbook that assigned this "result" as an exercise, with hints; that said, a cursory glace at Valiant's proof makes it quite convincing that there exists some O(m) result.

UBC CS Home| Joel Friedman Home| Course Materials