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.
Heuristics, Approximation Algorithms, and Relaxations: An Introduction
While all NP-hard optimization problems are identical in terms of exact solvability, they may differ wildly from the approximative point of view. If the goal is to obtain an answer that is “good enough”, some problems become much easier (such as KNAPSACK), while others (such as CLIQUE) remain extremely hard.
Hypergraph Theory Basics
Graphs can be seen as a way to represent pairwise relationships between objects. With graphs, we have one object type and one relationship type. In one of the most common canonical applications or graph theory, social networking, we are trying to understand and represent social groups using graphs. In that case, our object is people, our pairwise relationship is friendship, and two people have a relationship between them if they are friends.