Last updated in 2018…
2023
Not a full update, but here are a couple recent resources:
- Trinket interactive lessons https://hourofpython.com/
- DataCamp Intro to Python https://www.learnpython.org/
- Free 100 x 15 minute lessons: https://replit.com/learn/100-days-of-python
- 25h Learn Python 2 https://www.codecademy.com/learn/learn-python
- https://www.pythonmorsels.com/
- https://learnpythonwithjupyter.com/
- https://gist.github.com/kenjyco/69eeb503125035f21a9d
- https://colab.research.google.com/github/data-psl/lectures2020/blob/master/notebooks/01_python_basics.ipynb
- https://colab.research.google.com/
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:
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:
For graphics and other more general basics (JavaScript), see:
Fun interactive session
Also:
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:
- https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F
- https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners
- https://docs.github.com/en/get-started/quickstart/hello-world
- https://rogerdudler.github.io/git-guide/
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:
- Light Table (http://www.lighttable.com/)
- Alpha, but now supports Python via iPython: http://www.chris-granger.com/2013/04/28/light-table-040/
- Atom (https://atom.io/)
- Closed beta, drop me a line if you need an invite
- Sublime Text (http://www.sublimetext.com/ - $60)
- Komodo Edit (http://www.activestate.com/komodo-edit)
- MacVim (http://code.google.com/p/macvim/)
- Learning vim is its own adventure and not recommended for people just getting started, but I (and others) swear by it
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:
- IEP (http://code.google.com/p/iep/)
- PyDev (http://pydev.org/)
- PyCharm (http://www.jetbrains.com/pycharm/ - 199)
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
http://stackoverflow.com/questions/tagged/python
Python Code Search Engine
Grow
http://www.doughellmann.com/PyMOTW/
http://www.pythonforbeginners.com/
Version Control
http://learn.github.com/p/intro.html
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/
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://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://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://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://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://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://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://philip.greenspun.com/sql/
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://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://randomfoo.net/tutorials/unix/
http://www.youtube.com/watch?v=6kxK8Fqcs5o
Ubuntu:
https://help.ubuntu.com/11.04/serverguide/C/index.html
Virtual Machines (for easy installation):
http://www.vmware.com/products/player/faqs.html
https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks
Foursquare Key