A bit more then only studies

It’s been ages since the time when I posted something. Well “blog, blog, blog it all” its not my mantra. Anyway let start it all…

Studies – Background

As I written some time ago, I’m studying Computer Science and Mathematics. It’s a degree program that after 3 years I could be bachelor of Computer Science and then after 4th bachelor of Mathematics.

So why I choose that kind of studies? Computer Science was an obvious choice. Programming is in my blood and for me it’s something more than just a profession or a way of career. I write a first program when I was about seven, but I really pick it up when I was at 14 when I learned how to code in Pascal. I spend many hours studying mainly algorithms, linux system1 and network protocols. Soon2, I knew that it is what I loved to do. Mathematics is a different story. It learn me how to think effectively, solve problems and it’s sometime useful. I also put a lot of effort in it, but it wasn’t and it isn’t my aim itself. I like it, I was pretty skilled at it (at school level), but nothing more then that. So I list potential interesting studies for me:

  • Warsaw University – Mathematics and Computer Science
  • Warsaw University – Computer Science
  • Wrocław University – Computer Science
  • A few other options

I generally have a very simple criteria. Will it learn me something useful/interesting? Is it ambitious enough? So I excluded all universities that will force me to learn C language, that I already know. I also want to be taught things that I can’t learn myself, not only how to use XYZ library in ABC language. After that step most of universities of technology were out. Then it came the list above, which comes down to dilemma: do I want to one of the best in new university or be normal, but rather study among the most talented. When I want to be best, Cracow or Wrocław University were a good choice. Only a few students have probably similar achievements3. In other hand, to get into special degree program on Warsaw University4, finalist/laureate in Olympiad is just a requirement. There is about 30-40 students a year on that field, so it is a truly top level. It want to get out of studies as much as I can, so I decided to choose Warsaw University with its ambitious degree program.

Studies – real life

As I expected, hard work. I’ve got only four subjects, but quite a few lectures and classes in general. I give a few words about each of it:

Introduction to programming (functional approach)

It is an alternative subject who already know how to code and think in “normal” language like Pascal, C or C++. Instead of those well known language we learn ocaml. To give you a little bit of taste, imagine a language without a loops5 and variables, it’s how we mainly work. Because I’m already familiar to programming its relative the easy subject.

Mathematical analysis

A tough one. A lot of proofs, formulas and problems. In most cases if you think that something is obvious, it means that you don’t understand that.

Linear algebra and geometry

Less hard then analysis, but involves much more computations.

Foundations of Mathematics

Mostly logic, set theory, relations etc. Seems to be quite a nice subject, but I gave me final word after exams.

More then studies

Some of my activities: I regularly attend SKMA6 meetings. Plus some algorithm competitions just for fun. I also had to finished quite a few additional task related to my last internship job in ICM. By the way, I’ve coded a PHP back end, and translate image files design to HTML layout for a small website…

More to come on this blog

  • A trip to Cracow.
  • A series about some kind of programing tricks, first one about C/C++
  1. I mean bash, commands, configuration, rather then exactly hacking linux kernel. [back]
  2. In matters of years. [back]
  3. I talk about algorithm competitions, were such a comparisons are possible. (mostly Olimpiad in Informatics) [back]
  4. Jednoczesne Studia Informatyczno Matematyczne (translation: Simultaneously Studies of Computer Science and Mathematics href=”#fn1196968805184″>back]
  5. and ugly gotos ;-). [back]
  6. a catholic student organization [back]
Discussion Join the discussion (1 comment)

Holidays 2007

As any reader of this blog should notice, I haven’t published any post for quite a long time. Well, writing new articles for my blog isn’t my priority. In fact a lot of things happened/changed in my life and I simply concentrate on those things, rather than keeping focus on archiving them as a piece of text.

<digression>
On the other hand it is also an interesting experience to write about some events with a few month perspective. One of the major advantage of this approach is the ability to see consequences of your decision. The another benefit is that I forget(!) about most of details so it is much easier to write about aspects that really matters.
</digression>

Episode 1: After the high school final exam

As I mention in previous post1, the final exams wasn’t exhausting for me. By the time I finish my last exam, I knew that the following holidays will be probably the longest in my life and I don’t want to waste that time. Also I want to try something different, so I decide to look for a job. By the job I hadn’t mean any kind of work, but rather something that gives my satisfaction and sort of experience in software industry. Unfortunately in city where I live it was really hard to find something interesting. Most of the “computer industry”2 companies are mostly doing websites (nothing more than PHP) or repair/sell computers. Nothing challenging, writing yet another CMS isn’t my dream.

So I started to use my own contacts to find something slightly more interesting. One of the common prejudice that I seen was lack of belief that I’m able to write programs effectively (eg. right after the high school! not even in the university). The another approach was a great enthusiasm (eg. Oh fantastic! We have a lot of work for you.), but when it come to details there wasn’t anything to do(eg. we need XYZ, sometime in the future, not now). I didn’t gave up and continue searching.

Some time later, while I was checking a weather forecast at ICM website3, I saw an job advert. I was about participating in Research & Development internship program. For me it sound perfect, unfortunately it has requirement to be the university study. Nevertheless, I decided to give it at try. (…) After a few talks I was hired.

Episode 2: On the canoe

The ICM internship schedule was aligned to university holidays, which means that I had a week free of work before it. I decided to go on canoeing rally, on the river Obra in Poland. This river is not so popular, so it includes a lot of natural barriers like fallen trees, shallows and so on ;-). Those things make a day in canoeing slightly more interesting. I enjoy it really much.

Episode 3: Internship at ICM (Warsaw)

<style type=”less text, more data”>

Generally, my internship was divided into two projects:

  • commercial: R&D project for one of the largest Polish IT company – Prokom Software; unfortunately I’m unable to talk about it in details, because of NDA that I signed.
  • scientific: data mining; analyzing natural text (written by human) using methods based on statistic distribution of n-grams; I’m planning to write separate post about this project.

In scientific project my routine look something like that:

  1. Think.
  2. Implement idea (in C++).
  3. Analyze data using program written in previous point.
  4. Talk with a PhD mentor about results, he also suggest some methods.
  5. Read papers about those methods.
  6. Back to point 1.

As you can notice this is infinitive loop, it is because the project is still unfinished.

I write code for data mining project mostly in C++, with a few minor parts in python and XSLT. A few important things that I learned:

  • A good revision control program is a must. Use it even in a small personal projects. It is good to be familiar with them. It doesn’t really matter which program you use for it, it is important that you commit your work often and control your work. Personally, I use mercurial (hg).
  • Unit tests/automatic tests/test data are necessary. Any programmer (no matter how he is experienced/talented/educated) makes mistakes, especially in large projects. It is crucial to make a lot of tests in automatic way in order to find bugs early and fix them. Never assume that something is correct.
  • Have a to do list. It’s hard to remember everything so keep it on PDA or PC. It is important to track what is important to do and what is optional. Even if you spend 5% of your time organizing your work, its definitely worth it.
  • Time sheets at first could be irritating, but they are efficient to monitor your work. It is information not only for manager, but also for you. Try to be specific (write exactly what you did, not just work on XYZ project). Separate large task into smaller ones and write how much time you spend on them. Be accurate, but not too accurate (15minute aligned is OK). Don’t afraid that you spend some time on silly things like 3h on debugging, sometimes it happens.
  • Rewrite a code only if have a really good reason to do so. A good reason:
    • something is defective by design (it should be extremely rare situation)
    • lack of important functionality
    • using an external library instead of self-written functions
    • code could be much simplified (rare situation, much = 50% shortened or more)

    A bad reason:

    • simplify it, but only a bit,
    • change programming style to my instead of someones else style

    Unnecessary changes tends to lead to new bugs, and are productive killers, so avoid them.

  • If you work on the computer, take micro-breaks (eg. 15 second per ~15minutes). Stand up in that break and make a few steps. Even if you have to spend 8*4*15s = 8minutes a day on those breaks, they could be extremely helpful. Firstly, you have a time to think, whether some components could be reused, or make something easier. Secondly, you will be less tried after a day of work and be productive till the last minute. Of course the breaks are for you, so don’t be afraid to skip one if you are just in the middle of writing a short function.
  • Write clean code, and document your work. Don’t do it later. Do it while you code. Even one-liner comments could be really helpful. Write about intentions(eg. parse data file), not about what you do (sum up X[i] table to variable sum).

Working at ICM was an amazing experience. Not only learned I a lot of about real world programming, but also I have opportunity to challenged with absorbing technical/science problems. Moreover, I was a part of a great team led by incredible smart PhD.

Will be continued in the next post…
</style>

Episode 4: SKMA camp in Tatra

As it were the very long holidays, I also spend some times relaxing in the Slovakia. I went there with a catholic student organization SKMA. I meet a lot of fantastic people and make a lot of new friends. We were mainly hiking in Tatra Zachodnie and Tatra Wysokie. The only nasty thing was the weather, We had experienced a lot of snow in the high mountains(in September!). The photos from this camp are in the gallery.

Epilogue: The beginning of the studies

On the 1st October I started studying mathematics and computer science at Warsaw University.

  1. a long time ago [back]
  2. a bit exaggerated term in this case [back]
  3. ICM – Interdisciplinary Centre for Mathematical and Computational Modelling of Warsaw University [back]
Discussion Join the discussion (0 comments)

After the exams

(this post was posted with a long delay (2 months); note that some of the time references might be broken ;-) )

This month I took several exams at the end of a high school. They are known as “Matura”1 exams. This article aims to describe to foreigners (non-Polish) how they look like.

Polish education system2

Although, There are a few possible ways in pre-university education, one of it is followed by the vast majority. Most of Polish child start formal education with the age of seven and attend to three types of school:

  • Primary school; 6 years; obligatory; Polish name “Podstaw�wka”
  • Secondary school; 3 year; obligatory; Polish name “Gimnazjum”; often mistranslated as Gymnasium
  • High school; 3 year; non-obligatory; Polish name “Szkoła Średnia”

Each of this school ends with a final exam, the most important one is that after high school because depending on its result you may or may not be enrolled to a state university. In Poland state universities are consider to be better than private ones3. Mainly because in order to get into a state university one need to have a really good results from your exams, in private ones just paying an entrance fee is enough in most of the cases.

Preparation to the “Matura” exams

Several months before high school final exams each student could4 choose which subjects is going to take on the following exam. The obligatory ones is Polish language (oral & written), foreign language (oral & written) and one other subject (written only). Each of this part of the exam could be selected on two different level of advance. Students could also take some additional subjects, however any additional subject could be chosen only on more advanced level. Personally, I decided to take following exams:

  • Polish language – basic
  • English language – advanced
  • Mathematics – advanced
  • Computer science – advanced

I don’t have to write computer science exam because of achieving a laureate in Olympiad in Informatics. I get maximum points from it. It’s a rare situation.

Most of the high school students choose a set of subjects that are required by university where they are planning to apply. Some of them also attend additional lessons and courses which prepare them for the exams.

The exam itself

Exam usually take place in May. Expect the oral ones, the date of the exams is fixed in whole country. All students are answering the same set of the questions and are graded within the same rules. The exam last from 1 to about 3 hours. Only a few of the exams are divided into modules. The exam difficulty usually vary over the years. However as long as you are well prepared there is nothing to worry. If you aren’t, the result is a matter of luck.

From my personal experience, not only raw knowledge and skills is important. Some of the exam aspects like knowing how to do your work in time, transfer knowledge to paper or how to find mistakes quickly are crucial. One of the helpful exercise is to write exams from the previous years in the similar conditions. The another good advice is to not study in a few days before the exam. Concentration is much more needed then a few more training (as long as you are already well prepared).

The results

Exam: Part: Result: Statistics:
Polish language
basic
oral 100% 11% of candidates score 100% points
written 67% 23% of candidates score above 63%
English language
advanced
oral 95% 12% of candidates score 95%, 11% score 100% points
written 84% 23% score 79% or higher, note that most of the candidates take basic level(~ 83%)
Mathematics
advanced
written 98% 4% of candidates score above 90%
Computer Science
advanced
written and pratice 100% 4% of candidates score above 85%

5

I’m really proud of my Maths result, but English one shows that I still not good enough in English grammar (that is were I lose the a lot of points). Anyway, the result are really good, so I was able to publish them, without being ashamed.

  1. the name “matura” came from Latin, like English word “mature” [back]
  2. by the year 2007 [back]
  3. with a few exceptions [back]
  4. it isn’t obligatory, but almost all high school students decide to take this exam [back]
  5. Statistics source: CKE [back]
Discussion Join the discussion (0 comments)

A long trek

Three days ago one of my colleague tell me about his trip from Zwardoń to Szczyrk in two days. As I saw the map I replied “Two days? I can do it within one”. Well it’s “only” a about 35 km through mountain terrain. According to the labels written on map it takes “only” 9.5 hours without breaks. And this values are calculated just for noobs.

The plan

Just because I like challenges I decided to do that trail as soon as possible. On the following day I convinced two of my friends to join in. We also decided to go to Zwardoń by train. On the map the trip look like:

Center of a map
map

The trek

Yesterday we did it. <thoughts type=”random”>Starting from the beginning, the train took us 2h. Than we walked for several hours (least than six with breaks). We were trying to rush as fast as we can. Although the weather was fantastic, it could be a little cooler. At first I was taking a lot of photos, but later I was just too tried to do so. We met some of the competitors from mountain bike race (Beskidy MTB Trophy). I would like to participate in a event like that. I should give it a try and test my cycling skills. I almost lost my digital camera. Luckily I found it a hour later on a tree roots.</thoughts>

The photos…

… are in the gallery.

IMG_4284

Discussion Join the discussion (0 comments)