February 2012
M T W T F S S
« Jan    
 12345
6789101112
13141516171819
20212223242526
272829  

Categories

Archives

The Good IR: Other Control Flow Structures

In my last post on The Good IR, I had arrived at a representation with two invariants:

Only BasicBlock’s carry information about the ControlFlowGraph; No other edges are allowed between BasicBlocks. All BasicBlocks end with a control transfer Instruction.

I focused that post solely on the if-then-else control flow structure. I would now like to [...]

Transforming Heuristics

Many of the real problems in the world are NP. Things like Scheduling, Register Allocation, Routing packages, etc. In solving these really hard problems, we invent heuristics. Typically such heuristics are specific to the problem domain. For example, UPS might exploit certain characteristic about the geographical layout of the country; they face a certain subset [...]

The Good IR

After parsing, each function can be represented as a ControlFlowGraph of BasicBlocks. Each BasicBlock holds a list of Instructions. For illustrative purposes Instructions are colored Blue and BasicBlocks are colored Orange.

I’d now like to address the question: What should the ConditionalBranch instruction at the end of the If-Header point to?

Option Illustration Pro Con [...]

Project Course in Web Services

I’ve just finished reading Phillip Greenspun’s experience report, Teaching Software Engineering, which details a project course in building Web Services. Even though I personally, hate the Web’s architecture (but that’s a rant for some other time), it still remains as THE most influentential and convenient place to showcase one’s work. It’s also convenient for shopping, [...]

Separating the Wheat from the Chaff

From Coding Horror: Separating Programming Sheep from Non-Programming Goats I learned of a paper, The camel has two humps, which describes a test that allows teachers to differentiate students likely to do well studying computer science from those who will likely never ‘get it’.

This paper sounds awfully similar to the physics conceptual test mentioned [...]

Business as an Investment

I finished my reading of Mike Maloney’s Guide to Investing in Gold and Silver, partially to get an idea of how he got started in the business of bullion. He’s actually had several businesses throughout his life, including one where he designed “stereo amplification electronics were selected as one of five permanent exhibits at the [...]

Learning the Abstractions

Since much of programming is about creating and manipulating abstractions, it figures that a large amount of education is going to be about leaning those abstractions. Things like classic data structures, the useful sloppiness of O-notation for algorithm analysis, and Design Patterns. But how should we introduce these things to our students?

Should you teach [...]

Object Oriented Compiler Architecture

Out of some curiosity, I quickly read this paper today:

The Object-Oriented Architecture of High-Performance Compilers, Lutz Hamel, Diane Meirowitz and Spiro Michaylov, Technical Report, Thinking Machines Corporation, 1996.

Even though they assume that the compilers internal representation is some kind of AST, the underlying lessons are worth communicating, and are applicable even if your [...]

Strong Typing for Security

I got into a mild argument about static vs. dynamic typing. I recognize that static typing can be verbose to the point of being repetitious. Take Java generics for example:

List<String> astr = new ArrayList<String>();

There really isn’t a great reason why the compiler can’t infer the type of the variable on the right hand [...]

Unit Testing in Education

In my readings of Extreme Programming, one thing I’m struggling to pick up on is Unit Testing. Mostly, it’s the pain of writing tests for each thing I can imagine goes wrong. Partly it’s an imaginary horror: I think about the full extent of testing all at once. I think about exhaustively testing my program’s [...]