programming

Learning programming

http://code.google.com/edu/

-----------

Code Academy

-----------

Skills to develop:

-----------

Google has these courses and tutorials to learn.

Here are the foundation skills needed to learn:

-Natural Language Processing

-AI

-Web development

My take:

Artificial Intelligence (AI) (ie. Machine learning and natural language processing) is a highly specialized field that requires a strong foundation in:

-Object oriented programming

-Data structures

-Databases

-Algorithms

My AI Class: http://pages.cs.wisc.edu/~dyer/cs540/ They post all the practice exams/practice programs online and they have links to "other courses" or "getting started."

The "easiest" platforms would be Python or Ruby on Rails

-Here is a list of Python introductions for non-programmers: http://wiki.python.org/moin/BeginnersGuide/NonProgrammers

-Here is the "ROR" and "Introduction" tag on del.icio.us:

http://del.icio.us/search/?fr=del_icio_us&p=ROR+introduction&type=all

Scripting:

-I think PERL is the standard scripting language

In General:

-Learning programming is a major commitment. It requires an awkward obsession with multiple layers of abstraction and pure problem solving. It is not a very "people oriented."

-Programmers with a strong understanding of other fields (business, industry, project management, etc.) and strong communication skills are highly unique. (Great article on this topic: http://pmarca-archive.posterous.com/the-pmarca-guide-to-career-planning-part-2-sk

-One final thing - Any aspiring geek should read Hacker News (or StackOverflow)

My Friend's RESPONSE

On Wed, Jun 04, 2008 at 07:48:33AM -0400, Nitin Julka wrote:

> He is is wondering what foundational skills he needs to learn for:

> -Natural Language Processing

If you are interested, taking cs224N would be a good idea if you want to learn about NLP. Note that this isn't an introductory CS course and requires a background in data structures (cs106) and ai (cs221).

The current fad in NLP is using stochastic models so you'll be well served by learning about the following topics as well:

* Bayes nets

* Markov Models

* Linear Algebra

* Information Theory

* Machine Learning

> -AI

NLP is a sub-field of AI so you'll have a lot of overlap. If you take the following courses you'll get a really great foundation.

cs221 (overview of AI, enough info theory to get by; similar to cs540 mentioned by nitin), cs228 (bayes nets/markov models), cs224n/cs224u (NLP), cs229 (machine learning).

> -Web development

This you can pick up on your own with some reading if you like.

To do client side development you'll need to learn three technologies:

* html

* javascript

* css (cascading style sheets)

In order to do server side development you'll need to learn about databases (eg: mysql, mssql) and any one of the following:

* php

* python

* java

* perl

* asp

* ruby

* c++

* [just about any other language]

Lots of books exist on these standards. Unfortunately I don't have good recommendations for good books to get you started.

> -Learning programming is a major commitment. It requires an awkward

> obsession with multiple layers of abstraction and pure problem solving. It

> is not a very "people oriented" direction

I should echo this point. Learning to program (and about AI in specific) is a big undertaking. Doing it properly will most likely take a smart and highly motivated person quite some time. If you are looking for the fastest path to market, hiring is your best bet. If you want to do an amazing job with the development and are willing to take a bit more time, learning about CS is a great plan.

Good luck! :)