Sander van den Oever
Sander van den Oever
Computer Science student
Track: Software Technology
Interests: Software (Web) Engineering
Occupation: PHP Developer
Sander van den Oever
It has been a while since the last blog. I planned on writing a blog around the Christmas break, but I was occupied with some of my courses. Last Friday I had the last of my exams; Behaviour Change Support Systems. That exam concluded the second quarter of this year. I wanted to highlight a couple of things that kept me busy during this quarter.
Behaviour Change Support Systems
This course was about building applications that focus on changing / learning behaviour. To understand the concepts here we learned about many psychological and behaviour related models. During the course we had to design our own system so that we could apply the theory in practice. My team worked on an application that would motivate people to take the stairs instead of the elevator. This sounds fairly simple, but there are many things that you should consider when designing such an application. The course follows the four stages as in the design strategy as discussed by Wendel (2013, O’Reilly Media); understanding, discovering, designing and refining.
Finished, at last. I finished the last lab assignments and we learned the last theories behind garbage collection, register allocation, parsing algorithms, etc. The exam was pretty tough, I didn’t manage to finish in time because we had to write a lot of (intermediate) results. I hope that it has been enough to pass the course.
Data Science for the 99%
If I’d be able to recommend any course, I’d definitely recommend this one by Felienne Hermans. The MOOC is not too interesting for Computer Science students, or well, it’s fairly easy probably. But the project makes the course really interesting. Together with some of my fellow students we’ve built a visualisation of the Master enrolments data. The application has been built using a Lumen powered API and a simple, Bootstrap styled, Plotly.JS powered HTML page. Using the dynamic visualisations one can easily get an overview of all the data that normally gets presented from a huge Excel sheet (thousands of entries that is). The visualisation is useful for the marketing department, which liked it very much. They even said they might want to show it to the Executive Board, in which case we could present it ourselves to the board. Anyway, I was very pleased with the outcome of this project.
Next to several side-projects I’m also a volunteer for the CoderDojo Nederland organisation. We organise coding events for children from 7 up to 17 years old. They can learn how to build their own website, game or robots free of charge. Each month I help organising one of the so called dojo’s. It’s really fun to help these kids with getting started, explaining the basics, and see what they end up with when they try a bit on their own. Delft also has a local CoderDojo group (https://coderdojo-delft.nl). CoderDojo is an international initiative so chances are that there’s a CoderDojo group near you too.
So, that’s (part of) what kept me busy in the past quarter. Next quarter there will be two new courses for me, while I also assist in the Software Architecture course that I took last year. The countdown has started,.. only 4 more courses until I have completed them all. The last (minor) thing to do then is the Master thesis project, more about that in a future blog.
By now we have reached the end of the first quarter. Next week the new quarter will start, with some new courses. But let me give you a summary of the past quarter first;
Mining Software Repositories
This turned out to be a really tough course. Initially we were a group of 4 (2 girls, 2 boys). Then one of the girls left unfortunately, got replaced by another girl, who left as well (both did not manage to keep up with the speed/level of the course). So in the end we were a group of 3, where we had to perform a tough project that was based on 4 students. From a given list of papers we had to pick an interesting one; this paper would be the basis of our own paper that we would write during the course. From the selected paper we should try to create an extension or replication study. In our case we picked the paper by Bird et al. called “Latent social structure in open source projects“. We had to perform a research, which included the analysis of several open source projects’ repositories. Thing we had to do as well were the formulation of research questions and our hypotheses, statistical analyses, critical thinking, etc. Next to our own paper we had to review the papers of some of our peers. All of this, put into a tight (frequently changing) schedule, was quite hard to manage. Still, I think this is a really interesting topic and you’ll learn a lot about writing scientific papers and performing the required research. We got some really helpful feedback there from Dr. Bacchelli, whom we met a couple of times during feedback sessions.
Seminar Programming Languages
The other new course that I took was a seminar. Within the Computer Science master you’ll have to pick either a seminar or a literature survey. I choose to do the seminar. Within this seminar we had to read scientific papers on meta-programming twice a week. We met twice a week, where we had to read and summarise the papers upfront and during these meetings we would discuss the papers. Although I felt kinda lost in many of these meetings (the level is quite high) I learned a lot (also on reading papers). Some of the papers were really easy to understand, while others even confused the lecturer. Due to the size of the group (10 students approximately) it was really nice to have discussions about the contents of the paper. We were graded on our input into the discussions mostly. It took a lot of time to grasp the message of the papers, but in the end it was totally worth it; I now know more about which direction I want to go with my thesis.
The course is pretty much the same as last year. The second part of the lab-work was different though. The Programming Languages group introduced NaBL2, which replaced NaBL that had been used in the past. NaBL2 is the name binding language that resolves name occurrences to declarations and similar stuff. It’s part of the Spoofax workbench. NaBL2 is brand-new so the documentation is still lacking, which put some additional challenges in the assignments. Last year, I didn’t visit the labs (conflict in my schedule), this year I tried to prepare before the labs and that way I could ask for assistance when I got stuck. I keep wondering why I do not visit these labs more often, I got some detailed explanations on how the (partially or undocumented) stuff works, I guess it’s because I tend to be a bit lazy. 😉
Dinner with the COO and CIO of ING
Remember the ING 24hCoding Hackathon that my team and I won last year (hint; this blog)? Well, we finally collected our prize last week. We were invited to have dinner at the Amsterdam Harbour Club with Peter Jacobs (CIO) and Bart Schlatmann (COO). You might expect a really formal dinner, but actually the opposite was true. They were really interested in our educational background and our personal interests. We talked a lot about their student lives “back in the days” (which is not that long ago), their experience with studying in the USA, their daily jobs, opportunities at ING, and much much more. It was a really awesome experience to meet and get to know them.
Last weekend (18-19 november) I’ve participated in the Hackergames. Within 24 hours we build the “Uber for package deliveries”; a nice API accompanied with a nice (prototype) Android app. Although we did not win this time, we had a lot of fun, pizza and drinks. Oh, don’t forget about the free karting from midnight to 3AM. Really awesome. 😉
What’s up next?
The second quarter is about to start. Starting next week I’ll be following Data Science for the 99% and Behaviour Change Support Systems next to Compiler Construction (which is a semester course). Next to that I’ve been asked by Rafa Bidarra to assist in a Computer Science minor course, so I’ll be guiding and assessing minor students too. In the next blog I’ll try to give you an impression of the new courses and happenings, stay tuned!
So, yeah, summer break is over *sadface*. After seeing France and Mallorca we’re now stuck in the lecture halls again, which ain’t that bad considering the weather of the past few days. 😉
So this quarter I will be following three courses;
- Compiler Construction – the course I took last year but which I had to drop halfway because I did not invest enough time. This year it’s easier as I’ve seen all material already. So I can try to focus more on the lab assignments. The first part I do not have to hand in, as I completed it last year already. However the second part I failed last year, so I’ll have to re-do that one (and the third part which I did not even start). So far so good, but it’ll get more difficult when the second/third parts will start.
- Seminar Programming Languages – within this course we have to prepare papers which we will discuss during our meetings. Twice a week we gather with all students and the teacher (group of approx. 12 people) and we discuss the contents of the papers. I can tell you, some papers are really hard to follow/understand.
- Mining Software Repositories – within this course we learn how to analyze repositories (such as Git/SVN repositories) or related data. This analysis can be used to find relations between (e.g.) the experience of a developer and the number of bugs (s)he introduces. This course requires a lot of time, assignments are big and are close to each other. So far we are doing a decent job however.
How to.. prepare for Delft?
When working on group assignments in Delft it is inevitable that you will work with other students (from different countries/bachelors). You really notice the differences when working together. In my experience newstudents often (definitely not always) have way more specific knowledge on subjects than students that followed the Bachelor Computer Science in Delft. Delft tends to provide a broad foundation of knowledge which enables you to learn specific stuff more easily. I do see some students (either new or not) struggling with some stuff, so what stuff is useful to be familiar with when you want to follow this master? I’ve created a small list below;
- Java / Python / … – it’s always good to know more languages. It’s best if you master at least one language. You can follow some of the courses/tutorials that are offered on many sites like e.g. Codecademy.
- LaTeX – some basic knowledge of LaTeX can be really useful. Many students prefer to use TeX to write their papers and reports. There are a couple of online TeX environments (like ShareLaTeX and Overleaf) so using those you won’t need to install anything on your local machine.
You can definitely learn all of this while studying here, but knowing some of this upfront can really help you and ease the courses for you!
Well, that’s been quite a quarter. Apologies for the late blog, I’ve been very very busy with my courses and my TA jobs. The courses were awesome and supervising all my teams was also very pleasant experience. I had to sacrifice a lot of my spare time, but in the end everything is finished. That means that it is finally time for the Summer Break. 😀
Multimedia Search and Recommendation
Within Multimedia Search and Recommendation (MMSR) we learned the basics of Search and Recommendation techniques. This course was brand new but the teachers did an awesome job nonetheless. The course consisted of three weeks of common lectures where we would all gather the same foundation of knowledge. After that we had to pick one of the two offered specialisations. We could pick one from MMSR Analytics and MMSR Systems where Analytics is more about the theory and Systems more about the practical aspects. So that’s how we learned about compression techniques, fingerprinting of media, recommendation models, video streaming, etc. Next to the lectures there was a big project. I’ve worked on the celebrity contest by Microsoft. Together with my teammate, Shirley, I have build a Python application that firstly detects your face from a video stream (webcam) and secondly recognise that face. We had received a huge dataset of celebrities that we should be able to recognise. Because of the time limitations within the MMSR course we had to narrow this down to a subset of approximately 100-200 celebs. We trained some recognition models with this set. In the end we had an system where fellow students, teachers, friends, etc. could sit in front of the webcam and see which celeb was most similar to them (according to our system that is). Really fun experience which was awarded with a nice grade (9.5 / 10).
Sidenote; one of the teachers of MMSR (Cynthia Liem) was awarded the ‘Teacher of the Year 2016’ award for Computer Science (see also this post on Facebook).
Language Engineering Lab
The other course I took this quarter was the Language Engineering Lab. Within this course we had to define a chosen language within the Spoofax workbench in teams of two students. I’ve worked on the ‘RaSDF’ project. The aim of this project was to allow for transformation of Rascal (competitor of Spoofax) grammars into SDF3 grammars (the syntax formalism that is used by Spoofax). This was really tricky but also provided us with a lot of experience in the field of Language Engineering. Spoofax is also the tool that has been used in the Compiler Construction (CC) course for Q1. Next year CC will be given by Eelco Visser (also the teacher of this lab) so things might change a bit, but I’m fairly certain that Spoofax won’t leave the course. If you plan on following this course I strongly recommend to follow CC as it will help you to understand Spoofax properly before this project. Myself I had some struggles with some of the components that I had not studied enough yet during CC.
The project I’ve been supervising was the second-year bachelor course called Contextproject. This project tried to emulate real-world projects as much as possible, including the different stakeholders. As mentioned in my previous blog I was a teaching assistant (TA) for both the Computer Games and Virtual Humans contexts. Within Computer Games the teams had to build a game that supports the Oculus Rift (every team borrowed a Rift for the entire quarter actually!). Because there was a Java requirement they had to use jMonkeyEngine (remember the name?) for the development. Unfortunately the documentation of that engine went down in the first or second week of the project until the very last week of the project. Although Rift support for jMonkeyEngine is not as trivial as we had hoped initially, we were really pleased with the games that resulted from the project. One of them was a virtual ‘Escape the Maze’ game. This game even won the ‘Best project of Contextproject 2016’ award.
The other context was a bit chaotic, teams struggled with getting started and they had troubles with the existing codebase. Another challenge that the students had to face was that all teams in this context had a shared component which they all had to work on. Although it’s not the most exciting part of the TA job, it is very useful. You learn how to push your groups to work, you learn to detect potential problems, etc. Useful experiences whenever you are to work in (or guide) a group project in future.
Viva la France! 😀
Friday, 1st of July were the final presentation of the Language Engineering Lab. After we presented the ‘RaSDF’ project I went home, packed my suitcase and left for a nice holiday in France. I could really use that free time at last!
Enjoy the summer break, I might post some stuff during the break, but no promises. 😉
Cool stuff! Our chapter for the DESOSA book has just been published. The course staff merged all different chapters into a single book. For this they have used GitBook. You can see the current version of the book at https://www.gitbook.com/book/delftswa/desosa2016/details. We got some really good grades for our chapter (on youtube-dl) so we were really pleased with the final result. Next to that I also had the final assessment for Software Re-engineering. We had to give a presentation about our refactorings and we were questioned by our professor. We scored an okay-ish grade, I hoped for a better result but since I could have spend more time on this course I don’t think that a higher grade would be fair.
Yes, 4, already! That means a couple of things. First of all; new courses! This quarter I will be following the Multimedia Search and Recommendation (MSSR) course. It’s a core subject and also a brand new course. The lectures tend to be a bit chaotic as the teachers are still finding out what works best, but they are also really open to suggestions on how to improve. That’s actually another thing I like about TU Delft, you can just discuss basically anything with the teachers/professors. I’ve experienced that within other universities there is a more hierarchical system, while in Delft we tend to work / communicate like everyone is equally ‘ranked’. Of course this depends on the university and even the specific teachers. Anyway, within MMSR we gain knowledge on different search and recommendation methodologies. After a common core we could choose one of the specializations; MMSR Analytics or MMSR Systems. I liked the description of the Systems track more, and I’ll try to give an update on that specific track soon. Next to MMSR I follow the Language Engineering Lab. As I have followed the Compiler Construction course this was an easy pick. Within this project me and my teammate have to define a compiler that transforms Rascal grammars into the Spoofax grammars. Both Rascal and Spoofax allow you to design your own languages. In order to transform one of the grammars into the other you need to have a deep understanding of the different aspects of this language.
The remainder of my time I will be using to assist several teams within the second year Contextproject. This project is a testdrive for the final Bachelorproject. The Contextproject, however, does offer more guidance than the Bachelorproject. I’m involved with two different projects, each of which have several teams participating. I assist Rafael Bidarra with his Computer Games context and I assist Alberto Bacchelli with the Virtual Humans for Serious Gaming project. For the Computer Games context I need to make sure that the students are able to finish the products, with enough features, while the deadline is still realistic. For the Virtual Humans context I am a Software Engineering TA. Rather than supervising the ‘context’ I need to ensure that the delivered products are of good quality, SCRUM is being applied properly, etc. It’s really fun to guide such projects and you can even learn a lot while doing so.
3,.. 2,.. 1,.. Summertime!
Back in the days, when you had holidays throughout the entire year,.. I honestly miss that, a lot. But since we are in Q4 that means that summer is only one quarter away now!
Last blog I concluded with a small part on the ING 24H-Coding hackathon. For those of you that do not know what the/a hackathon entails; together with your team you are supposed to deliver a product within a given timeframe. In our case we had 24 hours (non-stop) to build an omni-channel solution for ING.
Around 12:00 I gathered with 2 other team members at Delft central station. We took the train to The Hague where the latest member of our team joined us. From there we travelled to Amsterdam, via Gouda because of some disruptions. When we arrived at Amsterdam Bijlmer ArenA (train station) it was only a 2 minute walk to the event venue. At the entrance they scanned our tickets and we were provided with all necessities like a small towel, sanitary kit, t-shirt and some information + a map of the location. We basically went straight to the main hall (the concert hall) to check out our working space for the upcoming 24 hours. ING arranged a secondary display per team, a router with a fast internet connection and power outlets (pretty useful when coding 24 hours).
When we had installed ourselves we went to check out the remainder of the location. In front of the main hall there was some kind of lounge where you could get some (hot) snacks. Around 18:00 dinner would be served here from various mobile food trucks. On the first floor ING placed some resting/entertainment facilities; table soccer, a mechanical bull, game consoles, air hockey, etc. There was a (limited) sleeping facility available at the second floor. ING did a awesome job with the organisation of the event, we had unlimited (free!) food and drinks, there was an oxygen bar, guidance for the student teams, you name it. We had a lot of fun at the event (played a lot of table soccer and air hockey).
Despite all the fun and the lack of sleep (except one of us who tried to sleep for a few hours), we still had to fulfil one task; building the product. We submitted an idea where the current ING app would be extended; we would add the ability to create a payment ‘request’ by means of a QR code. These QR’s codes could be generated on a webshop, mobile phone or they could be printed on a poster for instance. Scanning the QR code then would open up the ING app where you’d only have to approve or decline the request to pay (hence the name of our project; ScannING). At the end of the 24 hours we had to pitch our results to (part of) the jury. They selected the best team in each category. Against our expectations we were chosen to be the winner in the student category. Of course there was a reward too; we will have a fancy dinner with two board members of ING in the near future.
End of Q3
Apart from the hackathon I did do some other stuff as well in the past month. I finished most of my courses; my team and I have handed in our chapter for the DESOSA book (I’ll add a link when it has been published) and we finished our refactoring of the jMonkeyEngine project. One of the benefits of living in Delft is it’s connection to The Hague and the beach at Scheveningen. Last week I went there to have some delicious ‘Kibbeling’ (fish) at Simonis. Concluding with a late walk on the beach it was an awesome start of the weekend. Whenever you are in Delft, don’t forget to go there. You can go to the famous ‘Pier’ (which re-opened recently) or just walk at the beach. From Delft to Scheveningen takes you approximately an hour by tram (or you can go partly by train, which will be a little faster I guess). Next quarter I will be assisting with the second-year bachelor course called Context project. I still have to decide which courses I will follow next to assisting, but those will probably be the Language Engineering project (by Eelco Visser) and Web Data Management. I’ll update on the courses later when I’ve made up my mind, for now: see ya!
The third quarter brought me some new courses and other activities. New courses I am following are Software Architecture by Arie van Deursen and Software Re-engineering by Andy Zaidman. I’m also participating in the ING hackathon next week, which I’ll talk about in a bit.
Let’s start with discussing Software Re-engineering a bit. This course focuses on the way we look at existing software systems. How do we deal with a large system that has been developed over the course of several years? How can one efficiently enhance the structure of such a project, while assuring that everything still works as it is supposed to work? We have learned about the S.O.L.I.D.-principles (which some of you might be familiar with already) and how to refactor violations of these principles. We have learned about testing, how to develop tests to tests your hypotheses, refactor, and test again. Our knowledge was tested on a real-life example. Together with the other students we had to identify violations of several principles and following on that deliverable we had to actually refactor these violations. The system that was used this year is jMonkeyEngine. jMonkeyEngine is a 3D game engine written in Java. We have used several tools like inCode, CodeCity and other tools like code coverage tools to find all kinds of flaws and violations.
In the Figure 1 you can see a visual representation of jMonkeyEngine as build with CodeCity. CodeCity renders your code as a ‘city’ giving you a quick overview of the project. Packages are being transformed into districts, classes are transformed into buildings where the properties of a class determine the properties of these buildings. For instance, one can choose to use the #Lines of Code (LOC) metric for the height of a building and the number of methods metric for the width of the building. One can also use colours on the buildings, to indicate (for example) the number of external dependencies. Classes that have a lot of methods or classes that are being referenced a lot by other classes might be suffering from the God Class-violation. These classes would (if using the right metrics of course) be noticeable fairly easy (big skyscrapers).
Software Architecture is a course taught by Arie van Deursen. He uses GitHub for all course material and Slack for communication and announcements. Within this course we had to pick an open-source, GitHub hosted, software system that has been active recently (e.g. approximately one pull-request per day minimum). We, my team and I, have decided to work on the youtube-dl project. Youtube-dl is a command-line tool that allows you to download video’s from over 700 (!) supported websites. Within this course we had to analyse this system (it’s internal structure) and write a report about our findings. Next to that, the fun part of this course in my opinion, we had to think of potential contributions to the project. The course actually required us to make some contributions. We had to contact the development team and try to get our contributions merged into the project. In many cases this involved rather simple documentation fixes, but there have been contributions that add or fix actual functionality as well. The course staff wanted us students to use Slack for all communication. This way students are able to help each other efficiently and the staff was able to keep track of the group process. Read more about this course and its setup in the blogpost by Arie van Deursen, which can be found on his website: www.avandeursen.com.
The reports of our findings we have to bundle within a chapter. From all teams (all delivering their chapters) a given number will be selected, bundled and published as the DESOSA 2016 book. An example of the previous edition of the course can be found at delftswa.github.io. We are currently reviewing chapters written by other teams, while we are still trying to contribute to the youtube-dl project. Examples of (our) contributions are #8785, #8682 and #8680. For our chapter we have created several architectural views, for example the one below, depicting the contextual view (stakeholders and other related tools/companies).
Together with some friends I will participate in the ING 24H-Coding event in Amsterdam. Basically all kinds of teams participate here in building prototypes for their ideas and pitch them to ING. This years theme was about building a omnichannel software solution. Within that context we are free to think of anything we like. The event will be held in the Heineken Music Hall, where food and drinks are included, we only have to bring our laptops. There are not that many student teams participating so I’m really curious about the outcome of our team/idea.
First of all; happy new year! I hope you’ve enjoyed the holidays. Back to reality, sadly, exams have arrived. As mentioned before I have one exam, Compiler Construction. This is a tough course, but if you keep up with the lectures and assignments it should be doable.
I’ve mentioned my project for Functional Programming before but I’ll give a bit more detailed information. For this course (which is a MOOC basically) the participants at TU Delft have to carry out a project. Basically the assignment was a one-liner describing what has to be done. Our project description was;
Build an alternative for firebase from scratch (inspiration: search quora for alternatives)
There are some really useful things I’ve learned during this project;
- If you use some external libraries: use a dependency manager, it’ll save you so much time in the end.
- Automate whatever you can, whenever it is useful. If you run a compile command every time you save your code for instance, you might want to set up a watcher that automatically compiles the code on change.
- Use a decent editor, get to know it; it saves you a lot of time to know to the shortcuts and to actually use them. For instance I use editors by JetBrains (IntelliJ, PhpStorm) where you can quickly navigate through your entire project using the double-Shift shortcut amongst various other features.
- Talk before you start implementing; we worked separately in the beginning. When we had to connect our different components it turned out that basically all of us used a slightly different version of the JSON format (used for internal processing). We had to adapt to make it fit again. If we had agreed on this upfront this wouldn’t have been an issue (necessarily).
Of course IntelliJ is not the only editor, alternatives like Eclipse, Sublime Text or any other editor can be just as fine, it’s all a matter of preference and setting up the editor to your preferences.
You learn best by doing, projects like this one prove this over and over.
So Christmas is almost here. The first semester has almost passed, studying for the exams starts, but first we can enjoy our well-deserved holidays. One thing I really miss from high school; holidays. Where you had several back in high school, we only have two (well, three) holidays at the university. And if you are behind, potentially even less. From the end of the summer break straight to the Christmas-break (2 weeks) is a long period, but it’s finally here.
That also means I had to do some shopping. Delft is really accessible, which in this case is ideal. Through Delft central station you can go to anywhere like Rotterdam, The Hague (Den Haag) or Amsterdam within no time. Myself I took the tram to the centre of The Hague, where you can find a lot of stores. During the weeks before Christmas it’s insanely crowded in most of the shops. I’ve been able to take another look on the Apple Watch at the Apple Store, I’ve seen several cosmetic shops (where the waiting lines continue outside!), places to eat and a lot more.
How about the courses? Most of them ended, more or less. There are some wrap-up lectures for some Q&A, but other than that I won’t have too many lectures anymore until the exams. I only have one exam, Compiler Construction. I failed one of the labs so I had to arrange something like an extra assignment, but the professor was really nice and offered me the possibility to pass the course this year, but I have to pass the exam first. So, I’ll be studying a lot for this course the upcoming weeks. Next to that the Functional Programming MOOC has ended officially. Only for TU students there’s the project that remains. During mid January we have to deliver the results and present them to our fellow students. We have a lot of work left, so we need to spend some time in our precious Christmas break.
Happy holidays, and all the best for 2016,
The year is passing by fast already. The exams of the second quarter are coming near, and the winter break is in sight too. In my previous blog I’ve promised to tell a bit more about the courses I’m following. At this moment I’m still following Compiler Construction, Web Science and Engineering and Functional Programming. I was not able to complete Advanced Algorithms. This course, known to be tough, was too much together with my courses. I’m not sure whether I’ll retry next year or whether I’ll replace it entirely with another algorithmic course.
Within this course you learn to design and analyse algorithms for (un)solvable problems. Sometimes a problem might not be solvable in every case, but it might be sufficient to solve only a part of the problem to get to your answer. On the other hand, sometimes an estimation algorithm is good enough for it’s application. Reasoning and proving is one of the things we look at in this course. During the homework we had to prove several theorems. The homework is though, but with (or without) support from the Teaching Assistants (TAs) you should be able to complete them. Next to homework there are some practical assignments. These assignments can be done in pairs, and challenge you to apply the knowledge obtained form the lectures and homework. The assignments and homework can be really time-consuming, make sure to plan properly, otherwise you won’t be able to keep up (like me unfortunately).
Compiler construction is a course taught by Guido Wachsmuth. In this course we learn to specify a language in a declarative way. This course uses Spoofax for that purpose, a Language Engineering Workbench developed at TU Delft. As soon as we have specified our languages (we used the MiniJava language for our lab assignments) we learned how to construct a compiler from our definition. Assignments were to be submitted through Github, where they would be graded automatically. Wachsmuth encourages students to start on the assignments early, which is why we could get some early feedback. Handing in our assignments early resulted in a sneak-peak on the resulting grade and some details about tests that were still failing.
Web Science and Engineering
Web Science and Engineering is a course on several aspects of the Web like hypertext, semantic web, social web, etc. We had lectures about several topics, including some guest-lectures by PhD students or others about their research. The course also includes a homework part where we have to dive into the literature. I underestimated the amount of literature research that was required for this course, but I like it nonetheless. In the end we have to write a paper about a subject of our choosing (within the field of WSE of course), this also determines our final grade together with the grade for the homework assignments.
Functional Programming is actually a MOOC (Massive Open Online Course) taught by Erik Meijer. Within this course we learn the basic principles of functional programming. The course uses Haskell to show us several aspects. For students taking the course for credits there is an accompanying project. Within this project we have to implement a system using the functional style we learned in the MOOC. In my case I’ve to build a alternative to FireBase written in Scala. These projects are performed in groups of 2 to 4 students. For Computer Science students the courses starts at a really low level, but as the course progresses they level of the assignments is gradually increasing.
Of course, next to studying there’s a lot to do in Delft. Last week there was the annual ‘Lichtjesavond’. During this night the entire city centre is lit in pretty colors, and the Christmas tree on the Market is being lit in front of a massive crowd of people. There a lot of stands where you can buy random thingies or something to drink/eat. If you haven’t been there yet, I can really recommend it to see it at least once.
For now it’s time to wrap up, I still have some assignments that I need to finish. See ya!