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.

  1. IBM’s Python Basics for Data Science

  2. Kaggle Python Course

  3. CodeAcademy Data Science Path. Take Python modules 4-10. This course introduces Numpy and Panda as well.

General computational Python libraries#

  1. Numpy Tutorial - Stanford’s CS231n. This Numpy Cheatsheet may be useful as well.

  2. This is the “official” documentation on Pandas: Pandas: powerful Python data analysis toolkit

  3. 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.

  4. 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.