Learn Python
Below is a list of recommended resources that will teach you quickly Python. You can select the right format based on your own experience on how best you learn. No matter what you do there is a good Python book to help you and use as a reference: Think Python by Allen B. Downey, 2nd edition. This is an open source book. It is available without charge in HTML and PDF formats at http://greenteapress.com/wp/think-python-2e/ (Links to an external site.).
Basic Python
Harvard’s CS50p is the most popular way to learn basic Python. Accessible here and in edX.
Python and Data Science
The following are your options with 1 being the highest priority.
CodeAcademy Data Science Path. Take Python modules 4-10. This course introduces Numpy and Panda as well.
General computational Python libraries
Numpy Tutorial - Stanford’s CS231n. This Numpy Cheatsheet may be useful as well.
This is the “official” documentation on Pandas: Pandas: powerful Python data analysis toolkit
For many computational problems you may need to use constructs that need compute acceleration such as GPUs, TPUs etc. Pytorch is a Python package that provides two high-level features:
- Tensor computation (like NumPy) with strong GPU acceleration
- Deep Neural Networks built on a tape-based autograd system
Many practitioners use Pytorch to prototype a from-scratch implementations and understand how a new concept works without necessarily using the clases and functions provided by the library. This way Pytorch is similar to JAX albeit without the benefits (but also the constraints) of functional programming that JAX provides. In addition,
torch.func
will also offer a JAX-like API for Pytorch. Since Pytorch is more popular than JAX and is used in many production systems as of the time of the writting of this book, we recommend new learners to start with Pytorch after learning the basics of numpy.JAX is an extensible system for composable function transformations and offers a numpy-like API and can run your code much faster. You can read its benefits for a wide range of scientific applications here. JAX has been extended with NN libraries such as Equinox but can also be used without any NN libraries to build for example differentiable physics simulators and other computational applications.
Preparing for an interview
Leetcode is perhaps the most popular destination for anyone that wishes to use the skills learned here to launch a software development career in tech. It helps you answer all coding-based interview questions.