Studies

The "Datalogi" Computer Science course at Copenhagen University is split into two parts. After three years you get a bachelor degree, and then after another two years you get a master degree. I plan on getting both, but have not decided where to go from there. My primary interest is programming language theory, but I also enjoy game development, tool and library development.

Bachelor (2005-2008)

This is a short overview of my studies as an undergraduate, covering the first three years.

First Year

All of the courses this year were obligatory, but also rather interesting. Coming from years of imperative programming, learning a functional language was eye-opening. Actually getting taught object oriented programming (as opposed to messing around with it on my own) was wildly effective. All courses passed.

Summer 2005

Fall 2005

Winter 2006

Spring 2006

Functional Programming (SML )

Object Oriented Programming & Design (Java )

Algorithms & Data Structures (O(n) )

Databases (SQL )

Mathematics & Computation

Computer Architecture (MIPS , C )

Operating Systems (C )

First Year Project (Java )

Second Year

For some reason, the university required us to pick four courses (filling up half a year) that could not have anything to do with Computer Science. Like many others, I chose to take three math courses, since had the most potential to be useful in my later studies. I also considered chemistry, since I used to love that in high school, but I figured I wouldn't learn anything useful there in just half a year. All courses passed.

Summer 2006

Fall 2006

Winter 2007

Spring 2007

Introduction to Mathematics (Maple )

Linear Algebra (Maple )

Introduction to Discrete Mathematics & Algebra

Introduction to Programming Language Theory (Scheme , PE )

Multimedia Compression (Matlab )

Logic in Computer Science

Computer Networks (C )

Introduction to Compilers (SML )

Third Year

Still lacking one of the obligatory non-Computer Science related courses, a friend of mine and I decided to take a business course: we wrote about a business idea involving parking lots and the internet. It seemed like it could be profitable, but I really didn't want to start a company back then.

Optimizing Compilers was not at all what I had expected. It was basically a ton of algorithms presented in messy pseudo code. At least I discovered that I find type theory and language constructs much more interesting than optimization. It did cover garbage collection well though.

We got permission to write a custom project, a language we called Incognitus. It was a functional, object-based language without any syntax for explicit types, but still statically typed via global type inference. We decided to see if we could implement the compiler using what we had already learned, but found ourselves failing miserably halfway through the project. Then we got a recommendation for the book Types and Programming Languages by B. C. Pierce - a book which turned out to be absolutely excellent. Reading it we got through the implementation, save for a few (ok, a lot of) warts in the compiler - but we ran out of time and decided not to hand it in.

Our final bachelor project was a practical one where we implemented a quality control system for dental treatments that Tandlægeforeningen needed. It consists of two desktop applications: the administration module, in which to create new treatment types, and the client module, in which to fill out diagnoses and treatments. Behind them is a server and a database that manages the data, and the communication is through RMI (locally) and SOAP (for the client web service).

Despite of the custom project that never were handed in, I actually had 7.5 ECTS-points too much due to the bachelor project counting double, totaling 4 * 7.5 ETCS (which in retrospect was probably a poor choice, but oh well, at least the grade wasn't too bad).

Summer 2007

Fall 2007

Winter 2008

Spring 2008

Introduction to Distributed Systems (Java , RMI )

Advanced Algorithms (P/NP )

Bachelor Project (Java , SOAP , DP )

(continued)

Optimizing Compilers (GC )

Knowledgebased Entrepreneurship

Project: Incognitus (SML , TI )

The Theory of Science

Master (2008-2010)

Non-PLT courses that look interesting:

Fourth Year

For me, there were no interesting courses to follow in the summer. I contemplated doing a project in the TOPPS group, but didn't quite feel ready yet. I ended up enrolling in two courses that were taught on the same days, at the same days, effectively making myself choose between them. I chose physics based animation, which turned out to be a mistake; there were far too much emphasis on blackboard derivation of equations for my taste, so I decided not to see it through early. Semantics & Types and Program Inversion & Reversible Computation were kickass courses (if you don't mind a lot of theory). Extreme Multiprogramming covered enough CSP to make it exciting, but the lectures and programming assignments weren't that great.

Summer 2008

Fall 2008

Winter 2009

Spring 2009

Physics Based Animation (canceled)

Semantics & Types

Extreme Multiprogramming (CSP )

CSP Project (Ocaml library)

(naught)

Program Inversion & Reversible Computation

CUDA Project (the vector scan model)

Advanced Programming

Fifth Year

Alright, canceling Advanced Programming (it turned out it was too similar to the old AP course), I was lacking half a year of courses. I did reclaim 5 ECTS from a great summer course called Types At Work though, and 1.5 ECTS from an intensive 3-day course on Kleene algebra with Dexter Kozen.

Summer 2009

Fall 2009

Winter 2010

Spring 2010

(naught)

Computability and Complexity

Proactive Computer Security

Fritz' course on regular languages

Project (template language)

(continued + XMP)

Cluster Computing

Scientific Visualization

Sixth Year

I am going to spend the last month of my vacation taking the POETS course, which seems to be about implementing 3gERP stuff in Haskell (and optionally Java on Android, but I get plenty of Java on my job). I think it's going to be fun, and I need the much sought after "special report based ECTS points". I will spend (hopefully) the first half year after that on writing my master thesis, and then I'm done! Woo hoo! ... Damn, I'm going to miss it.