It's February 2017. Last month was a little bit stressful because it was an ending of the semester. And that of course, means exams! In this blog post, I'm going to look back and think about subjects about what I liked and what I don't.
I've got 5 subjects this semester, one math and four other ones focused more or less on computers.
Data structures and algorithms
Interested topic, fun to learn. We've gone through the most used data structures, such as arrays, linked lists, hashmaps, trees, ... and implemented few different corresponding algorithms. From sorting, through binary search to tree traversing and balancing.
Although it's less common to code everything at a lower level and having to deal with details of implementation, I believe that having knowledge about how things work "under the hood" helps a programmer to think more efficient while solving problems.
Definitely, a subject, that I'm most passionate about. Everything about operating systems and their internal structure.
Practically, we've been looking at the Linux syscalls, and how to use them in code together, to achieve a goal.
We've been programming 3 exams:
- bash script, that uses standard Linux command line tools to parse input, analyze files and make operations based on user input
- Linux cp-like tool, that supported about 18 switches. Using "low-level" system calls to create command line tool in C, to help user manipulate with files and directories
- series of few little programs, that uses standard Linux process synchronization tools, like signals, semaphores, shared memory and sockets. It's perfect way to test your skills and get better at Linux sys-level stuff programming (although, debugging may be a bit fun sometimes)
On the theoretical side of this subject, we've been talking about internal structure and design of modern operating systems. What are key parts and how everything works together, all in depth, to understand everything clear.
Object oriented programming
Basics of object-oriented programming architecture, in Java. Might be a lot of new information for newbies, but as a someone who does code for a living for about 5 years, I really appreciated, that they put the effort into details and more advanced stuff such as design patterns and generics. They are topics that are more advanced, and as I have experienced, a lot of programmers that came out straight from university lacks knowing.
Practically, we've done some game programming, that was designed to show concepts in practice. It's probably the best way to motivate students. Games are popular, ale inner concepts can become massively complicated.
Architecture of computer systems
Not my most favorite one, but still great, mostly theoretical, subject. It was good to listen about computer hardware internals. But, if I had the power, I wouldn't go as deep on the subject as we went.
We also tried to do something with VHDL, but to be honest, it was horrible! Incompetence and lack of skills of those, that should teach use was sad. And that combined with my less interest ends up that I do know about it, I do understand it, but I know that I don't want to do it never ever again. I just simply wasn't impressed.
Numerical mathematics, probability, and statistics
Finally, most hated subject at the school may I say. As it is with every other math subject, 1/3 of students love it, 1/3 are neutral and 1/3 hate it. I, personally, was in the second third, the neutral one (or maybe at the edge between loving it and being neutral with it).
I generally really like math. I did enjoy math analysis, and I loved discrete mathematics (definitely one of the best subjects I ever had). But this semester was a bit different. From the beginning, numerical mathematics was interesting (solving equations is fun!), but as we went to the probability and statistics, my interest went down. It's good to know about it, but I definitely prefer other math subjects.
It's been and interesting semester. Although a lot of time has been wasted, there were subjects that were worth it. In general, I can say that it wasn't that bad. But I'm definitely looking forward to the next semester, which will be more interesting for me since it contains subjects that suit me better.