Google A I Challenge

For anyone who is interested, the Google AI Challenge is now available at ai-contest.com. I doubt I will do very well at all, but nonetheless they have some really helpful and interesting tutorials on the website. So if nothing else you will have the chance to learn some really interesting things from the contest. The contest seems really organized and well thought out by the University of Waterloo Computer Science Club. Also, I’ve actually already downloaded, compiled, and uploaded the C++ starter package, so if nothing else, I’ll at least appear on the leaderboards! They also have starter packages for Java, Python, and C# if you don’t prefer C++.

Here is an example visualization of two computer bots duking it out in Planet Wars for the contest:

Read More

Introduction To Data Compression

If you are interested in learning more about data compression check out this ebook, [PDF] Introduction to Data Compression), that I just came across. It provides a good introduction to information theory, probability coding, applications of probability coding, data compression algorithms, and more related information. I haven’t had a chance to read over the entire ebook, but it seems to be a sufficient introduction to data compression topics. However, if you are still curious and want to learn more, check out some of these books:

So what is data compression? According to theoretical computer science and information theory, it is the process of encoding data by using less bits than the unencoded version would use via the use of certain encoding mechanisms. It is really useful because it helps to reduce the use of resources on a system, specifically network bandwidth and hard disk space. However, there is a down side to compression. The data must be compressed and decompressed, which requires additional processing. In some cases, this can take quite a bit of time and use a lot of system resources, negatively affecting other applications on the system.

Read More

Becoming More Creative With Problem Solving

It can be really tough to tackle challenging programming problems. Many traditional programmers try to start at a really low level abstraction by mistakenly making it harder than it needs to be. I have been in this situation many times. First you should identify what the goal(s) of the actual problem are and try to avoid the hardest problems for later, because many times you can avoid them altogether. When you fully understand the goal(s) and have a high-level model ready, you can start to separately it into smaller parts. The problem is much easier to solve when its broken up into smaller pieces.

Read More

Scratch Educational Programming Language

Scratch is an educational programming language, created by MIT, that is designed to allow those who don’t have much experience with programming to be able to develop the concepts of a full programming language. It allows you to create stories, music, art, animations, games, and more via a very easy to use visual interface. This is especially popular and useful among educators for use in the classroom with young children. It can help them learn more about mathematical and computational ideas while learning to think more creatively, reason more effectively, and work collaboratively.

Read More

Which Areas Of Mathematics To Study For Computer Science

Honestly, you don’t necessarily need to learn much complex mathematics. However, if you have an interest in theoretical computer science, machine learning, artificial intelligence, or other more advanced areas it may be useful to take some time learning as much as you can.

Read More

Fast Sorting Algorithm Uses Gpus

A new, extremely fast sorting algorithm has been created for GPUs (CUDA-capable only) by researchers at the University of Virginia. This new algorithm is capable of sorting at a rate of one billion (integer) keys per second using a GPU. Normally CPUs aren’t as efficient as CPUs for these types of algorithms (for sorting), but these researchers claim to have created one much faster than any other known CPU-based sorting method.

Read More

Is Systems Software Research Irrelevant

There are only a small handful number of operating systems dominant in today’s computing world. Systems software has been stagnant for nearly the past two decades. A good example mentioned in the source article mentions the excitement behind the Linux operating system. It’s true that there is much excitement and commitment for Linux, but did you know that Linux is essentially an open source clone of a 40 year old operating system (Unix)? This is just one example mentioned in the article, which in addition to pointing out the stagnation of systems software, it helps to paint a picture of the today’s systems research and also tries to uncover what happened.

Read More

Cryptography If Pnp Is True

There has been a LOT of debate as of late regarding Vinay Deolalikar’s P != NP research paper. I’m not going to lie, I don’t understand very many of the concepts described in his P!= NP paper (released August 6, 2010). I’m still learning many of the theoretical Computer Science concepts, but I found many of the debates brought up by this paper very interesting. One of the interesting debates involves cryptography.

Read More