Sunday, November 24, 2013

Artificial Intelligence: The future.


Artificial intelligence has always been something that has fascinated me. Just the very idea that we can "...[simulate] human intelligence processes by machines" (Read more at: http://searchcio.techtarget.com/definition/AI) makes me extremely excited to see what the future will bring. Admittedly I have dabbled in it very briefly by making my own Tic Tac Toe program in which users can play against the computer. However, the computer will always play the very best moves so that it never loses which makes the game boring for the player as people occasionally make mistakes while playing Tic Tac Toe that allow for their opponent to secure the win.

Albeit the artificial intelligence used in voice recognition technology like Siri makes mistakes more often than not. And that makes me doubtful of whether or not we will be able to make artificial intelligence extremely advanced. On the other had, recent advancements like Google's self-driving car has me super excited for what the future will bring us. Because by doing something as complicated as making a program that can drive a car around safely without any human intervention gives me faith in the diligence of Computer Scientists to make new breakthroughs in techniques for constructing artificial intelligence programs.

And then we will finally reach a point where everything will be automated for us in which we can sit back and relax knowing that we won't have to work another day in our life unless we choose to do so, although I can't imagine many of us wanting to work. So instead we will be able to spend our time focused on obtaining happiness by exploring all of the wonderful things life has to offer us.

Sunday, November 17, 2013

History of Computer Science: From my perspective.


The first programming class I took was an Intro to Java course. My teacher started off the course by giving us a brief overview of the history of computer science. And I still remember my teacher talking about how people would have to punch cards by hand in order to make programs which sucked because if you made a single mistake you would have to punch the card all over again.

So thankfully we did not have to do that and could instead focus on the logic of the programs we wrote because 'The Java programming language is a high-level language...' (Read more at: http://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html). And the first program my teacher showed me was a simple Hello World program which is a program that simply prints out 'Hello World!' for a user to read. And the example code intimidated me greatly as there seem to be a lot of text for a relatively simple task. It's code was the following:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

But I got the hang of writing programs in Java after a couple of weeks of doing basic assignments. Two years later, I took a class in C which was very easy to understand because Java based its syntax off of C. But then I got to pointers which are basically things that point to the location of others things which had me scratching my head for a really long time until it finally clicked after spending hours thinking about it. So I was thankful that my first programming course did not require me to know how to work with pointers. And C's version of a simple Hello World program is:

#include <stdio.h>

int main(void) { 
    printf("Hello World!");
    return 0;
}

After taking a short break, I took a class in Assembly which I found to be really hard as you had to keep track of all of the registers named eax, ebx, ecx, edx, etc in your head. So this class gave me a ton of respect for the people who made high level languages as they make programming more accessible. And it's version of a simple Hello World program is:

INCLUDE Irvine32.inc

.data
prompt BYTE "Hello World!",0

.code
main PROC
mov edx, OFFSET prompt
call writeString
main ENDP

END main

Which is really not that simple at all. And then I started to learn Python which was really easy compared to the other languages, as it's syntax is pretty similar to Java/C. And a simple Hello World program can be written in Python as:

print("Hello World!")

Which I think is super cool because it's so simple compared to the rest of the languages I have learned about.

Sunday, November 10, 2013

File Sharing: Its importance.



'...file sharing is the practice of making files available for other individuals to download. It can be as simple as sharing a file for general consumption via My WebSpace or enabling file sharing on your computer’s operating system so that you can access your home computer files at work.' (Read more at: http://www.cio.wisc.edu/security-filesharing.aspx). But the idea that comes up in most people's head as they hear the word 'file sharing' is that people can illegally download free stuff off the internet using a torrent program such as utorrent (Download link: http://www.utorrent.com/downloads). And they are right because with a quick Google search one can easily find pretty much anything online for free and with a couple of clicks be on their merry way to having a copy of the file onto their computer.

And even though that may be the way a vast majority of user's use such programs, file sharing programs should not be frowned upon as they are very useful in distributing legitimate files across the internet to help ease the burden of paying for servers for people to download files from. A good examples of this would be Ubuntu (Download link: http://www.ubuntu.com/download/alternative-downloads) which is a free Operating System that user can use on their computers. Another example of this would be the adult game Katawa Shoujo (Download link: http://www.katawa-shoujo.com/download.phpthat was created by various individuals on the internet which utilized file sharing in order to get their game out to the public faster.

Sunday, November 3, 2013

Data Structures: What are they for?





'A data structure is a group of data elements grouped together under one name. These data elements, known as members, can have different types and different lengths.' (Read more at: http://www.cplusplus.com/doc/tutorial/structures/). And what this basically means is that a programmer can create a single object to hold a bunch of different types of things in one place. And a good example of this kind of data structure would be the files you use on your computer as that is something that you interact with in your everyday life. The data structure aspect comes from the way in which your files store all kinds of information about themselves in addition to what you or somebody else put into them, like the date, or title/artist/duration of a music file. 

Data structures are also used in another way to help programmers make their lives simpler by hiding away the implementation details. And an example of this could be the way in which your music playing program uses a list data structure to hold all of your music files. And by using this type of data structure the people who write music playing programs can easily add features to allow you to sort your music in a bunch of different ways without worrying about the implementation details about a list by just adjusting the sort function their list data structure uses to be able to sort your songs in alphabetical order by artist or track name, or by the amount of times you played a song so you can easily play your favorite song.