My master's degree
It all began in 2011. By “it”, I mean moving to The Netherlands, to study for a master’s degree in Computing Science at Utrecht University. It started as a dream, a distant and blurred image that each and every day became clearer and closer, up to the point of no return: on September 2nd, 2012, I woke up and my bedroom was practically empty, with nothing left but the suitcases and bags packed for the trip… Then at 11:30am I boarded the plane which would take me on a fantastic journey (with no return) to the land of the dutch.
Having already written here on the blog about how daily life goes around here, and about some nice things I have been doing on my free time, I feel the time has come to finally talk about why “officially” I am here: the time has come to talk about my master’s degree program in Computing Science at Utrecht University.
More specifically, I will try to explain exactly what the hell I am studying and I intend to do in the (close) future… The official name of the program I am following is “M.Sc in Computing Science”, with a specialization in the “Programming Technology” study track. The program takes an average of 2 years to be completed, and is a research master’s, which means it is supposed to prepare the student for academic research. Here in The Netherlands there is a very clear difference between “professional” degree programs (which usually take 1 year) and research programs (taking 2 years). Our study track (Programming Technology) includes courses on topics such as functional programming, the implementation of programming languages and environments, optimization, compilers, etc. That is, everything which “underlies” programming languages and the environments on which they run.
To give you a detailed view of what I am studying / will study, nothing better that a diagram showing all the courses I have taken / will take:
In the Experimentation Project (INFOEPCS) and during my thesis, my intention is to do research related to massively parallel programming in a functional style, or the high-level synthesis of hardware using a functional approach. At least, that’s what I WANT. There is, however, still a lot of talking to be done with the concerned professors during the following months… :)
Now that we are talking about time, I will try to explain how the academic calendar works here in Utrecht: Each course is offered during a period of time called a “block”. Each block lasts for (on average) 11 weeks, and each academic year is divided in 4 blocks. And again, an image is worth 1000 words, so there you have it: my academic calendar, with the “schedule” of all the 8 blocks that comprise my master’s program:
As you can see, we have very few free weeks around here… :P Of course, there is summer vacation (6 weeks) and a little Christmas break (10 days). But besides that, there is NO BREAK between any two blocks. There are some “retake” weeks, in the middle of the blocks, in which you can retake exams you eventually missed in the previous block, but those weeks are in THE MIDDLE of a block, which means that most teachers just keep giving you the normal workload as always…
Even so, with all this, I can’t really complain. The work is hard but, at the end of the day, I like what I am doing. The courses and all projects require a lot of effort, but they are also inspiring :) I am keeping a “repository” here in the blog with the files of all courses I have already taken in the master’s program (1st and 2nd blocks), exactly as I did with my bachelor’s.
Among all the work I have done for all courses until now, I can highlight two projects as the most interesting:
Haskell Ants EDSL: Final project of the course “Advanced Functional Programming”, consisted of designing and implementing a Domain-Specific Language (embedded in Haskell), to take part in a Ant Colony Simulation competition. I wrote a post here on the blog about this one.
So, that’s all for now! Until the next block(s)!