sunnuntai 30. lokakuuta 2022

My first look into analytical algorithm design

 In the past few weeks, I have made myself familiar with a book called “The Algorithm Design Manual”, by Steven Skiena. As the title suggests, the book mainly focuses on algorithms. In the first chapters, the focus is on analysing and proving algorithms which in this case are mainly mathematical.

The first chapter of the book focuses on explaining the reader how to properly analyse algorithms. Of course, the reader is first introduced to the concept of algorithms and how they function. Next the reader is explained how an algorithm can go wrong. This is done by first introducing a problem, then telling the reader different possible solutions, all of which end up not really solving the problem. I found this method of teaching to be effective because instead of straight up getting the right answer to do things properly, I also learned why certain things don’t work.

Afterwards the book moves on to explaining the reader how to prove that your algorithm is working.  However, it can be rather challenging to prove that an algorithm works as designed which is why it might be easier to prove that an algorithm does not work. If you have any experience on upper secondary level mathematics, this method of proving something might already be somewhat familiar.           

The first chapter focused on how to define a problem and briefly explained how to solve it. The second chapter, on the other hand, focuses more on the analytical and mathematical side of algorithms solving and proving. In this chapter the reader is met with a bunch of mathematical functions that may or may not prove themselves useful on the long run. For me this chapter was definitely the more challenging read. I was a bit taken back by the amount of math I had to read through in this chapter, but I can also see the benefit of knowing these things in computer science.

I had very few expectations when starting to read this book. I chose it because it seemed like a good overall book to help me create better-functioning algorithms in the future. Though the first chapters have been more on the analytical side, which has admittedly felt a bit draining. But I believe that with further reading the book could prove itself to be interesting and instructive. I think this book could be an excellent thing to read if you want to learn the more analytical side of computer science.

torstai 13. lokakuuta 2022

The most important part of a programming project

 Working on a project is a multi-step-process which can take from anywhere for hours to even years to complete. When it comes to projects related to computer science, such as creating an application, you really need to take your time to make sure that whatever project you have designed, works. The important thing to keep in mind is that you are usually making something for someone other than yourself. That means that even though you know how something is supposed to work, others might not.

 For example, let’s say that you are creating a program. You would start by planning and then you would start working on a program, which would include coding among other things. You could think that to create a product that is usable for everyone, you would need thorough planning.

Although planning is one the most important aspects to creating a good product, what really creates a well-working product is testing; tests after tests after tests. But why should you do so much testing on your product? Simply because you are not every person who uses your products. If we imagine that you have created a program that if designed to do a specific thing. What happens if a user tries to make it do a different thing or gives the program a wrong input. What happens then, does the computer blow up? Probably not, but the program will not work, or it will do something completely different than what it is supposed to.

To eliminate errors in your program you do testing. When testing, you are trying to find every possible way that your program might break. So the idea of testing is to pretty much do everything as wrong as possible and the fix the issues you find. The best way to discover issues in your program might be to have other people to use it. So get your friends to try out your program and have them do the wildest things to try and mess with your work.

In short, testing is a way to find issues in your program and fix them. It is certainly the most effective way to create well working error-free projects.

tiistai 4. lokakuuta 2022

The path of discovery and computing

I believe I am not alone when I say that for the longest time, I didn’t really know what I would be when I grew up. Bunch of different career and study possibilities presented themselves, but nothing ever felt that interesting for me. Though I had always been interested in computers and creating, the idea to study information processing science was sparked by a singular optional lecture I attended in upper secondary school. The lecture wasn’t anything serious or academic, but a rather relaxed presentation held by a former student in my school. Even though the academic side of information processing was quite brief alongside the funny stories, it was enough to get me interested and do my own research. And as you may be able to guess from this post, I am currently studying information processing science.

 

The name information processing science can be a bit misleading, since it can make people think of some person going through and analyzing huge amounts of data and statistics. The more universal name for my field of study would be computer science, which directs people’s minds to, well, computing, which is what I study.

 

That isn’t to say that I have never gone through data and statistics. I did a lot of that when doing a school project with a classmate of mine. We were given a task to come up with a subject we wanted to research and then to create inquiries for other people to answer to. We were ambitious and ended up making inquiries for several different classes in different age groups. We even made the same inquiries in English and sent them to students abroad. The ambitious projects ended up being quite painful because in the end we had to create dozens upon dozens of statistics by hand based on the data we research and then show our research to the rest of the class. Looking back now I am proud of the work I did during the project, since it taught me data processing and communication and even improved my English skills.

 

My English is something I’m always aiming to improve. Whether it’s writing or speaking, grammar or vocabulary, I am happy to learn more. Though writing blogs is new to me, I am hoping that it will offer me yet another opportunity to become better user of the English language.

 

The Trade Fair

 Last Thursday my team and I presented our project during a trade fair in Tellus in Oulu University. The trade fair was a pleasant experienc...