You can learn a lot of math with a little coding.

Mathematical programming gives you tools for learning, exploring, and discovering applied mathematics in areas including statistics, data science, and signal processing, etc.

This is why I use a combination of traditional instruction (lecture slides, words, diagrams) and hands-on programming in MATLAB and Python when teaching.

Master Python for scientific coding

32+ hours of instruction (>80 hours in total, including exercises) on using Python for scientific computing. No previous background in Python necessary!

Master math with Python

31+ hours of instruction (>50 hours in total, including exercises) on how to use Python as a tool for learning concepts and visualizations in mathematics.

Statistics, math, and coding are running human civilization.
You must learn these topics.

Master statistics and machine learning: intuition, math, code

35 hours of instruction (>50 hours in total, including exercises) on a rigorous deep-dive into statistics and machine learning. All concepts are implemented in Python and MATLAB.

Join the discussion

Join us at to chat about coding/math/analysis issues,
to introduce yourself, or to express your existential gripes.

Complete linear algebra: theory and implementation

24+ hours of clear explanations of concepts in linear algebra, including vectors, matrix multiplications, least-squares projections, eigendecomposition, and singular value decomposition. There are also many pencil-and-paper exercises and coding challenges to solidify and expand your knowledge. The course has a strong focus on modern applications-oriented aspects of linear algebra. MATLAB and Python codes are included.

Book: Linear algebra: Theory, Intuition, Code

~600 pages of wholesome mathy goodness, complete with equations, explanations, exercises, visualizations, and code (MATLAB/Python). It comes in both physical and ebook forms (although I recommend the physical version because the formatting is slightly better).

PCA & multivariate signal processing, applied to neural data

8 hours of instruction on theory, practice, and implementation of covariance-based dimension-reduction and source-separation methods for multivariate data. Sample EEG data are provided, and the methods are applicable to any multichannel time series data. You will also learn how to simulate multichannel data. MATLAB codes and sample datasets are included.

What my students say

I am grateful to have over 90,000 students in over 100 countries, with over 5,000 reviews. Below are some of the written reviews of my online courses.

Eric Kappel on "Signal Processing"

It is a PERFECT match for me! The ease at which the lecturer presents the complex material, which is generally written in a (for me) too complex format in textbooks, is ... relaxing, reassuring, motivating, fun! It is like i am watching an exiting movie. It is the best value for money for my education (i think even) ever!!!

Renzo Torrecuso on "Multivariate signal processing"

Each class that I watch and pause to practice every line of code I get more and more motivated with Professor Cohen's elegance in coding and teaching. It really fills me with enthusiasm to become a good data scientist. Thanks a lot Prof Cohen!

Laurens Sandt on "Complete Linear Algebra"

A great course starts with a great teacher and Mike is that. Promptly answers all question and remarks you might have. The content of this course is excellent, focused on applications of linear algebra it never shies away from proofs, which are important for understanding the abstractions of mathematics. I personally learned not only a lot of maths, my Python has improved dramatically and last but not least to me this was a course into Latex. Thanks Mike, I will be off to investigate Matlab a bit more and will return for another course!

Melinna on "Master MATLAB"

I do have some of practice in matlab programming. I know that I have a long way to go in improve my skills, but it just seems difficult to find a systematic and advanced way to follow. This course makes me feel more powerful and more capable, not only in the matlab programming but also a better way to organize my thought and make everything fine and efficient. I really love Mike!

Master MATLAB through guided problem-solving

40 hours of video instruction on intermediate-to-advanced MATLAB programming instruction (the course will be longer if you do all the exercises!). Each of >150 hands-on lessons revolves around a specific application in graphics, data analysis, image processing, segmentation, import/export, and so on.

MATLAB onramp: coding, concepts, confidence, style

6+ hours of video instruction on MATLAB programming (plus several additional hours for completing the exercises!). This course focuses on developing strategies for debugging, programming style -- how to think like a MATLAB programmer. Ideal for a beginner who is looking to develop beyond the for-loop.

Learn image processing and GUIs while having fun in MATLAB

This course focuses on the key image processing techniques in MATLAB, including spatial filtering, segmentation, transparency, histogram equalization, and so on. You will also learn to create and program in graphical user interfaces (GUIs). Finally, you will improve your general MATLAB programming skills. The course comes with 10+ hours of instruction and >3,000 lines of MATLAB code that you can use for learning and apply to your own data.

How to learn from my online courses

Watch the videos online

I design my courses for cumulative learning. But you can re-watch, skip ahead, or go back to a previous video whenever you want.

Take notes by hand

Education research has consistently shown that taking notes by paper-and-pen is the best way to learn, remember, and understand material.

Download the code and test it on your computer

You'll learn the concepts from watching the video lectures, but you will really understand the material by doing it yourself!

Ask questions

All of my courses have dedicated Q&A forums. I try to respond to questions within 1-2 days.

  • Use coupon code 202103 to get the lowest price on all of my courses.

Signal processing problems, solved in MATLAB and Python

In this course, you will learn the most commonly applied signal-processing methods, such as filtering, denoising, convolution, resampling, interpolation, outlier detection, and so on. The course comes with 11+ hours of instruction and >10,000 lines of MATLAB and Python code that you can use for learning and apply to your own data.

Understand the Fourier transform and its applications

Learn the theoretical and computational bases of the Fourier transform, and its implementation in modern applications in digital signal processing, data analysis, and image filtering. The course covers the basics and also advanced topics including effects of non-stationarities, spectral resolution, normalization, filtering. MATLAB and Python codes are included.


Same as the above course but given in Chinese language (translated by Biao Han).

Generate and visualize data in Python and MATLAB

Most data-science courses teach analysis methods, but there are many methods; which method do you use for which data? The answer to that question comes from understanding data. In this course you will learn how to generating different kinds of data. This course comes with MATLAB and Python code, and therefore is a great way to improve programming skills.

Data analysis and programming skills are increasingly crucial in science (STEM) education and research.

Analyzing neural time series data

40+ hours of video lectures that supplement my book "Analyzing Neural Time Series Analysis."

Solved challenges in neural time series analysis

This is a follow-up to the above course. It presents additional and more advanced material that will help you bring your neuroscience time series analysis skills to the next level.

Modern learning requires a modern teaching strategy.

Book: Linear algebra: Theory, Intuition, Code

~600 pages of wholesome mathy goodness, complete with equations, explanations, exercises, visualizations, and code (MATLAB/Python). It comes in both physical and ebook forms (although I recommend the physical version because the formatting is slightly better).

Book: MATLAB for brain and cognitive scientists

This book is designed to bring scientists in psychology, neuroscience, and related fields to intermediate and advanced levels of programming proficiency.

Book: Analyzing Neural Time Series Data

A comprehensive guide to the theory and implementation of analyzing electrical brain signals (MEG, EEG, LFP). The focus is on time-, time-frequency- and synchronization-based analyses, including data visualization and statistics.

Book: Fundamentals of time-frequency analysis

This low-cost book focuses on practical implementations of time-frequency analyses in Matlab/Octave. The book explains time-frequency analyses through written explanations and many figures, rather than through opaque mathematical equations.

No shortcuts to mastery

Real expertise takes time and effort. It also takes a dedicated teacher who knows what it's like to struggle with learning.
Don't worry, I'm here to help.

Week-long course: Analyzing neural time series data

One intensive week of learning about modern methods for time series analysis in neuroscience. All in-person courses are canceled in 2020 due to the coronacrisis. I hope you are healthy and safe, and I hope to see you in a future "in-vivo" course!

Week-long course: Linear algebra for neuroscientists

This course covers applied linear algebra in multichannel neuroscience datasets, including source-separation, eigendecomposition (PCA, GED), least-squares, and cross-validation. As written above, there are no courses in 2020. Let's hope for 2021!

My educational background

I originally studied classical music but felt unsatisfied and saw no future for myself as musician or composer. After some meandering through English and philosophy departments, I settled on experimental psychology, which gradually took me into cognitive neuroscience and now to my current research topic of systems neuroscience.

Along the way, I learned programming, signal and image processing, statistics, spectral analysis, and matrix decompositions. I take an applications- and implementations-oriented approach to mathematics, because I feel like I understand a method or algorithm only when I can teach others how to understand it and implement it in programming, e.g., Python or MATLAB.

Dry facts about my academic timeline can be seen on the final page of my CV (download below).

What's the deal with the "X"?

That is a closely guarded secret, known only to a select few. You may ask, but you may receive a mysterious and opaque answer.

How I create these courses

It's a lot of work! And this is not my main job, so I work on new courses a bit in the early mornings, evenings, and sometimes in the weekends. I try to find a balance between perfectionism and pragmatism: The courses should be high-quality, but they also need to exist to be useful.

Early course creation steps include planning, writing code, and writing lecture notes or scripts. Then I make the slides (using a slide template designed by a professional science graphics designer), and then cycle back through planning/coding/writing/slides again. Then filming and editing. And then I catch some mistakes and have to re-film and re-edit. That's life...

The picture at left shows my DIY recording chamber. It's a home-built desk with a "shell" made of sound-aborbing foam, two monitors (one for screencasting, the other for code/notes/scripts), a Blue Yeti mic, and a Kartell lamp for inspiration. Off-camera is a giant chocolate fountain that I jump into when I finish a course. (That last part is possibly not entirely true.)