In this course, you’ll learn to develop scientific and numerical programs that solve problems. It’s ideal for scientists, engineers, and programmers who need to model mathematical or physical systems. You’ll get a core toolkit of algorithms that can be used in a wide variety of applications, using the low-level capabilities of the C programming language.
The close-to-the-metal approach means you’ll learn to optimize our programs to get the absolute best performance that our hardware can provide. You’ll see how the design of algorithms affects their performance and accuracy, the tools that can be used to optimize your code and develop your intuition about numerical problems. Finally, you’ll examine the growing array of parallel solutions that enable you to take advantage of multi-core CPUs, distributed compute clusters and GPU accelerators.
By the end of this course, you’ll know how to write fast, accurate code that can run on many different platforms and solve many different scientific problems.
About the Author
Benjamin Keller is a postdoctoral researcher in the MUSTANG group at Universität Heidelberg's Astronomisches Rechen-Institut. He obtained his Ph.D. at McMaster University and got his BSc in Physics with a minor in Computer Science from the University of Calgary in 2011. His current research involves numerical modeling of the interstellar medium over cosmological timescales.
He comes with an experience in writing scientific code in C, FORTRAN, and Python. He also works as a Python consultant for data science startups, building visualization and data science pipelines.
At McMaster, he worked with Dr. James Wadsley in the Physics & Astronomy department. His current research involves numerical simulations of galaxy formation on supercomputers with 10,000+ cores. He has also been a key contributor to multiple scientific computing projects, from simulation codes to visualization libraries.