Reflection on My Fourth Year at KTH
My fourth year at KTH has been a challenging and interesting one for sure. Here is a "short" reflection on the courses I've taken during this time.
IK2218 Protocols and Principles of the Internet
A useful course which I felt gave a good overview of the protocols of the Internet, with some focus on the hardware side of things. I think it is necessary to have some basic knowledge about how the Internet actually works as a programmer, as most programmers will probably have to use some of these protocols at some point. There are not much I would like to have changed about this course off the top of my head, it encouraged continuous learning and had useful lectures. Personally I felt I got a good overview of the area.
DD2380 Artificial Intelligence
I really enjoyed this course, AI is about as exciting as you would imagine it to be. I learned how to implement basic AI and got a better understanding for this rather abstract subject in general. It was a shame our project was somewhat time constrained due to late changes, but the labs of the course were challenging and fun. The course had somewhat strict formalia which was a bit annoying, but I always praise courses which can do without a written exam. The course was also initially intended to include a segment on ethics, I believe, which was cut out due to resource constraints.
DD2440 Advanced Algorithms
A very hard and useful course, especially considering my specialisation in theoretical computer science. The course included a variety of quite different algorithms of varying complexity, which unfortunately led to many of them being skipped over quite hastily. Maybe it would have been better to focus on fewer algorithms to give you more of an opportunity to understand them. The course structure was generally good with homeworks and projects, I especially enjoyed the travelling salesman problem project. I got a chance to expand my toolset of algorithms to use, and even if I don't know them by heart I can always look them up later when I need them. I must say, though, that the number factoring project was ridiculously hard from both an algorithmical and a time perspective, and also gave you a clear advantage if you had a better computer at hand.
DA2210 Introduction to the Philosophy of Science and Research Methodology for Computer Scientists
This is one of those non-technical courses that people typically hate. I believe that it is necessary to have some course which focuse on the art of research itself, even though you could argue that it should be implicitly included in all courses. Unfortunately the course content was rather "fluffy" at times, I would rather have seen focus on interpreting actual research papers. It's hard to say what I gained from this course. Generally I'm naturally talented when it comes to these kinds of courses, so I think I would have needed some more focus on practical methodologies. The abundance of history of philosophy of science felt generally unnecessary.
DD2447 Statistical Methods in Applied Computer Science
This was a strange course, I chose it since it was a part of my Master's track, but I can't honestly say that I learned much from it. This is a shame, since statistical methods are surprisingly useful and interesting once you get to use them in practice. I think one major reason for how little I understood of the course was that I had not studied machine learning beforehand, which felt like a prerequisite. I also believe you need to have taken perhaps one additional course in statistics in order to follow much of what was quickly talked through during the lectures. Otherwise the course structure was good with homeworks and a project, but it would definitely have helped to allow collaboration between students considering how intricate much of the content was.
DD1395 In-depth Essay in Computer Science
Not much to say about this one, I took it to pad out some remaining course credits. I wrote an essay about AI in video games, and as always I made it way too broad in scope. I did however get to read some interesting papers/books on how AI is done in video games in practise.
DD2457 Program Semantics and Analysis
This is a course which felt very in-line with my Master's track. I got a better understanding of how to reason about programs, and also got some tools for doing actual program analysis. It will be interesting to see if I will also get to use these tools in practise, or if they are better served as means of thinking about programming in general. The course structure was great and encouraged continuous learning with small homeworks each week, as well as some labs. Unfortunately I did not do very well at the exam, but as always I'm more interesting in what I actually learned from it.
In theory this would be a very useful course, but the course structure had some major flaws. First, speaking about the content, I felt that the sheer scope of the material covered in the course made it hard to gain any sort of deeper understanding of operating systems. I realise that this course needs to cover much since we have taken no other courses focused on the operating system itelf, but you'd be surprised how complex these systems are and how much things there are to cover. Secondly, I believe that the largest flaw was the lack of examination during the course. The course consisted of one large lab assignment and one exam, and that was all. The lab was very fun and I learned how to interact with the operating system using system calls in C, but I sincerely believe that you need some kind of continuous examination during the course if you are going to have a written exam. As it stood all you did apart from the lab was going to lectures and studying for the exam at the end, which gave you a very shallow understanding of the course content. I did along with an extraordinarily high number of other students fail the exam.
An interesting course for sure, and I would consider it more of a maths course you take for fun. I wanted to take one additional course in maths, and this one fit my schedule perfectly and had some interesting content I had not worked with previously. The course structure was as you would expect from a maths course, with seminars and a written exam, which you could unfortunately not gather any bonus points for. I learned some mathematical models/methods used in classic game theory such as market analysis, and also got to play around with the perhaphs less useful field of combinatorial game theory. I have never been especially talented when it comes to maths, but I have never failed a university maths exam before. Unfortunately I did fail this one badly, and the re-exam even worse, so now I really need to change my approach to learning the material. The downside with this course is the division between classical and combinatorial game theory. These two fields are completely separate from each other and could easily fill courses on their own, so in a sense you needed to learn two "half" maths courses rather than one. Maybe this is the reason that I find it so hard to grasp the content.
DD2448 Foundations of Cryptography
Possibly the most rewarding course I took this year. The course is quite wide, as cryptography is a perhaps surprisingly large field, but I think the course generally did a good job of introducing you to some of the fundamental concepts. The course included much examination, mostly large homeworks with both theoretical and practical assignments, but also a presentation and an oral exam. I worked hard alone and I achieved a good result in the course, something I'm proud of considering the relatively advanced level of the course content. I need to mention that the course was badly managed in the sense that nearly all assignments got delayed, though I'm sure there are good reasons for it. Otherwise I would like to praise the course for giving you a fair chance both if you are more oriented towards theoretical or practical aspects of cryptography, and for its focus on learning the content through its examination. I have gained a deeper understanding for cryptography and computer security, and I have learned how some of the most popular crypto systems work in practise. This knowledge is invaluable going in to the future where it will become ever more important.
DD2300 Program Integrating Course in Computer Science
This course was included as a means of KTH CSC to improve its low "score" gotten from the Swedish Higher Education Authority (UKÄ). This is basically the same course that existed during the first three years, but put in a Master's context. As before, I actually find it somewhat refreshing to get to discuss learning and education in seminars. I believe that it is healty to be forced to think a bit about the education itself, even though most people don't take this course seriously. The added study visit was a nice touch, and I will have to arrange one study visit together with others when this course continues during the next semester.
My fourth year at KTH has been extremely challanging, and I find it very noticable that I'm now studying on an advanced level. I have gained much knowledge, though I'm quite bummed out over now having two trailing courses. I'm certain the next (hopefully) final year at KTH will be the most challanging one so far considering the courses I will take, not to mention the degree project to end it all. My goal is clearly to wrap everything up at the end of the first semester so I can dedicate fully to my degree project/Master's thesis during the second semester, though I am quite pessimistic at this point.
Now I just need to find a degree project to begin with.