External resources#
Resources used (and linked) in these lecture notes:
Prerequisites:
Programming for Everybody (Getting Started with Python) from EdX: if you have no programming experience, this is recommended before you take this lecture, this will guide you through the first programming steps. If you are able to learn by yourself, the textbook is available for free.
Linux and bash scripting:
Ryan’s Tutorials for the linux command line and bash scripting are entertaining and well designed.
Python tutorials:
the official tutorial, always a good place to start.
the scipy lecture notes, a good overview of the scientific python stack for scientists with previous programming experience.
Python reference:
the python documentation is your best reference for any question related to the language and the standard library.
Testing
Katy Huff’s scientific python testing tutorial: a one and a half hour introduction to testing practices, from the basics to continuous integration
Floating point precision errors
Python’s Floating Point Arithmetic article is a good read but a bit tough for beginners
What Every Programmer Should Know About Floating-Point Arithmetic is a more gentle introduction, but you still might want to use a search engine for more information.
Numpy
Why python is slow by Jake Vanderplas
From Python to Numpy by Nicolas P. Rougier: an open-access book on numpy vectorization techniques (rather advanced).
The numpy reference: the official documentation is always the best place to obtain first hand information.
Scientific Python
Python Data Science Handbook by Jake Vanderplas: an open-access textbook on using Python for Scientists
Python scripts, packages, namespaces and scopes
an entry level tutorial from RealPython about python scripts
blog post by Sebastian Raschka: A Beginner’s Guide to Python’s Namespaces, Scope Resolution, and the LEGB Rule
Object Oriented Programming The web is full of blog posts and basic tutorials about OOP in python. Unfortunately, most of them make a poor job at explaining why OOP can be useful and when not. I will try to find better resources, but for now I recommend:
Documentation
Some youtube videos about tech in general
(this list will be updated when the notes get written further)