Last updated in 2018…

2023

Not a full update, but here are a couple recent resources:

Getting Started

As of early 2013, IMO the two best programming languages to start learning w/ are Javascript and Python. Python is probably simpler to get started with and more general purpose.

Sign up for https://github.com/ This will come in handy if you continue to code. You should check in all your code publicly as you learn. You should probably also keep a public blog/journal to keep track of your progress.

Interactive lessons for JavaScript and now Python that are good for getting your feet wet:

http://www.codecademy.com/

This is a “course” that I believe is the best for getting started programming (and learning Python)

http://learnpythonthehardway.org/

When you are writing your code, you can use this tool to visualize what exactly it’s doing:

http://pythontutor.com/

For graphics and other more general basics (JavaScript), see:

http://www.khanacademy.org/cs

Fun interactive session

http://www.iheartpy.com/

Also:

http://www.learnstreet.com/

https://wiki.python.org/moin/IntroductoryBooks

This is also a good set of getting started w/ Python Resources: http://lurnq.com/lesson/Getting-started-with-Python-Tips-Tools-and-Resources/

Tools

Git

You should learn the basics of version control, it’s one of the most fundamental/useful tools besides your text editor:

Python is built into OS X. In the Terminal, to find out what version, try typing:

    lhl@lensley-lhl ~ $ which python
    /opt/local/bin/python
    lhl@lensley-lhl ~ $ python --version
    Python 2.7.2

Tools are free unless otherwise noted.

For a coding “notebook”, you want to use iPython Notebook http://ipython.org/notebook.html

Now known as http://jupyter.org/

This is a good all-in-one app for being able to quickly iterate and interactively work with code. It’s a type of REPL (Read Eval Print Loop).

It can also render simple graphics and you can share/load interesting iPython notebooks as well.

Installation: http://ipython.org/ipython-doc/stable/install/install.html

  • Mac

    • Default

    sudo easy_install ipython[all]

    • MacPorts

      sudo port install py27-ipython +notebook

    You may also need to install py27-zmq for notebook to work.

If you want to just jump in online for typing some things quickly, you can also try:

For terminal use, iPython is good, but I also like bpython: http://bpython-interpreter.org/screenshots/

And

https://github.com/jonathanslenders/ptpython

Note, that typing ‘python’ in the Terminal will bring you into the default REPL, which works well enough for jumping in and out of. To quit, type Ctrl-d

Python code is edited in a text editor. I use vim but popular text editors include:

There are also IDEs (http://en.wikipedia.org/wiki/Integrated_development_environment) which can be useful for other languages, but not so much for Python but here are a couple:

You will want to use https://github.com/ and/or https://gitlab.com/

Git is a command line program for source code version control. You may want to use a version control GUI:

If You Get Stuck

Google - duh

Stack Overflow - http://stackoverflow.com/ - a great place to find all kinds of answers and to ask questions if you get stuck

Nullege - http://nullege.com/ - a lot of times you just need a better real-world example. Nullege can provide this

Data Science

Scipy Lecture Notes

http://www.scipy-lectures.org/

Computational Statistics in Python

http://people.duke.edu/~ccc14/sta-663/

Quantitative Economics in Python

http://quant-econ.net/py/index.html

Reference

Reference

http://docs.python-guide.org/en/latest/index.html

Python By Example

http://www.lightbird.net/py-by-example/

PLEAC-Python

http://pleac.sourceforge.net/pleac_python/index.html

Python Cheat Sheet

https://docs.google.com/file/d/0B9VT_L2CDnKvODYyNTc5NjktYmMyOC00NDFkLTliNTctMzQzMTAzYjUyYmYy/edit?pli=1

http://stackoverflow.com/questions/tagged/python

Python Code Search Engine

http://nullege.com/

Grow

http://www.doughellmann.com/PyMOTW/

http://www.pythonforbeginners.com/

Version Control

http://learn.github.com/p/intro.html

http://mac.github.com/

Courses

http://learn.edx.org/mit-python/

https://www.udacity.com/course/programming-foundations-with-python—ud036

https://www.coursera.org/courses?languages=en&query=python

On Programming

Unix philosophy

http://en.wikipedia.org/wiki/Unix_philosophy

The Pragmatic Programmer Quick Reference Guide

http://www.codinghorror.com/blog/2004/10/a-pragmatic-quick-reference.html

The Mythical Man Month

http://en.wikipedia.org/wiki/The_Mythical_Man-Month

Stories

http://rodriguezcommaj.com/python-in-30-days-halfway-there/

http://www.learnwithjeff.com/2012/08/21/how-to-get-a-job-as-a-developer-in-less-than-six-months/

--- OLD STUFF ---

More Python

Python 2.7 Download: http://www.python.org/download/releases/2.7.2/

I edit w/ just vim, and have an interpreter handy on the side to do debugging (I also like http://www.reinteract.org/ and http://dreampie.sourceforge.net/ for shells) but there are IDEs available as well:

http://code.google.com/p/pyscripter/

http://code.google.com/p/spyderlib/

http://code.google.com/p/iep/

Learning:

http://www.aleax.it/goo_py4prog.pdf - good quick dive, comparison

http://hetland.org/writing/instant-python.html

http://stromberg.dnsalias.org/~dstromberg/Intro-to-Python/Intro%20to%20Python%202010.pdf

http://wiki.python.org/moin/BeginnersGuide/Programmers

http://learnpythonthehardway.org/book/

http://diveintopython.org/

http://docs.python.org/tutorial/

http://www.intuit-symbiosis.org/computing/?uid=9

http://homepage.mac.com/s_lott/books/python.html

Reference:

http://docs.python.org/ - official docs

http://docs.python.org/tutorial/stdlib.html - official intro to std library

http://docs.python.org/library/index.html

http://pleac.sourceforge.net/pleac_python/ - Perl Cookbook for Python

http://langref.org/python/solved - programming comparison

http://effbot.org/librarybook/ - older but good library reference

http://pbe.lightbird.net/ - examples for most modules

http://www.doughellmann.com/PyMOTW/ - another tour of standard library

http://nullege.com/ - good place to search for examples for under-documented/complex stuff

https://github.com/search - search by language also pretty useful

Physical book:

http://www.amazon.com/dp/0672329786

here are lots of free books/tutorials to start with, I’d click into

the intros and maybe the first chapter of each of these to see if

there’s one you like more than another:

http://learnpythonthehardway.org/ - includes all the info you need to

get started

http://www.greenteapress.com/thinkpython/thinkpython.html

http://diveintopython.org/

http://effbot.org/pytut/

http://wiki.python.org/moin/BeginnersGuide/NonProgrammers

http://docs.python.org/tutorial/

and videos:

http://www.youtube.com/watch?v=4Mf0h3HphEA - installing

http://www.youtube.com/watch?v=tKTZoB2Vjuk - Google’s 101 class

http://code.google.com/edu/languages/google-python-class

http://www.youtube.com/watch?v=k6U-i4gXkLM&feature=list_related&playnext=1&list=SP4C4720A6F225E074

  • MIT course in Python; if you really feel like sitting through a

virtual semester of how kids learn this stuff. If you’re interested in

theoretical stuff, you’re probably better off going through

http://mitpress.mit.edu/sicp/ but different people learn differently

so including

online interpreters:

http://shell.appspot.com/

http://people.csail.mit.edu/pgbovine/python/

Python also has a lot of simple web frameworks. You can get something

running using very few lines of code:

http://bottlepy.org/docs/dev/ - almost totally self-contained

http://flask.pocoo.org/ - better, super simple, nice docs

http://webpy.org/docs/0.3/tutorial - one of the earliest microframeworks

http://www.tornadoweb.org/ - not the friendliest to newbies, but what

I’m using now

Also, Python is the default language for Google App Engine, which will

let you easily get apps up and running hosted on Google

infrastructure: http://code.google.com/appengine/ (free for small

projects)

For programming questions, http://stackoverflow.com/ is an amazingly

useful site btw (will pop up in Google searches often)

Also, an intro to the Terminal / Command Line:

good intro video: http://www.youtube.com/watch?v=-Vl4rpZVA6I&feature=related

nice conceptual essay intro: http://www.cryptonomicon.com/beginning.html

with 3rd party commentary: http://garote.bdmonkeys.net/commandline/index.html

wikipedia:

http://en.wikipedia.org/wiki/Linux

http://en.wikipedia.org/wiki/Command-line_interface

UNIX:

http://www.ee.surrey.ac.uk/Teaching/Unix/

http://snap.nlc.dcccd.edu/learn/idaho/unixindex.html

http://www.makeuseof.com/tag/an-introduction-to-the-linux-command-line/

http://www.freesoftwaremagazine.com/articles/command_line_intro

http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf

http://tldp.org/guides.html

http://randomfoo.net/tutorials/unix/

http://www.cs.usfca.edu/~parrt/course/601/lectures/unix.util.html

More intro vids. Search for “command line” or “terminal” and

intro/introduction/tutorial for a bajillion of these

http://www.youtube.com/watch?v=6kxK8Fqcs5o

http://www.youtube.com/watch?v=T6pp82CVQfQ

http://www.youtube.com/watch?v=4zmd8dclqPU

Cheat sheets:

http://freeengineer.org/learnUNIXin10minutes.html

http://fosswire.com/post/2007/08/unixlinux-command-cheat-sheet/

http://cb.vu/unixtoolbox.xhtml

http://www.rain.org/~mkummel/unix.html

http://www.scottklarr.com/topic/115/linux-unix-cheat-sheets---the-ultimate-collection/

If you’re looking to get into HTML5, here are some resources I like:

http://www.focus.com/images/view/11905/ - simple infographic

http://slides.html5rocks.com/ - interactive overview presentation of

what html5 does

http://html5demos.com/ - a bunch of demos

http://diveintohtml5.org/ - good ref for implementation

As you can see, HTML5 is a pretty huge set of standards that may in a

lot of ways not exactly what you need to learn if you’re trying to get

a simple page up.

So I’ll back up a bit.

Personally I’d start by making sure that I had a good overview

understanding of how the web works on a technical level. Wish I had

better resources offhand, but a couple links to get started:

http://philip.greenspun.com/panda/ - ancient, but readable and a good overview?

http://en.wikipedia.org/wiki/World_Wide_Web

http://en.wikipedia.org/wiki/Web_development - not too bad an overview

http://en.wikipedia.org/wiki/Multitier_architecture

http://www.w3schools.com/web/default.asp - a short primer

I mentioned the other night that the LAMP stack (Linux [OS], Apache

[Web Server], MySQL [Database], and Perl/PHP/Python [server-side

scripting]) is the traditional stack for web development. Most of the

Internet runs on some variation of that. Rather than jumping in willy

nilly though, if you had to start somewhere, I’d learn some basic

programming skills first. I had suggested JavaScript as a place to

start, but Python might actually be easier. It has better intro texts

and is less confusing.

There are lots of free books/tutorials to start with:

http://learnpythonthehardway.org/ - includes all the info you need to

get started

http://www.greenteapress.com/thinkpython/thinkpython.html

http://diveintopython.org/

http://effbot.org/pytut/

http://wiki.python.org/moin/BeginnersGuide/NonProgrammers

http://docs.python.org/tutorial/

and videos:

http://www.youtube.com/watch?v=4Mf0h3HphEA - installing

http://www.youtube.com/watch?v=tKTZoB2Vjuk - Google’s 101 class

http://code.google.com/edu/languages/google-python-class

http://www.youtube.com/watch?v=k6U-i4gXkLM&feature=list_related&playnext=1&list=SP4C4720A6F225E074

  • MIT course in Python; if you really feel like sitting through a

virtual semester of how kids learn this stuff. If you’re interested in

theoretical stuff, you’re probably better off going through

http://mitpress.mit.edu/sicp/ but different people learn differently

so including

online interpreters:

http://shell.appspot.com/

http://people.csail.mit.edu/pgbovine/python/

Python also has a lot of simple web frameworks. You can get something

running using very few lines of code:

http://bottlepy.org/docs/dev/ - almost totally self-contained

http://flask.pocoo.org/ - better, super simple, nice docs

http://webpy.org/docs/0.3/tutorial - one of the earliest microframeworks

http://www.tornadoweb.org/ - not the friendliest to newbies, but what

I’m using now

Also, Python is the default language for Google App Engine, which will

let you easily get apps up and running hosted on Google

infrastructure: http://code.google.com/appengine/ (free for small

projects)

For programming questions, http://stackoverflow.com/ is an amazingly

useful site btw (will pop up in Google searches often)

Once you understand the basics of programming, you’ll be in a much

better place. A lot of software is in PHP, another scripting language,

but a lot of server-side development has been shifting to languages

like Python, Ruby, and even JavaScript (http://nodejs.org/)

If you’re just getting started, I’d actually just stop here for now.

I dug up some other links, so gonna paste some stuff at the bottom

here for later followup though…

After that you’re next step is probably to learn SQL, which is how to

talk to databases:

http://www.topsourcecode.com/index.php/mysql-tutorials/51-step-by-step-install-mysql-to-windows-tutorial.html

http://philip.greenspun.com/sql/

http://sqlzoo.net/

http://dev.mysql.com/tech-resources/articles/mysql_intro.html

LAMP/WAMP stack

http://developer.practicalecommerce.com/articles/2592-Create-a-Virtual-LAMP-Development-Server

http://blog.johan-mares.be/ict/linux/installing-a-virtual-ubuntu-lamp-server-on-mac-os-x-using-virtualbox/

http://bitnami.org/stack/wampstack

If you’re planning on doing any of this semi-professionally or “in the

real world” there’s no getting around learning some LINUX/UNIX. Like I

said, I recommend Ubuntu. Wikipedia is a good start to get a

background: http://en.wikipedia.org/wiki/Linux

UNIX:

http://www.ee.surrey.ac.uk/Teaching/Unix/

http://snap.nlc.dcccd.edu/learn/idaho/unixindex.html

http://www.makeuseof.com/tag/an-introduction-to-the-linux-command-line/

http://www.freesoftwaremagazine.com/articles/command_line_intro

http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf

http://tldp.org/guides.html

http://randomfoo.net/tutorials/unix/

http://www.youtube.com/watch?v=6kxK8Fqcs5o

Ubuntu:

https://wiki.ubuntu.com/

http://ubuntuforums.org/

https://help.ubuntu.com/11.04/serverguide/C/index.html

Virtual Machines (for easy installation):

http://www.virtualbox.org/

http://www.vmware.com/products/player/faqs.html

https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks

Foursquare Key