The illustrated guide to a Ph.D.
Imagine a circle that contains all of human knowledge: By the time you finish elementary school, you know a little: By the time you finish high school, you know a bit more: With a bachelor's degree, you gain a specialty: A master's degree deepens that specialty: Reading research papers takes you to the edge of human knowledge:
10 reasons Ph.D. students fail
Focus on grades or coursework No one cares about grades in grad school. There's a simple formula for the optimal GPA in grad school: Optimal GPA = Minimum Required GPA + ε
Architectures for interpreters: Substitutional, denotational, big-step and small-step
Resources Structure and Interpretation of Computer Programs. Until very recently, MIT used to teach freshman computer science by having them write interpreters. SICP is the now-classic textbook for that course. Lisp in Small Pieces is a complete, up-to-date treatment of writing high-performance interpreters and compilers for dynamic languages (with Scheme used as an example). My post on meta-circular evaluators and first-class macros includes a complete meta-circular interpreter for a large chunk of Scheme.
Electric meat
Don't touch the electric meat Some time ago, a primatologist ran an experiment with chimpanzees. The experiment involved a hanging pallet of meat that, when touched, sent an electric shock througout the entire chimp cage. At first, the chimps responded with bewilderment every time one of them grabbed the meat and the shock rippled through the cage.
Relational shell programming
Representing relations In mathematics, a relation is a set of tuples. [A tuple is an ordered collection of values, (v_1,\ldots,v_n).] For example, \{({\tt Bob}, 31), ({\tt Judy}, 32)\} is a relation. In database theory, a relation is a set of tuples with an assigned name for each column; that is, a relation is a table. For the earlier relation, we could define a header tuple ({\tt name}, {\tt age}) that names each column.
10 tips on how to give an academic talk
The biggest mistake academics make is misjudging their audience. I've been to (many) talks where the talk itself was presented to one or two people in a room of hundreds. (Disclaimer: I've given my fair share of these talks too.) When preparing a talk, glance at the program for the event, or ask your host what you should expect of the audience in terms of background knowledge. Aim appropriately.
Join Us
Undergraduates We have openings for paid urops for MIT undergraduates, both during the academic year as well as during the summers. The list of current openings can be found on the UROP openings page.
Sculpting text with regex, grep, sed and awk
Theory: Regular languages Many tools for searching and sculpting text rely on a pattern language known as regular expressions. The theory of regular languages underpins regular expressions. (Caveat: Some modern "regular" expression systems can describe irregular languages, which is why the term "regex" is preferred for these systems.) Regular languages are a class of formal language equivalent in power to those recognized by deterministic finite automata (DFAs) and nondeterministic finite automata (NFAs).
3 shell scripts: Kill weasel words, avoid the passive, eliminate duplicates
More resources There are four books at arm's length in my office: Strunk and White's The Elements of Style is still a good, if not perfect, reference on style. Young writers should calibrate their reading of Elements in light of criticism from linguistic experts. Experts claim that the good parts of Strunk and White are common sense. I take issue only with their application of the modifier common.
Standalone lexers with lex: synopsis, examples, and pitfalls
The tool lex in a nutshell The program lex consumes a lexical specification and generates C source code for a lexical analyzer. Typically, regular expressions describe classes of tokens in a spec. [See my post on sculpting text for a definition of regular expressions.] For example, an informal lexical specification might be: identifiers match [A-Za-z_][A-Za-z_0-9]*; integers match -?
Books and papers every graduate student should read
Jump to For grad students in any field Resources for writing Writing is the default activity in graduate school.
SSH tricks
Why SSH? As recently as a 2001, it was not uncommon to log in to a remote Unix system using telnet. Telnet is just above netcat in protocol sophistication, which means that passwords were sent in the clear.
How to peer review scientfic work
Avoid decision fatigue I've written a few hundred peer reviews. The dominant factor in whether I wrote a high- or low-quality review was decision fatigue.