Thursday, May 15, 2014

Published 10:36 PM by Phuc Nguyen with 1 comment

Great Tools for Computer Scientists

As a computer scientist, I have used many types of tools that help me program and study. They are text editors, an IDE, browser, debugging tools, social networking tools, and many more. I use each of the tools with a specific purpose. It seems impossible to obtain a one-size-fits-all tool. It is because a programming problem needs to be broken into smaller problems, which requires a computer scientist to combine different tools to find the solutions.

For example, in this semester, I worked with five other students for SJSU STEM Program. We took advantage of Google Docs to communicate and plan each sprint. We also used Google Hangouts and Skype to hold every meeting between team members and with students and teachers. These tools are free and work really well. In fact, thanks to Google Docs, we were able to put together the finest memos. The reason, Google Docs worked so well, is because it provided us real-time editing.


Besides Google products, our teams discovered Google Helpouts, which is a very promising tool for computer science students like us to help other people and get paid in the process. We did not have a chance to work with it but we would definitely like to explore it more in the future.


The other tools that we used were Adobe Photoshop and Prezi. Photoshop was used for our poster and it was just powerful. Prezi was new to us but the ability to animate slides and make them interesting really impressed us. We used Prezi, at the end of the project, to provide a presentation to our client. After the presentation, the client response was very positive. However, Prezi could be a lot more appealing to students if its group licenses were not that expensive.
 
At the end, Google Docs and Google Hangouts are my favorite tools. They are just easy to use and do the job well. Prezi seems potentials, but it price tags and complicated features make me less interested in using it for future projects.

Personally, another good tool for computer scientists is Linkedin. This is a great tool for networking. During the preparation for my Linkedin profile, I had to get familiar with business terms and learnt how to promote myself better.

I think computer tools are changing every year. People always strive to find new ways to do things. For my STEM project, we found out many cool tools for kids to learn programming. The website Code.org provides interesting and easy-to-learn education web apps. Code.org employs a new way of educating young students to learn code through game programming and simulated animation. Currently, it has a coding curriculum that teaches basic programming through video games like Angry Birds and hungry zombies. The web apps are just amazing and I think it makes students more interested in programming more than in learning a traditional programming language. (Richtel, 2014)

In short words, I would recommend these tools for every fellow computer science students:
1.     Google Docs: online real-time document processing apps.
2.     Google Hangouts/Skype: online group meeting.
3.     Prezi: online tool for making presentations cool.
4.     Photoshop: tool for graphic designs.
5.     Code.org: web apps for learning programming.
6.     Linkedin: professional networking for everyone.




References

Android Authority. (2013, May 15). Google Hangouts Logo. Retrieved from Android Authority's Google Plus: https://plus.google.com/+AndroidAuthority/posts/2U3F5MFhbZj

Appraps. (2013, April 18). Prezi App Review for Ipad. Retrieved from Appraps: http://appraps.com/blog/2013/04/18/prezi-app-review-for-ipad/

Code.org. (2014). Anybody Can Learn | Code.org. Retrieved May 15, 2014, from Code.org: http://www.code.org

HTC Inc. (n.d.). Google Calendar Docs. Retrieved May 15, 2014, from HTC Inc.: http://www.htcinc.net/google-calendar-docs/

Linkedin. (n.d.). Linkedin - Media Resources - Logos. Retrieved 05 15, 2014, from Linkedin: http://press.linkedin.com/Media-Resources?SubjectID=644

Richtel, M. (2014, May 10). Reading, Writing, Arithmetic, and Lately, Coding. Retrieved May 15, 2014, from The New York Times: http://www.nytimes.com/2014/05/11/us/reading-writing-arithmetic-and-lately-coding.html?_r=0

Shaw, A. (2013, 09 27). Skype Logo - Official Skype Logo. Retrieved 05 15, 2014, from
Skype Blogs: http://blogs.skype.com/?attachment_id=56273

Wikipedia. (n.d.). Photoshop CC icon. Retrieved 05 15, 2014, from Wikipedia: http://en.wikipedia.org/wiki/File:Photoshop_CC_icon.png



Read More
       edit

Saturday, May 10, 2014

Published 1:28 AM by Phuc Nguyen with 6 comments

Best IDEs for Java Programmers


As a programmer, there is no surprise in getting yourself the best IDE available in the market. IDE stands for Integrated Development Environment. In another words, it is where your code stays and works its magic. It is the utmost important tool before anything else that you should care about.

So what is IDE about? Most college students get used to a few basic IDEs that their schools provide. These IDEs perform some certain basic tasks such as letting you edit the code, providing code checking, debugging tools and compiling system. We could image a usual scenario in which the first ever program "Hello World" is created. You open your IDE, create a new project, create a code file (.java), enter your code, and finally click run. Your program magically appears on screen with the world "Hello World". Your job is done and now you can get rest. This sounds easy enough to believe that you don't actually need the IDE. Maybe a text editor would work just fine.
Eclipse IDE Interface


Now if you look at professional programmers at work, they always choose to use great IDEs, instead of a text editor. A great IDE can provide you code hinting and code completion. These tools help you put your thoughts into code faster and accurately. As years go by, Java APIs and others have extended their classes and methods way more that you can remember. Maybe you could remember the 10 most used classes and look for a class on the official Java documentation. However, doing that decreases your efficiency. An IDE can help you with that.

Intellij IDEA Smart Completion
If you want to test a simple class you just finish, an IDE can help you set up a testing unit of a particular language for that class. It also provides debugging tools that let you know which lines of code are wrong. These simple tasks seem easy in an IDE but takes a lot of time to set them up manually. This is where a great IDE is a must-have  for big companies which  prefer test-driven development.

Besides that, an IDE can provide asset organization which lets you arrange all kinds of assets inside a project. Some assets might be pictures, videos, and graphic arts. They also could be audios or external files such as private libraries and APIs. In summary, an IDE is like an Operating System for your project. Without it, you could barely function as programmer.

Intellij IDEA Code Checking


Now, for a Java programmer, there are many IDEs available in the market. Most notable IDEs are Eclipse, Netbeans, and Intellij IDEA. Netbeans is quite a nice IDE for beginners, but as you progress more into programming career, Netbeans is not powerful enough to handle big project and collaboration between teams. In this post, let's examine the two popular IDEs, Eclipse and Intellij IDEA.

I will make a simple table to show you the pros and cons between Eclipse and Intellij IDEA.

Eclipse  


Intellij IDEA  


Pros
Cons
Pros
Cons
Free
Community Edition is free Fully featured IDE is paid to use
Open source
Open source for community edition Proprietary source for Commercial edition
Extensive plug-ins and support for many languages beside Java
Extensive plug-ins and support for many languages beside Java
Fully support for Android development
Fully support for Android development. Currently the main IDE that Google choose for its coming official Android IDE
Code hinting
Code hinting and code completion

Single selection Multiple selections
Good debugging tools
Excellent debugging tools

Fragmented in terms of extensive support for web frameworks Great support for many web frameworks such as Angular JS, Grunt, Gradle and more.
Compile code fast

Slow code compilation

Slow typing Fast and smooth typing

Boring and monotonous theme Many choices for themes
Run on Windows, Mac, Linux/Unix
Run on Windows, Mac, Linux/Unix
Good for Start-ups
Good for Enterprise

Not reliable for enterprise frameworks Fully support for enterprise framework

Install version control tools manually Ready-to-use version control tools
Very good refactorings
Excellent refactorings


Well, if you need to dig deeper into each IDE, you could give them a try immediately. I would recommend Intellij IDEA since its code completion feature is way beyong any IDEs I have ever tried. But again, it is your choice to get used to Eclipse or Intellij IDEA.


References

Jetbrains. (n.d.). Intellij IDEA - Features. Retrieved from Jetbrains: http://www.jetbrains.com/idea/features

The Eclipse Foundation. (n.d.). Eclipse IDE. Retrieved from Eclipse: http://www.eclipse.org/ide/

Wikipedia. (n.d.). Integrated Development Environment. Retrieved from Wikipedia: http://en.wikipedia.org/wiki/Integrated_development_environment



Read More
       edit