Tuesday, December 10, 2013

Scientific Computing: Useful tool.





"Wolfram Alpha is an astonishingly powerful piece of software that helps you find nearly any piece of factual information you could want" (read more at: http://www.businessinsider.com/wolfram-alpha-2011-10). It can be used to answer many different types of problems ranging from what temperature the weather is in Timbuktu to your Calculus homework. However, it is still a work in progress as it is not smart enough to answer any questions you ask it because of the enormous difficulty involved in interpreting the text a user enters into it. However, there is no need to be upset when Wolfram Alpha says that it does not understand your question as Wolfram Alpha has an example page: http://www.wolframalpha.com/examples/ for this purpose.

And so if we wanted to find the format we need to use for double integrals problems we can click on the 'Calculus' link beneath the 'Mathematics' text and image. From there we can click on the 'Integrals >>' button. Once there we can do a simple search in our web browser to find the format we need for a double integral problem which is:

int (x^2 y^2 + x y^3) dx dy, x=-2 to 2, y=-2 to 2

which gives us an answer of:

256/9

And then we can compare use Wolfram Alpha to solve one that we did by hand to make sure that we got the right answer in the case that we are working on is in a textbook that only has answers to the odd numbered problems.

Sunday, December 8, 2013

Computer Graphics: How you are helping out.


The above image is a figure I'm sure most of us are familiar with as we have to fill them out in sites to make accounts or post comments. And whenever I see one I get a little worked up as I know I'm probably going to fail entering the correct values on the first try for whatever reason. In any case it is a good system as it stops spammers from spamming webpages since computer software is currently not smart enough to be able to decipher the above image as text. And that's because of the nature of how text is written without any consistency due to text being spaced differently for any number of reasons. On the other hand, there is consistency in the letters you are reading right now since each letter is exactly the same as the previous version due to the way computer programs display the letters we type.

And to go further into what the above image is, it is "reCAPTCHA [which] is a free CAPTCHA service that helps to digitize books, newspapers and old time radio shows." (read more at: http://www.google.com/recaptcha/learnmore). And what this means is that by solving these CAPTCHAs you are helping out programs in their conversion process of images into text so that all books can be available online in the future so that we do not lose them as in the case of the burning of the Library of Alexandria in which a considerably amount of knowledge was lost due to a lack of additional copies of works.

Sunday, December 1, 2013

Communications and Security: How to make good passwords.


Coming up with good passwords is the best way to keep your files secure. But what makes a good password? The first link on a Google search  for "how to make a good password" gave me: http://www.makeuseof.com/tag/create-strong-password-forget/ which suggests what a lot of websites I've made accounts for in the past suggested for making my password a strong one. And some suggestions for making a strong password that makeuseof lists is that your password should "contain special characters and numbers", "a mix of upper and lower case letters", and the use of random mixing in your substitution of letters like "B", or "b" for "8". And this advice seems rock solid since so many different sites regurgitate (and enforce) that these tips make your passwords strong.

But in reality these kinds of passwords are terrible because they are hard to remember. So you will most likely resort to writing down your password down on a piece of a paper so that you can log on to any of  your various accounts. This is bad because if you lose that piece of paper you will lose access to all of your accounts since you can't remember any of them due to all the mixing and matching of letters.

xkcd: Password Strength Comic
So what actually makes a good password? Good passwords are the ones that are long and easy to remember like 'correctbatteryhorsestaple' from http://xkcd.com/936/. These kinds of passwords are strong since they have a large number of characters which means that a cracker's password program will have to guess more characters combinations to get access into your accounts. However, many crackers probably employ dictionary attacks with random combinations of 3 or 4 words to guess your passwords, so it's probably still a good idea to mix up some of the letters you use  in your password to give yourself some extra security.

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.