A Year of Studying Computer Science 🏫
September 01, 2020 • 7 min read
It has been a full year since I started my computer science and engineering studies at university. I study abroad, in the Netherlands. It was an eventful year, to say the least, and I feel it is time to reflect on the experience as a whole. If you're interested in what university and studying computer science is like, this should answer some of your questions.
Motivation for university 🐵
Technology is definitely an industry where obtaining a degree before you start working is optional. There are so many great online resources that can help you become a valuable contributor without any formal education. Many people choose this path and break into tech without ever going to university.
I also had the opportunity to skip the formal education machine as I started working in tech before university (you can read a related blog post on how I started working in tech while studying in high school). But why did I decide to go the traditional route anyways? It came down to a couple of simple reasons that mattered to me.
I thought that university would allow me to:
- Meet great, like-minded people to collaborate with. 👏
- Gain knowledge about complex subjects, experience academia. 🎓
- Commit to a challenge and step out of my comfort zone. 🌠
All of these can be achieved by working, but I felt that university abroad would be a bigger challenge.
What university is like 👨🎓
I enjoy tertiary education much more than the early years of education. It may be recency bias or it may be because the subjects that are taught just interest me more. The subjects dig deeper, require more focus, and previous knowledge.
Computer science is a hands-on program compared to other, more theoretical studying options. It incorporates theoretical lectures and reading with practical assignments, projects, and coding exams 👩💻. I definitely prefer having an infinite amount of options to solve a coding problem compared to a single correct answer (though there are traditional theory exams too).
The 1st year was organized in 4 quarters where each of them had 3 different courses. The courses require a lot of work and focus, the pace is fast and it's easy to fall behind so you have to work on assignments, exam preparation, and projects pretty much constantly.
What I really enjoyed was the different extracurricular activities like meetups, talks, and lunch lectures. The lunch lectures were by far my favorite 😋. It's a short event where a company or organization comes to present a topic of their choosing, the catch being that the company buys the students that come by lunch 🍔🌭🍕. It's a win-win situation for both parties. Notable guests during the year were Facebook, Google, ING (a dutch bank), and more.
What they taught us ✍
The courses were split into categories and were:
- Software 👨💻
- Object Oriented Programming
- OOP Project
- Software Quality and Testing
- Models 🔺
- Reasoning and Logic
- Algorithms and Data Structures
- Mathematics ➕
- Linear Algebra
- Probability Theory and Statistics
- Systems 🕍
- Computer Organization
- Computer Networks
- Data 💾
- Web and Database Technology
- Information and Data Management
If I had to choose a favorite course it would probably be Algorithms and Data Structures, because it was extremely challenging but it was taught well and it was rewarding to finish it.
This doesn't mean that I didn't like the other courses - quite the opposite. I thought all of them were pretty great and taught me things that maybe I wouldn't have otherwise learned.
Now a quick note and thoughts about all of the courses in general.
The courses in this block are taught in Java and I'm not a huge fan of the programming language 😅. But the concepts are general and transfer well to other languages. The Object Oriented Programming course was meant to bring everyone up to speed and was pretty basic.
The OOP Project course was fun because we worked in groups of 7 people building a full application. I enjoyed the social aspect of it.
Software Quality and Testing was my favorite of the group because of the awesome guest lectures with people working in the industry and the great professor. The testing principles discussed were also extremely useful 🧪.
The courses in this group were by nature pretty theoretical, especially Reasoning and Logic.
Algorithms and Data Structures mixed in a ton of theory with implementation exercises. I've always enjoyed solving algorithmic problems and this course was just doing that over and over again. It's super rewarding to implement a complex structure or algorithm that helps you efficiently solve a tough problem, that's why I liked it so much.
Mathematics is pretty self-explanatory. If you want to work in tech you don't need to know or even like math, but if you want to study computer science be prepared to have a little math sprinkled in your studies.
Besides, Calculus, Linear Algebra, and Probability Theory and Statistics are useful in fields like computer graphics and data science.
Computer Organization was a fun systems course. We were taught how the hardware in computers works, the history of how we arrived at the technology we have today. We had assignments to create different applications and even games using assembly. Assembly is a programming language that is extremely close to the actual operations the CPU executes when running programs. Writing programs with this language rarely a practical choice today, extremely tedious, but it was fun as an exercise.
This is what a part of a simple assembly program looks like:
Computer Networks taught us about the innovations and technology that gave us the internet 🌎! It was all about how we built amazing things just by piling layers of abstraction on top of each other. At the lowest layers, it's just electrical signals or radio waves, but we rarely think about how a high definition movie comes from a Netflix server to your phone screen. It turns out that a ton of brilliant people had to solve countless issues and problems to make that magic happen.
The Data group was all about how we store data in databases. The technology around storing ones and zeroes is quite fascinating when you start looking into it.
In Information and Data Management we dug deeper into database technology. It turns out that making sure your bank transactions and tweets get saved and safely stored is a pretty tough problem. Especially when you have millions or even billions of users using your applications.
The Black Swan of 2020 😷
Obviously the global lockdowns changed the studying experience quite a lot. All of the lectures were immediately moved online and we finished the year remotely. I missed the social aspect most, but the transition was quite smooth considering the circumstances.
I really enjoyed my first year studying computer science. I definitely learned a ton of things that I wouldn't have otherwise, I met a lot of bright and great people, and in general improved myself and my skills.
I'm looking forward to what the rest of my studies have in store. For now, I'll be learning Machine Learning and Computer Graphics 👀 Super excited about what's next.
Thanks for reading! I hope it satisfied your curiosity.
Be sure to follow me on twitter to get updated about new content! 🐦
Subscribe to not miss out on new content.
Keep up with things amazing things happening in technology, business, software, and the web.
Written by Mykolas Krupauskas. A passionate software developer from Lithuania, currently situated in the Netherlands. Helping people create value with technology.