How Compiler Construction Remains Relevant (part 1)

Many students struggle with the compiler construction class here at UCI. I’d like to change that. Let me first lay down some groundwork, by giving some observations that I’ve made about the general lack of software engineering skills. Our students…

Higher-Order Functions in Java

This Summer I’ve been teaching Intro to Computer Languages. It’s a really awesome class, with alot of good material in it. Last week, my students got back the results of their midterms, and were disappointed in their scores. Immediately, I…

A language should be focused on writing Internal DSLs

I’ve been reading Martin Fowler’s book, Domain-Specific Languages, this weekend. He covered a number of ways in which you can structure your code to achieve what he terms an Internal DSL. Quite a bit is focused on the discussion of…

Considerations of Programming Language Design

Reddit modded up a nice review of Considerations When Designing your Own Programming/Scripting Language (it’s worth following the links provided there to Clementson’s Blog, to get a larger picture of the issue). There’s really a ton of stuff to think…

Const-correctness

One of my fellow lab-mates has already posted about const-correctness, because of some similar issues. My work today, takes it a tiny bit further into sheer insanity. If you don’t start your program off using a const-correctness discipline, it’s very…

Type-dispatch with Exceptions

I’m one of those Object Oriented programmers that consider type-inspection to be a design flaw. Much to my chagrin, I’ve found myself making occasional use of the Java instanceof keyword. In my most recent class lecture, we discussed Exceptions, and…

Method Extensions

I’ve come across another programming language feature that I would like to have. The last one was a bit outlandish, and I’d really like to refine it a bit. Dress it up a little. Supposing you were asked to perform…

Interface Extension

I’ve been programming an alpha-beta AI to play variants of connect-k games. For example, connect-3 on a 3×3 board with gravity off is tic-tac-toe, connect-5 on a 19×19 board with gravity off is the basis of go-moku, while connect-4 on…

Typestate and SSA

Since Rust was announced, I looked into the underlying idea of Typestate[1]. The most striking aspect about this paper is its age. The authors consider an extension to ordinary type checking to also verify that the state of a variable…

Fully Homomorphic Encryption

I didn’t know it at the time I posted my idea on secure computing, but others have been working on the idea for quite some time. It turns out that Craig Gentry recently published Fully homomorphic encryption using ideal lattices….