Some of the things I have learnt since my last post:
1. Writing a compiler is hard (but fun).
I don’t know what it was, whether it was the timing of the coursework assignments, the abnormal length of the term, or just people leaving things to the last minute, but what we ended up with was one of the most difficult weeks of the term, as everyone furiously attempted to complete the coursework for the Compiler Engineering module. The coursework involved writing a compiler for a simple programming language (strangely enough), and although it was enjoyable and challenging, it took a lot longer than a lot of us expected. However, as always, ECS came to the rescue with possibly the most luxurious free lunch I’ve ever had; just when you thought there would be no more food, someone would pop up in front of you with a plate of doughnuts. I was unfortunately obliged to eat more than average due to my over average height of 6’5”. That’s a good enough excuse, right?
2. Choosing optional modules is hard (but exciting).
During the Easter break, the system that allows us to choose our optional modules for the following year opened to us. Choosing these modules turned out a lot harder than first thought, as there are a lot more factors to consider than just which ones interest you. First of all you need to make sure you don’t put yourself in a position to get flattened by coursework; some modules require a lot more time than others, so it’s not a great idea to pack these into your schedule (especially with the ever-present third-year project going on in the background). Secondly you might want to consider which ones might be most useful to you when you leave university, depending on which direction you want to go in. Since I’m still a little shady on this particular detail, I just decided to go for a good variety to help me make up my mind on what I liked best.
3. Determining whether one rectangle is to the left of another is hard (this one is just hard).
This may sound like an odd thing to say, and believe me, when I set off to write the algorithm to do this, I had no idea how difficult it was going to be. Writing this was part of what I had to do for SEG (Software Engineering Group Project), and without going into too much detail about why I was doing it (it involved some odd trigonometry – use of the ‘atan2’ function) and some other wacky code. However, the coding is by no means the most difficult part of this module. It’s all about teamwork and time management, both of which are tricky to master especially with lectures and other coursework assignments for other modules thrown in. If nothing else, this module certainly shows just how important it is to follow all the rules of ‘good practice’ when coding, such as commenting on things well and naming variables properly. It makes everything so much easier when it comes to looking at someone else’s code.