02 January 2012

Learning Java for first time programmers

I'm designing a course for first time programmers to learn Java.  Here are some useful resources I found that I like:

Interactive Tutorials
  1. Introduction to Computer Science using Java (Bradley Kjell)

Lecture Notes
  1. Introduction to Programming in Java (MIT OCW)

Textbooks
  1. Think Java: How to Think Like a Computer Scientist (Allen B. Downey) - suitable for AP Computer Science, so suitable for younger students
  2. Introduction to Programming Using Java, Sixth Edition (David J. Eck) - link not working for me right now but I've heard good things about it
  3. Introduction to Programming in Java (Robert Sedgewick, Kevin Wayne) - contains case studies connected to real scientific or business uses, but means requires students to have a more advanced math background more suitable for 2nd+ year university undergrad students.

01 January 2012

Web Mobile App Development Tools and Libraries

Here's some tools and libraries that look interesting for web development, mobile App development, etc.

To begin, Firefox and Chrome, of course, are the browsers of choice for a web developer.

Tools for Firefox

Firefox has tons of tools for web developers! Take special note of:
  1. Firebug,
  2. Console²,
  3. DOM Inspector,
  4. FoxGuide,
  5. HTML Validator,
  6. JSView,
  7. LiveReload,
  8. PageSpeed,
  9. Phoenix,
  10. SQLite Manager,
  11. Web Developer.
  12. ColorZilla

If using Firebug, then also take special note of Acebug, FireRainbow.

Tools for Chrome

Chrome is younger and has less tools, but many web developers prefer Chrome over Firefox.  And there are definitely tools:
  1. Google Chrome Developer Tools
  2. Web Developer
  3. Firebug Lite
  4. Validity
  5. ColorZilla 
  6. Color Generator
  7. Eye Dropper

JavaScript Validator

When programming in JavaScript, you must use JSLint to validate that the JavaScript you wrote conforms to modern recommended idioms.

You can run JSLint on the command line locally if the JSLint program is set up correctly based on the JSLint source files. But then a JavaScript interpreter outside of the browser is required, such as node.js, Rhino, or spidermonkey.  Another, more convenient, possibility is to use the jslint4java wrapper program.


Libraries

dust.js has been selected by LinkedIn recently as their templating engine to unify the way web pages designed in HTML and CSS gets filled with data generated by other server based programs written in various languages including Java, Grails, and JRuby.  It is free and open source (looks like MIT license)

PhoneGap is a free and open source (Apache License) library for writing cross-mobile-platform HTML5 app to access technologies native to the mobile platform (vs. programs being stuck in the browser).

For building gesture/touch-enabled UI for cross-mobile-platform Apps, there is jQuery Mobile, which is a very young project still, and is free and open source: dual licensed under MIT and GPL2.  There is also Sencha Touch, a more mature library that is free and open source, cross-licensed under GPL3, a modified GPL3, a free (as in beer) commercial software license, and a paid commercial OEM license.

You might also need a library to add MVC or MVVM structure to your App.  For that, consider Backbone.js (MVC) or Knockout.js (MVVM).

For everything else, there's jQuery.

See also:
  1. Building Large-Scale jQuery Applications
  2. Tools For jQuery Application Architecture – The Printable Chart