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

Introduction and Big Ideas: Abstraction and Generalization

If you’re a computer science student, you probably had to take an introductory discrete math course at some point. Did you enjoy it? If so, this talk probably isn’t for you, so you can feel free to skip the rest. (Or not – hopefully you feel like you can still learn something from me!) Jokes aside, it’s actually okay not to enjoy your intro to discrete math course: like, personally, I loved mine, but I also completely hated my discrete probability course and would prefer never to see it again. But I pick on discrete math because I feel like if it’s taught well, it can be a turning point for many people, and it certainly was for me.
Read more...

Understanding the Python Memory Model

One of my quests during the research project I did last summer was to find a way to simulate pointers in Python, or at the very least, get some sort of named reference-like behaviour from the language. Unfortunately, I quickly learned that this is quasi-impossible, because Python is a language that aims to abstract as many implementation details away from the user as possible, and gives programmers very limited ways in which to interact with the language.
Read more...

Some Interesting Things I’ve Read Lately, Episode 1

Here’s a look at some of the articles and books I’ve been reading lately, or at least, the ones that stuck out to me. Originally, I wanted to do this as a weekly series, inspired by Cory Doctorow’s link posts where he comments on various articles he’s read - but I don’t have that kind of time. Also, I’m really not that great at remembering the various articles I’ve stumbled through online, so you’re going to get these when you get them.
Read more...