Saturday, December 14, 2013

Scientific Computing: Bioinformatics

Bioinformatics is the use of computer science to maintain, analyse, store biological data, and to assist in solving biological problems. Applications of Bioinformatics include sequencing mapping of biomolecules, molecular modelling of biomolecules, prediction of functional gene product, and identification of nucleotides sequence of functional genes. The term "Bioinformatics" was invented by Paulien Hogeweg in 1979, and it was referred to as to study the processes of information technology into biological systems. [1]

Bioinformatics uses software tools, which include Java, C#, XML, Perl, C++, Python, R, SQL, CUDA, MATLAB, and other spreadsheet applications to store and organize biological data. Analyzing the data involves algorithms in artificial intelligence, image processing, data mining, and simulation. To put it in simple terms, studying Bioinformatics isn't a simple task and is a subject that requires more work and dedication to the field to produce results. However, this field of study can be applied to various research topics and has made an impact on human health, the environment, energy, agriculture, and biotechnology. [2]

There is a vast amount of data from genome sequencing projects which requires computer programs to interpret and analyze the data. In fact, the biggest issue that the Bioinformatics community faces is the intelligent and efficient storage of this vast amount of data. It is essential that the software tools used provide easy and reliable access to the data. The three central biological processes around which Bioinformatics tools must be developed are that DNA sequence determines protein sequence, protein sequence determines protein structure, and protein structure determines protein function.

For more information about the field of Bioinformatics, please click here or here.

Saturday, December 7, 2013

Computer Graphics: Making Its Way Onto the Big Screen



Buzz Lightyears ahead: Pixar's digital rendering techniques had much improved by 2000, when it released the critically acclaimed Toy Story
Pixar's Toy Story
Nowadays, we see many movies ranging from genres like Fantasy, Science Fiction, Action, Drama, and Children use computer graphics to entertain the audience with a visual stimulating sensation. We probably take computer graphics in movies for granted knowing that we have seen it develop into something visually stunning over the past two decades. Over the years, we have seen movie makers use computer graphics to make beautiful explosions, detailed unknown alien life forms, mesmerizing environments/landscapes, and enhanced animated movies intended for all audiences. Now we are starting to see movie makers use computer graphics to make altered versions of actual human beings, whether its purpose is to show a younger or older version of an actor or a specific version of the actor that would have been too costly or time-consuming to use make-up.

CGI version of a younger Arnold Schwarzenegger in "Terminator Salvation"
There was a time when computer graphics was just starting out in the movie industry. Movies like Star Wars (1977) and Future World (1976) made use of computer generated special effects, but it was the movie Tron (1982) that helped influence the use of graphics extensively. Although Tron wasn't as successful as other movies that used computer graphics back in the early days, it obviously influenced movie makers with the idea of using graphics for more than just a couple of scenes in the movie industry. Computer graphics have gone on to save time and money for some movie companies as they are able to reuse models or programs for sequels. Movie companies are no longer limited to the amount of resources available before computer graphics were introduced to help bring a director's idea to life (or on the big screen).

With technology evolving, the potential of how far computer graphics can be used in the movie industry is unknown at the moment, but we are seeing more movies using computer graphics to look more realistic and becoming difficult to distinguish what is real or computer generated.

Notable movies that are based on computer graphics include the Matrix Trilogy, Avatar (2009), and the brilliant Pixar Movies (Toy Story, The Incredibles, Finding Nemo, WALL-E, etc). 

Sunday, December 1, 2013

Communications and Security


With computers being a necessity for most people nowadays, there is an even bigger risk for people to lose their personal information that is stored on their computers due to viruses and hackers. Just like buying a house, you would need some type of protection to make sure intruders do not invade your personal space. Most people would say that if you were to buy a computer, you would also need to buy or download a computer security program to have your computer safe from virus attacks. Most new computers come with an anti-virus program installed, but there are probably better alternatives on the internet with some of them being free to download. We have all heard or read stories of people having their personal information stolen and used against them.

Computer security has advanced since the early days of the computer and there are many options to choose from. You must update your computer security programs to be sure that the latest viruses or malware being made do not harm your computer. Just because you have a good anti-virus program doesn't necessarily mean you are 100% safe. It is up to the computer user to maintain the security of the data stored on his or her computer. For example, you want to have strong user passwords for anything that stores your personal information, evaluate user rights to access the system, set up a WEP (Wired Equivalent Privacy) password for any wireless connections you have connected to the computer, and uninstall any unused software or software with known vulnerabilities. [1]

In order to avoid security breaches to your computer, you must be alert and realize what needs to be done on your part and not just rely or expect a software program to protect you from incoming attacks.

Sunday, November 24, 2013

Artificial Intelligence



We've seen artificial intelligence change over the decades and it is quickly being used for many projects regarding robotics and the like. There are even cases where computers are now able to perform a couple of tasks better than a human such as playing chess or playing a game of Jeopardy. As artificial intelligence develops, we are starting to see a trend of human tasks being replaced by a robot or software. Debating whether this trend will provide much needed support or lead to future consequences is yet to be seen.

The rapid advances of artificial intelligence are seen mostly in robots. We now have portable vacuum cleaners that move around the house for its daily routine, picking up any mess to be seen or felt. Other examples include military projects in which robots or other devices will be used to replace humans in hazardous situations such as defusing bombs. Another example of the rapid advances of artificial intelligence is Amnon Shashua, an Israeli computer scientist, who has modified his Audi A7 to be able to drive from Jerusalem to Tel Aviv without having to touch the steering wheel by adding a camera and artificial-intelligence software. [2]

With these advances in artificial intelligence, there is no telling how close we are to living in a world where robots will one day become a necessity for every human and whether or not this will be beneficial for the future.




Sunday, November 17, 2013

History of Computer Science: Programming languages

Every Computer Science student begins their programming skills by learning their first programming language, which may be Java, C, or any other language. Most students today start off their programming skills with the popular languages such as Java, C, C++, or Python due to it being more readable and structured. But what about the languages that helped inspire these languages? In the 1950’s saw the rise of many second generation (Assembly language) and third generation of programming languages (Fortran, COBOL, Lisp). These languages are considered the oldest, but are still used today.

The idea of second generation languages were to have native machine instructions written in a way that it would be readable for humans by using symbols for instructions and memory addresses. It was called assembly language because people would run the text through a utility called an “assembler” that would translate the nearly-human-readable code into machine instructions.

The purpose for the third generation of programming languages was to solve machine-specific problems and make programs more understandable. “The third generation languages made it possible for businesses to create huge, complex applications that would remain in service for decades such as supercomputing applications, AI development, or business software." NASA, credit cards, and ATMs still use these languages till this day.

Soon later, the idea of structured programming was thought of and the languages that we know and use were invented. For a brief history of programming languages, I offer you a visual chart that can be found at http://www.veracode.com/blog/2013/04/the-history-of-programming-languages-infographic/.


Saturday, November 9, 2013

File Sharing


File sharing is the practice of distributing or providing access to digitally stored information, such as computer programs, multi-media (audio, video), documents, or electronic books. With the internet becoming a useful tool for group work, many people are starting to use file sharing programs like Dropbox, Google Docs, SkyDrive, or any other file sharing program to communicate and share project ideas/work. As the idea of collaborating online as a group sound convenient, there should be some form of etiquette for those that are new to the whole idea or to simply avoid being a jerk to others and prevent any miscommunication between the group members.
Naming folders after projects instead of people should be useful since you want others to keep track of what each folder contains rather than see who made the folder.
It is common courtesy to ask your project members if it is okay to delete any files just in case someone may need the information. Do not add more frustration to the project by deleting something that could be crucial for another team member to use in order for them to complete their task.
Don’t change file names or rearrange files because doing so could become detrimental for those that are using it. Even though you may be doing a favor for them, it may bring upon more confusion and upset those that didn’t know the change since they might have had a procedure or structure that worked well for them. An example of this would be that you wouldn’t want your roommate or some other person to fix your room and have your things placed in unfamiliar territory. If you still have that that urge to fix the arrangement of the folders, then politely ask or offer some assistance or suggestions and see if the group agrees.

The best thing is to have a group discussion about how the folders and files be organized. Miscommunication is a nuisance and can waste the groups' time. Having too many folders isn’t necessarily a bad thing as long as they make sense and don't contain repetitive files. If you go by these guidelines, your group may communicate effectively and there shouldn't be less discrepancies among each group member.

Saturday, November 2, 2013

Data Structures: A Vital Part of Being a Programmer

        

        As a young programmer who started learning about programming a year ago, I haven’t really spent a lot of time mastering my knowledge on data structures. I have learned the basics such as arrays, array lists, hash maps, tree maps, stacks, queues, binary trees, simple sorting algorithms, and linked lists. With this knowledge, I realize that finishing a particular project or problem involving data structures can be done in various ways. This is where creativity and figuring out which data structure is more efficient to use will separate you from everyone else. For example, I am currently working on a calendar project for my Java object-oriented design class and realize that there are many ways to approach the project. Some students may use an array list or a hash map to sort out the events that need to be included in the calendar.


How important is data structures for a programmer?       

        Well let’s put it this way, every programmer is required to learn data structures as it is a fundamental part of being a computer scientist. Big companies like Microsoft or Amazon require interviewees, especially those who just graduated from college, to be well-informed in data structures. 

But why interview on data structures?

        We can assume that a recent graduate may not have the working experience to demonstrate that he or she can program in a working environment. Testing interviewees on data structures is an excellent way to tell if the person is able to succeed with the company and be able to see what the person’s critical thinking skills are like when it comes to solving a particular problem. Since data structures are conceptually the same for other programming languages, it is easier to compare two programmers’ knowledge by asking them questions that tests the basics of programming than comparing whether this programmer knows this amount of information more than the other. 

Data structures are a vital part of being a programmer and without having a deeper knowledge of them may result in finding a job in the programming career field a bit more difficult.