Monday, December 9, 2013

Science Computing: Symbolic Computation

First of all, I love mathematics (algebra, geometry, and calculus) because I love to solve numerical problems in my head. Since attending San Jose State University, I have been studying computer science and doing scientific computation. One of the most interesting types of scientific computation is symbolic computation, or computer algebra, Symbolic computation is a subcategory of scientific computation that develops the manipulation and solution of expressions in symbolic form. I remember taking a linear algebra class (Math 129a) two years ago. In that class, I used this handy-dandy application called GNU Octave to do MATLAB math exercises. MATLAB, “a high-level language and interactive environment for numerical computation”, performs symbolic computation from the command line on the computer. Using MATLAB lets everyone define symbolic math expressions and operate them for mathematical purposes. According to MathWorks, there is a list of mathematical areas that use MATLAB and its performances:

“1) Calculus: Performs differentiation and definite/indefinite integration, calculates limits, and computes summation/product series.

 2) Linear Algebra: Performs matrix analysis on symbolic matrices, executes matrix operations and transformations with functions, and gets symbolic expressions for the eigenvalues and eigenvectors. 

 3) Formula Manipulation and Simplification: Simplifies long expressions into shorter forms, transforms expressions to particular forms, and replaces parts of expressions with specified symbolic or numeric values.”

I think symbolic computation is fun because you get to study the algorithms with the implementation and applications to computer science and engineering. For example, here is how it is done:

                        In[1]: 5x - 2x + 3
                         Out[1]: 3 + 3x


                                                                         References

1) “Symbolic Computations in MATLAB.” The MathWorks, Inc. 1994-2013. Web. 5 Dec. 2013. <http://www.mathworks.com/products/symbolic/description4.html>

2) “MATLAB - The Language of Technical Computing.” The MathWorks, Inc. 1994-2013. Web. 5 Dec. 2013. <http://www.mathworks.com/products/matlab/>

3) “Matrices.” Vanderbilt University School of Engineering. 2013. Web. 5 Dec. 2013. <http://engineering.vanderbilt.edu/ge/es140/Otherlinks/MatlabTutorial/Matrices.php>

4) "Lab and Classroom Software." Claremont McKenna College. 2013. Web. 9 Dec. 2013. <http://www.claremontmckenna.edu/its/sts/labs/acad-software.php>

Thursday, December 5, 2013

Computer Graphics: World of CGI

Computer graphics is basically a different category of graphics which represents the image data from a computer. When I think of computer graphics, I immediately think of computer animation, which is the art of creating moving images on a computer screen. Computer animation is well-known for various images on films, computer games, television programs, commercials, and so on. One of the most interesting applications in the field of computer graphics, CGI (Computer Generated Imagery), has been used to draw 3D computer graphics to scenes and special effects in movies. Many animation studios, such as Walt Disney Animation Studios and Pixar, use CGI to make their films more lively and animated. As you read along, you can see how CGI is put together in animated films.

Beauty and the Beast (1991) 

This Disney animated film has a combination of traditional animation and the selected computer-animated scenes to give a better visual grandeur to the audience. The most highlighted scene from the film was the ballroom scene with the dimensions of “72-foot high ceilings, 184 feet from door-to-door with a width of 126 feet, 28 wall window sections, [and] a 86 x 126 foot dome with a hand-painted mural applied as a texture map.” Jim Hillin, Beauty and the Beast’s CGI Artistic Supervisor, states that "the ballroom sequence features the first computer-generated color background to be both animated and fully dimensional". By having computer artists and technicians work on the layout, art direction, and background of the film, the results for that scene are achieved. 

The Lion King (1994)

The Lion King has presented few of the computer-animated sequences by CGI. For example, the “wildebeest stampede” was a three-dimensional sequence, with hundreds of wildebeest to run and hop simultaneously down the gorge. First, the animators draw a hand-drawn model of the wildebeest and give it to the CGI team to make it look evolved as a computer-generated one. Next, they take the model and multiplied it into hundreds of wildebeest in order to make an extensive stampede. According to CGI artistic supervisor Scott F. Johnston, he built a “follow-the-leader” simulation, a visual simulation “where animators can control the behavior of the wildebeests as leaders and followers.” Johnston explains the simulation’s process that “followers have to follow their leader, but avoid one another because they do not want the wildebeest to bump into each other.” Then, they build a pre-dimensional background grid that matches the perspective and the look of the background that is similar to the screen. On that grid, they placed one of the simulations where each of the bugs gets replaced by the running, hopping wildebeests. Finally, the team add the entire sequence in final color. Before that, they wanted to give each wildebeest randomized colors for testing, so the directors could say that the scene is likable, but they want to point out a few flaws like take the pink eyes out of the yellow face or make one of the them run faster. Once the testing is done, they add different shades of pale colors (gray, black, and brown) to make various wildebeest look realistic.


Toy Story (1995)

Toy Story is the first feature-length animated films with 3D computer graphics. First, Pixar director John Lasseter and the teams from Pixar and Disney “animated storyboards to develop the characters and created models out of clay before creating more than 400 computer models” prior to the computer animation process. Next, they coded motion controls in the parts of the models (mouth, eyes, eyebrows, etc.). After that, they created storyboards with computer-animated characters and implemented the shading, light, and visual effects. It took Lasseter and the two teams “800,000 machine hours, had 114,420 frames, and 77 minutes in computer animation over 1,561 shots, rendered at 1536x922 pixels!” Wow! That’s a huge amount of shots to finalize the film!

With CGI, everyone can enjoy watching animated movies and experiencing the real life images drawn on the screen. Disney’s latest animated movie is Frozen. Over the holidays, check out this movie and pay close attention to the beautiful art work (CGI).


References

1) “The Ballroom.” Disney Wiki. Web. 2 Dec. 2013. <http://disney.wikia.com/wiki/The_Ballroom>

2) Fine, Kelly. “This Week in History: Toy Story and CGI.” Spiceworks. Spiceworks Inc., 2006 - 2013. 22 Nov. 2013. Web. 2 Dec. 2013. <http://community.spiceworks.com/topic/412181-this-week-in-history-toy-story-and-cgi>

3) jamaldisney. "Lion King Computer Animation CGI and traditional hand drawn." Youtube. Web. 5 Dec. 2013. <http://www.youtube.com/watch?v=HLmAT6t5kL0>

4) Terrill, Brian. “Brian Terrill’s 100 Film Favorites - #17: “Toy Story 2””. Earn This.  WordPress. Web. 2 Dec. 2013. <http://earnthis.net/brian-terrills-100-film-favorites-17-toy-story-2/>

5) Tracy, Joe. “An Inside Look at the Original Beauty and the Beast.” Digital Media FX Magazine. Digital Media FX, 2001. Web. 2 Dec. 2013. <http://www.digitalmediafx.com/Beauty/Features/originalbeauty.html>

Friday, November 29, 2013

Communication and Security: Protect Yourself!

Securing your computer is like protecting your house. Imagine if someone breaks into your property and steals your belongings. In computer world, you could be hacked into. That is where cyber security comes to your rescue and protects your property. Cyber security (or computer security) is the protection of computing systems and networks for individuals, families, governments, businesses, and educational institutions. Similar to my hacking post, “Hacking: Hackers and Crackers,” your computer would be hacked if cyber security does not exist. In this post, I will enlist the risks that you need to take precaution against and realize that cyber security is important to you. For more information on this topic, you can also go to “Cybersecurity: Everyone’s Responsibility” on www.cisco.com.

Every individual who owns a computer needs to recognize the risks that exist in the cyber world. Taking care of our personal information responsibly is the key to computer security. Below, I will be listing some risks that exist in the cyber world and some actions that we as computer users must take.

Phishing: Fraudsters gain access to our personal and financial information by one wrong click made on our side. Those malicious soliciting emails that we get, which seem to be from reputable sources are actually baits. When we click and open those emails, if we provide our emails, these fraudsters will gain access to our accounts. How should we prevent it? The answer would be to never open messages or attachments from people or sources you do not know.

Spyware: Two key elements one must know about spyware as: 1) They download themselves themselves without permission and 2) they take control of your computer.

Dell provides the following steps for us to protect ourselves from spyware:
    1. “Adjust your browser security settings for your Internet zone”
    2. “Practice your safe web-surfing habits and download cautiously”
    3. “Install and use anti-spyware software”
    4. “Install a firewall with outbound pattern”

Password protection: Create difficult multi-letter, multi-number, and multi-character passwords. Change your passwords regularly and don’t make them easy to guess, such as your name or date of birth.

Social media: Do not compromise your identity or safety by spilling your information on a social media website.

Plan Ahead: Store all of your records on an external hard drive. This will assure safety for your credit and school records, family photos, and business information.

The five steps mentioned above are like a lock to your house or car. As for your computer, you have to either log off or change your password to keep your data safe. Cyber security is always there to keep you from danger in your computer system! Use it!


References

1) “Cybersecurity: Everyone’s Responsibility.” Cisco. 2010. Web. 25 Nov. 2013. <http://www.cisco.com/web/strategy/docs/education/C45-626825-00_Cyber_Security_Responsibility_AAG.pdf>

2) “Cyber Security.” Zen Internet. 2013. Web. 26 Nov. 2013. <http://www.zen.co.uk/blog/cyber-security/>

3) “Prevent Spyware.” Dell. 2013. Web. 27 Nov. 2013. <http://support.dell.com/support/topics/global.aspx/support/security/security_spyware_help?c=us&l=en&s=gen&~mode=popup&DoNotRedirect=y#WhatCanIDotoPreventMyComputerfromGettingInfectedwithSpyware?>

Thursday, November 21, 2013

Artificial Intelligence: The Next Generation Brain

John McCarthy, an American computer scientist, defines artificial intelligence (aka AI) as “the science and engineering of making intelligent machines.” I think what McCarthy really means that it is the goal of building machines that perform normal tasks with the requirement of human intelligence. I must agree with him that we will need to set long-term goals to simulate machines with human intelligence for future generations. Let’s talk about technological machines that were developed by artificial intelligence.

Self-driving cars: Self-driving cars are autonomous vehicles that are designed to drive without a human operator. In the latest generation of automobiles, AI has been developed and used to help the driver in steering the wheel and hitting the brakes to avoid accidents and collisions. For example, in the photo down below illustrates a Google self-driving car. Another feature would be setting your destination in the software and never using your hands on the wheel. Nowadays, AI helps drivers with parallel parking. Set the car on full control and it will calculate the distances between two cars and parallel park itself. This is how AI helps in self-driving cars.


Supercomputers: Supercomputers are highly expensive and powerful for scientific computations. For example, IBM Watson is a room-sized supercomputer which answered all of the questions on “Jeopardy.” This was a stunning revelation for the future of technology.






iPhone Siri: Siri was invented as the artificially intelligent voice control system for iPhone 4S, 5S, etc. For example, when one asks Siri for directions to restaurants/cafes in San Francisco, it immediately provides directions and options for the command it has received. Siri is one of this generation’s AI.

With AI, our world will become more advanced where machines own human intelligence and make our lives easier in the future.


References

 1) Best, Jo. “IBM Watson: How the Jeopardy-Winning Supercomputer was Born, and What It Wants to Do Next." 2013. Web. 21 Nov. 2013. <http://www.techrepublic.com/article/ibm-watson-the-inside-story-of-how-the-jeopardy-winning-supercomputer-was-born-and-what-it-wants-to-do-next/>

 2) Epstein, Zach. “Google Self-Driving Cars.” BGR. 2013 Aug. 23. Web. 19 Nov. 2013. <http://bgr.com/2013/08/23/google-self-driving-cars/>

3) Gillen, Paul. "IBM's Watson Jeopardy Challenge is the Greatest B2B Campaign Ever." Social Media B2B. 2011 Feb. 23. Web. 21 Nov. 2013. <http://socialmediab2b.com/2011/02/greatest-b2b-campaign-ever-ibm-watson-jeopardy/>

4) Ritchie, Rene. “Apple Announces SIRI artificial intelligence voice control for iPhone 4S.” Imore.com. 2011 Oct. 4. Web. 19 Nov. 2013. <http://www.imore.com/apple-announces-siri-artificial-intelligence-voice-control-iphone-4s>

5) “What is Driverless Car?” WhatIs.com. Sept. 2011. Web. 19 Nov. 2013. <http://whatis.techtarget.com/definition/driverless-car>

Friday, November 15, 2013

History of Computer Science: Programming Paradigms

There are many historical topics that we are aware of: Julius Caesar, American Revolution, Wolfgang Amadeus Mozart, etc. However, there is one kind of history that we have never heard of before, and that is Computer Science History. It was not easy to come up with an excellent idea for this subject...but then it hit me! When I think of computer science history, I immediately think of programming paradigms.

According to Wikipedia, programming paradigms are “fundamental styles of computer programming and a method of building structures and elements of computer programs." In my programming paradigms class (CS 152), we are learning about various programming languages before Java. Let me describe the four main paradigms and give you examples of programming languages on each paradigm.

1) Imperative Programming: A programming paradigm that “describes computation as statements that change a program state”. Examples: FORTRAN, Pascal, C, etc.



2) Functional Programming: A programming paradigm that “treats computation as the evaluation of mathematical functions and avoids state and mutable data.” Examples: Common Lisp, Scheme, etc.

Lisp                                                                              Scheme






3) Object-Oriented Programming: A programming paradigm that “represents concepts as “objects” that have data fields and methods.” Examples: C++, Smalltalk, etc.

C++                                                                                                          Smalltalk











4) Logic Programming: A programming paradigm that is based on symbolic logic. Examples: Prolog (My favorite programming language) and Datalog.
                 
Prolog                                                                                                        Datalog
There are two strong reasons as to why I prefer Prolog. First, it is simply expressible and the logic clicks in my mind. Second, I have a knack in writing Prolog rules and queries.



If you want to study programming paradigms, take a copy of the book called Programming Languages: Principles and Practice by Kenneth C. Louden and Kenneth A. Lambert. It takes a lot to learn programming paradigms, but it’s a learning process of understanding the concepts and the logic within them.  

Works Cited

1) “15 Useful Mac OS X Text Editors.” Dreamcss. Web. 15 Nov. 2013. <http://blog.dreamcss.com/wysiwyg-editor/mac-os-x-text-editors/>

2) “Classification of the Principal Programming Languages.” Universite Catholique de Louvain (UCL). Web. 12 Nov. 2013. <http://www.info.ucl.ac.be/~pvr/paradigms.html>

3) Collingbourne, Huw. “Is Ruby the New Smalltalk?” SapphireSteel Software. 23 Apr. 2007. Web. 15 Nov. 2013. <http://www.sapphiresteel.com/Blog/Is-Ruby-The-New-Smalltalk>

4) “Datalog Educational System.” SourceForge.net. 2013 Nov. 14. Web. 15 Nov. 2013. <http://www.fdi.ucm.es/profesor/fernan/des/>

5) Kabbaj, Adil. “Prolog+CG GUI.” Jan. 2009. Web. 15 Nov. 2013. <http://amine-platform.sourceforge.net/component/Guis/PrologPlusCGGUI.htm>

6) Ott, Alex. “Support for the Scheme Programming Language.” 2011. Web. 15 Nov 2013. <http://alexott.net/en/writings/emacs-devenv/EmacsScheme.html>

7) “Programming Paradigms.” Wikipedia, the Free Encyclopedia. 12 Nov. 2013. Web. 15 Nov. 2013. <http://en.wikipedia.org/wiki/Programming_paradigm>

8) “What is high-level language?” Webopedia: Everything You Need to Know is Right Here. Web. 15 Nov. 2013. <http://www.webopedia.com/TERM/H/high_level_language.html>

9) Wikimedia Commons. 14 Feb. 2013. Web. 15 Nov. 2013. <http://commons.wikimedia.org/wiki/File:Devcpp5110.png>

Friday, November 8, 2013

File Sharing: Dropbox

File sharing is easy and convenient for everyone through the Internet. File sharing, based on the Internet use, can be done through Google Drive, SkyDrive, DropBox, and etc. First, I love file sharing because I can sync my information to a cloud environment, which is digitally stored into my Mac OSX laptop, iPhone, and iPad. My most favorite file-sharing service of all time is DropBox, an easy functional cloud service for storing non-personal data through the internet. Let me explain to you why DropBox is easy to synchronize your files for personal and business use.


On a daily basis, I use DropBox to upload my photographs from my iPhone and download my files on my Mac. One advantage of DropBox is that users no longer need to attach files to the content of the email. By simply downloading information/files into your DropBox account, your are giving your friends, colleagues, and family the opportunity to access them as they please. According to the blog, “Why I Love DropBox: The Top Benefits of Using DropBox (File Storage & Sharing),” it has the ability to share a Dropbox folder to the user’s contacts for both personal and business world. Another impressive element in DropBox is that when you create a folder with DropBox in the Internet, you can sync your files in there and it will automatically be saved online.The next advantage with DropBox is that if you have access to the Internet, no matter where in the world you are, you can retrieve and read your saved documents. This means you do not have to carry along a personal computer with files stored on it. Your handy-dandy smartphone will give you the comfort of retrieving your data.


With DropBox and its accessibility, I have the advantage of saving my files, uploading my photos, and creating folders into my Finder window. As I see it, this is the next generation of file sharing.

Works Cited
  1. Cabrera, Pauline. “Why I Love DropBox: The Top Benefits of Using DropBox (File Storage & Sharing).” TwelveSkip. 24 Mar. 2013. Web. 8 Nov. 2013. <http://www.twelveskip.com/resources/tools/247/why-i-love-dropbox-the-top-benefits-of-using-it-file-storage-sharing>
  2. Beach, Stormy. “A New DropBox Beta App is Available, Adds Photo Improvements and a Opt in for Direct Beta Builds.” AndroidSpin. 21 Dec. 2012. Web. 8 Nov. 2013. <http://androidspin.com/tag/dropbox/>
  3. chrisbowler. “Extend the Web with DropBox.” AppStorm. 21 Sept. 2009. Web. 8 Nov. 2013. <http://web.appstorm.net/reviews/file-management/extend-the-web-with-dropbox/>

Friday, November 1, 2013

Data Structures: Binary Search Trees (BSTs)


Who doesn’t like binary search trees, or BSTs? They are my favorite data structures. According to Wikipedia, a binary search tree is “a binary tree data structure which has the following properties:
  • The left subtree of a node contains only nodes with keys less than the node's key.
  • The right subtree of a node contains only nodes with keys greater than the node's key.
  • The left and right subtree each must also be a binary search tree.
  • There must be no duplicate nodes” (1).

The reason that I like binary search trees is that you can search a binary search tree for a specific key with a recursive algorithm. There are many examples of operations that are used for binary search trees, but here is one from Wikipedia that shows the search operation (1):

function Find(key, root):
    current-node := root
    while current-node is not Null do
        if current-node.key = key then
            return current-node
        else if key < current-node.key then
            current-node := current-node.left
        else
            current-node := current-node.right


Of course, there are other algorithms that are based in the BSTs, such as insertion, deletion, traversal, and sort.

These algorithms are used to form an abstract of sets, multisets, and associative arrays in the binary search tree.

There is no need to tell that we computer science/computer engineering/software engineering majors in San Jose State University understand the knowledge of binary search trees in various programming languages, especially Java.

To wrap it up, my main reason for liking binary search trees is that I understand the algorithms very well and enjoy the practices of depth-first traversal: in-order, preorder, and postorder.


Works Cited

1) “Binary search tree.” Wikipedia, the Free Encyclopedia. Wikimedia Foundation, Inc.
          19 October 2013. Web. 1 November 2013. <http://en.wikipedia.org/wiki/Binary_search_tree>