A plethora of useful books, videos, and online resources are freely available all over the internet, and I list here the ones I found very awesome and essential-to-know for everyone interested in Scientific Computing. I will try to keep this list up-to-date with the materials I face every day, most of which published by open source and open knowledge community.
Introduction to Numerical Methods for Variational Problems: If you think you know Finite Element, have a look at this book to know that you don’t. A step-by-step guide to understand the mathematical underlying of Finite Element.
Finite Difference Computing with PDEs - A Modern Software Approach: A book to renew your previous knowledge of Finite Difference Method.
Programming for Computations - A Gentle Introduction to Numerical Simulations with Python or MATLAB/Octave: Two separate guides to implement numerical algorithms in Python and GNU Octave/MATLAB.
Practical Numerical Methods with Python: A great Jupyter-based course to explore practical numerical methods with Python.
Wolfgang Bangerth’s Video Lectures: A set of useful videos in which an expert numerical scientist talks about different aspects of scientific computing in details but in a simple way.
Introduction to Numerical Methods for Engineers: A large number of introductory videos to learn the basics of numerical methods (linear algebra, curve fitting, numerical integration and differentiation, etc.).
Introduction to Applied Numerical Computing: A collection of instructive videos on various aspects of numerical computing in Python, from the basics of programming (including high-performnace computing and version control) to details of finite difference and finite element methods.
CFD Python, 12 Steps to Navier-Stokes: A practical set of Jupyter notebooks and videos to understanding the foundations of Computational Fluid Dynamics (CFD).
Introduction to Computational Science and Engineering: A comprehensive course to obtain a deep insight into Computational Engineering. Although it is relatively long and time-consuming to watch, but you might be interested in some specific topics (lecture list).
A Very Basic Intro to Scientific Python: Includes two short booklets on the overview of Python 2 syntax and a physics example implemented in Python.
How to Think Like a Computer Scientist, Learning with Python 3: A great book to learn every aspect of Python programming language.
How to Think Like a Computer Scientist, C++ Version: An easy-to-understand book to start learning C++ from scratch.
Think OS, A Brief Introduction to Operating Systems: The simplest text I’ve ever found to describe how operating systems work.
Learn Git Branching: An interactive and fun website to learn Git and it’s features.
Mastering Machine Learning with Python in Six Steps: A collection of Jupyter notebooks to jump-start learning the basics of Machine Learning.
Introduction to Linear Algebra for Applied Machine Learning with Python: The best applied introduction to the basics of linear algebra in Python I’ve ever seen.