I am done with another study period at the Software Engineering program at Chalmers, and I am now starting my last courses for the second year. How time flies, huh? It feels like it was yesterday that I moved down to Gothenburg to start my new life at Chalmers. Anyway, that's a story that will have to wait until a future post. This one is for evaluating the recent study period! How it went, what techniques worked, what didn't, what to try next, and so on.
Courses and attitude
The courses I took this study period were Concurrent programming and Data structures and algorithms. These were both courses that I had looked forward to taking, so I went into the study period with high hopes and a big bag of motivation on my back!
Concurrent programming was sort of a mist to me before I took this course. I knew that shared memory was bad, that you could use the
synchronized keyword in Java to fix it, and that you had to beware of deadlocks and other devious behavior when doing it. That was pretty much it.
Taking this course has greatly increased my knowledge in concurrent programming, but also in computers and programming in general. I now know (roughly) how a scheduler works, what context switching is (and why too much of it is bad!), how concurrent programs aren't the same as parallel programs etc. Even though the course was pretty boring overall, I am glad that I took it, and I think that what I learnt will be of great use for me in the future.
During the course we worked a little bit with the programming language Erlang -- a functional language developed at Ericsson in the 80s that allows for extremely fault tolerant systems with excellent concurrency, using lightweight isolated processes communicating with messages. This was a really fun and a great learning experience. Learning the basics of Erlang will definitely help me later when working with functional programming and distributed systems.
Even though I learnt a lot from the course, I feel that it focused too much on things that I probably won't use again, ever. Sure, it is great to know about low level algorithms for how to manage critical sections and how to draw state diagrams, but I would much rather have spent more time learning how to build robust, concurrent systems.
Data structures and algorithms
This was a course that I had been looking forward to taking for a long time! I love problem solving, always have, so algorithms feel like a natural fit for me. You can often utilize data structures to make algorithms more effective, and problems easier to reason about, so I was eager to learn more about it!
Just prior to this study period I had an interview for an internship at Google, and during the weeks leading up to it I studied a lot. Mostly data structures, but also some algorithms and some concurrent programming. This lead to me knowing a little bit about everything that was included in the course before it even started. I had hoped that the course would give me some deeper knowledge about data structures, since the knowledge I accumulated when studying for the interview was pretty shallow. This turned out to be wishful thinking, and the course pretty much didn't introduce anything that I didn't already know. This was a little disappointing, but hey -- what can you do about it? There are other students that didn't have as much prior knowledge as I did, and their needs have to be accounted for.
Before going into this study period I had decided on a few things that I was going to try. They were:
- Stay up to date with the courses during the entire study period.
- Take better notes during lectures.
- Read the course books.
Previously I have been pretty bad at following the courses during the course of the study period, which has led to me having to learn a lot of stuff during the last week before the exams. This study period I decided to try my hardest to stay up to date with the courses during the entire study period, so that I wouldn't find myself in the same position again.
One thing that I am notoriously bad at is taking notes at lectures. I have read a couple of articles about how to take effective notes, but I haven't made any real attempt to actually learn how to do it properly. This study period, I would focus on getting good at taking notes!
Since I started studying at Chalmers I have probably not read a single course book fully. I have tried to keep up with the book in math courses, but I always end up just doing the exercises and skipping over the preceding sections that handle the theory. I think books are great though, and I think reading is a phenomenal way to learn about stuff. That's why this study period I would try to keep up with reading the course books during the study period.
How did it go?
So, how did it go? Did I manage to stay true to my mighty goals, or did I forget about them as quickly as Microsoft's Tay bot went crazy on Twitter?
Stay up to date during the entire study period
In both courses I felt that I followed along with the content during the entire study period, so this goal was actually a success! I went to all lectures (okay, I might have missed one lecture at the end of the study period), and tried to stay focused during the lectures. A few things that helped me with this was:
- Blocking time consuming web sites like Hacker News, Reddit and Facebook.
- Seting my phone to silent, and being careful not to look at it!
- Summarizing lectures verbally with someone shortly after the lecture (ideally the same day!).
I am not going to go in to detail about these things here, but you can expect another blog post shortly where I talk about some of these things.
Take better notes during lectures
I probably took better notes this study period than I have ever done before, so this was also a success!
During the study period I developed a system for taking notes on my computer that I felt really helped me to focus on the lectures and to better remember the content. I also put my notes in GitHub, both in order to keep myself accountable for taking good notes (I don't want people on GitHub to read my notes and think I am a retard), and to be able to share them easily with friends. I am going to write more about this in an upcoming blog post, so stay tuned!
Read the course books
Well, you can't expect to succeed with all your goals at once, can you? Honestly, this one wen't pretty bad, and with pretty bad I mean that I almost didn't open my course books at all during the entire study period. Why did this happen?
First of all I would like to mention that I have actually started reading a lot more now than I have before, which is good! However I have mostly been reading fiction, and I have done this before going to bed at night. I considered reading my course books instead before going to bed, but I think fiction is better for me when trying to calm my mind after a long day in school.
So, if I can't read my course books before going to sleep, when am I going to read them? Exactly. I don't know. The main reason (at least what I think) for me not reading my course books is that I haven't set aside time for reading them! If I am going to succeed with reading my course books, I have to go out of my way to set up time dedicated to reading them. Otherwise it won't happen. This is something that I will have to take into consideration in my upcoming courses if I want to succeed with this goal.
Even though I didn't read my course books, I still felt that I stayed up to date with the course. This got me thinking -- maybe it is not actually worth the time to read the course books? Why waste time on it if I feel that I already know enough about the course? Though I still feel that a lot can be learnt from reading the course books, so I will probably still continue to try to read them more.
This study period I spent a lot of my time doing laborations together with my lab partners. This stole a lot of time from my individual studies, and I almost didn't do any individual exercises at all during the entire study period. This is something that I will need to keep in mind for the next study period, since I feel that I often learn best when sitting alone with a problem.
I went into the study period with high hopes and a big scoop of motivation, but by the end of the exam week I had lost almost every ounce of it. I had four days between my two exams, but I ended up only fully taking advantage of maybe two of them. I had no motivation, I just couldn't get myself to study. Luckily, I regained some of my motivation the day before the exam, and was able to study as much as I needed to feel fairly confident about passing the exam with a good enough grade.
I think that this loss of motivation occurred because I didn't do enough fun stuff outside of school during the study period. Especially because I didn't program enough. Working with programming is ultimately what I want to do, not study. I am thinking of going abroad to work for a while next year before starting my master's degree, but nothing has been decided yet. Lately I have also been thinking about taking a part time job at a start up next year, but we'll have to wait and see what happens with that.
So, what will I bring with me from this study period?
- Program more. If I don't program I lose all my motivation, so I'll just have to set aside time to do some more programming!
- Do more exercises by my own. This study period was dominated by laborations, and I didn't sit down by myself to study. Think about this the next time!
- Try to set aside some time for reading course books, but don't kill yourself if you don't. Course books can be great, but they're not essential. If you have time, read them. If you don't -- hey, it's no big deal.
- Enjoy life more! College is about more than just studying. Make sure to take some time off once in a while, to do things that you enjoy!
That's everything for today. This post was mostly for me to get a few things out of my head, but if you found it useful I am happy to have been able to help!
Until next time.