Tuesday, November 26, 2013

As CSC148 winds down, attentions ought to be diverted to more computer science!

But which part of computer science should one divert their attention to? It mostly depends on what you aim to achieve in the field, but I think a safe bet would be A.I. As an aspiring A.I specialist I may be a bit biased but if you'll spare me some of your time I will attempt to persuade you that knowing and understanding A.I is integral to almost every programmer who isn't immortal.

I will explain the immortality is relevant in a moment.

Artificial Intelligence is about being rational not logical, because being intelligent is about being rational, not logical. This is mostly because we have problems like combinatorial explosion which prevent us from keeping track of every variable in a vast number of worlds. So in the studying of A.I you will be studying the applications and limitations as well as potential optimizations of rationality. Trying to understand A.I then is trying to understand rationality and there are few things more valuable than that.

Is that really true though? Do we really need rationality to make A.I? The answer is no we not, we could compute most problems that undergo combinatorial explosion if we had a vast amount of time and vast amount of money. Unfortunately most of us don't, either with respect to our computers or our own minds. Rationality is what turns a calculator into intelligence.

Find out more here!
https://www.udacity.com/course/viewer#!/c-cs271/l-48688925

Thursday, November 14, 2013

Society needs to keep up with technological change, and it is our responsibility to help that happen.

There aren't many people who actually enjoy commuting. It is on the whole a massive drain on one's time. With an average commuting time of 32.8 minutes that means an hour of our day is on average lost to travel. Facts like these are what make an automated automotive society a necessity. But legislation for automated vehicles is practically non-existent at the moment. Many people fear the idea of a machine being so closely connected to something which has a connection to mortality. Irrational fear on the part of our race could be the inhibitor of massive innovation and quality of life improvement. Computer Science is in the business of making things better. It could be improving a destructive or creative machine but it is improving nonetheless. But developing theorems is not enough. We need to convince the world that it is safe to accept these theorems. I plan to do my best to help clear away as much confusion and fear as I can and I hope you do the same!

Wednesday, October 23, 2013

The power of logic

I've recently stumbled across a language called prolog. What is so interesting about it is the way in which you can use the logic to solve problems. Programs in prolog aren't written using instruction sets but through logical rules. The language then resolves the relationship between the objects and rules you've given it and can deduce some pretty impressive things. This will then be my focus for the next while, since through prolog I hope to gain some background into the language used at our very own university's A.I research departments.

Monday, October 14, 2013

Trees and neural networks

Working on trees reminds of brains and how much of a headache they are. Whilst trying to write up a neural network of my own I've started to realize that my lack of graph theory is hindering me, which means to the maths go I must. I'm beginning to find a strong and stronger connection between maths and computer science and though it may seem evident at a superficial level, to start actually digging into the meat of the systems is a wonderful experience. In regards to that I think that my post next week will be regarding lambda calculus, hopefully a mini introduction to it!

On recursion

Object oriented programming and recursion go hand in hand. But not only because of the way recursive methods can be written. I contend that to use OOP is to be recursive. That is to say the solution to problems in OOP is recursive.
Take for example the equivalent of constructing a building object using programming.
To build an entire structure without any plans would of course be an insurmountable task, but if we break the problem into smaller pieces the solution will reveal itself.
We begin by stating that we want to create a building object.
In order to build a building we need bricks,cement and workers.
Now we instead solve the simpler problems of creating a brick object, a cement object and a worker object ( they are by definition simpler than the building object since the building object will utilize all of their complexity as well as its own )
This idea can be scaled to greater and smaller degrees, but the point remains: Recursion is the spirit of solving big problems by applying the same solution to smaller problems.
OOP programming solves the big problem of complex systems by implementing a bunch of simpler systems first ( objects!)

On object oriented programming

I think my favourite aspect regarding the OOP paradigm is the way in which it reflects our human ability to create intuitive systems out of what is at first a seemingly incomprehensible network of bits. The fact that we cluster elements of data and the tools to alter that data into things like objects is fundamentally important to facilitating a clear understanding of what it is we're working with when programming and how it operates.

The most important aspect of OOP I think is not the amount of coding it saves you, but the amount of clarity it provides to its user.