Why Does Theory Matter in Computer Science? (Part 3)

The Densest Subgraph Problem, Peeling, and Iterative Peeling Algorithms

In Part 2 of this talk, we gave a crash course to graph theory and showed how we can use it to view some real-world problems as instances of the densest subgraph problem (DSP). But what exactly is the DSP? If you’ve studied graph theory, you may have heard of something called the Maximum Clique Problem. The goal of the max clique problem is to find the largest complete subgraph in a graph. If we consider our vertices to be people, and edges to represent a friendship relationship between two people, in the max clique problem we are trying to find the largest friend group in a community.
Read more...

Some Thoughts on Webrings

Today, I found out that some students at Carleton University have started a “webring” (or well, close enough) for students in computer science and engineering to post their personal websites. (In fact, this blog also joined that webring, and you can find a link to the rest of the pages in the webring here.) I thought this was a really cool idea, so I asked how they came up with it. It turns out that a few other CS and software engineering (+ adjacent) programs in Canada have also started such webrings.
Read more...

I Am Slowly Discovering That I Have No Idea How to Read

Over the last month and a half or so, I’ve come to the conclusion that I actually don’t know how to read, which is definitely a jarring realization to be having after over 18 years of formal education.

Okay, maybe I’m being a little bit cheeky here. I am not literally claiming to be illiterate or even functionally illiterate, and it would be stupid of me to do so, since clearly I am writing this blog post and have written many other blog posts where I reviewed books. However, one of the things my high school education didn’t prepare me for, and that my four years of training and education in engineering and computer science have completely failed to teach me, is how to both get through and learn from – “learn from” is the key term here – a large volume of readings on a weekly basis.

Read more...

Do You Need to Understand the Math Behind a System to Implement It?

A while ago, someone in a Discord server I’m in asked how much of the math behind a system you need to know to implement it. I thought it was an interesting question, and I felt qualified to answer it, so I ended up writing quite a lengthy response. It just occurred to me that it might also be useful to other people, so I thought I would clean it up a little bit and archive it here.

Read more...

Why Does Theory Matter in Computer Science? (Part 2)

Real-World Problems and a Crash Course to Graph Theory

In the first part of this talk, I made the case that theory is useful because it allows us to find (or at the very least, have the correct toolkit and language to explore) solutions to real-world problems. In this part, we are going to look at some examples of such problems and develop mathematical language to be able to discuss them more abstractly. I’ve put the term “real-world” in quotes in the title, because I’m going to be talking about these problems in a lot of generality. However, I want to stress that specific instances of these problems are actually relevant in industry, and I think it’ll be easy to see why once I start talking about them.
Read more...