What sort of path should I follow to make a the transition from high school physics to computational science?

Context 15 years teaching experience in physics and general science. Maths is currently rusty, but currently I teach college level physics to 14 year old students in China using algebraic approaches and soon to transition to calculus based approaches (AP1 level). My level of computing experience is probably basic level. I can make simple command line scripts using procedural and OOP approaches in C++ and python. Some of my current projects include:-

  • Simulating a meandering river using random walks
  • Making a small class with methods for basic matrix operations
  • Implementing some simple numerical solving techniques such newton-raphson and bisection methods

My current roadmap is as follows

  1. Continue to work through simple problems from undergraduate/graduate level books.
  2. Enroll on an MSc course for scientific computing or Data Science with a heavy modelling component.

Project Euler whilst appealing to a mathematician, my interest are mainly routed in science and physics. Is there perhaps a version of project euler that has problems related to science in general?

Recently I have just become a little lost. I would like to learn alongside my job, so I can dedicate some time out of work. But since I work internationally, distance learning courses would probably be best.

  • 1
    $\begingroup$ You will probably find this interesting: numerical-tours.com $\endgroup$
    – lightxbulb
    Feb 7 at 8:13
  • $\begingroup$ @lightxbulb Thanks a lot! this looks really helpful. Whilst I have come across some of the terminology, I haven't got that far in terms of my mathematical literacy to implement a lot of these on a basic level for different applications. I have already bookmarked it and it $\endgroup$ Feb 7 at 9:09
  • 2
    $\begingroup$ Here are some free resources covering fundamental topics to scientific computing, taught by a prof working in the scientific computing area at UIUC: 1) relate.cs.illinois.edu/course/cs357-s17 2) relate.cs.illinois.edu/course/cs450-f23 Depending on what aspects of physics you are into, you can probably find books focused on simulating those areas. Everything from fluid mechanics to solid mechanics, E&M, etc. Might want to learn basics of solving partial differential equations before diving into those types of books. $\endgroup$
    – spektr
    Feb 7 at 18:35
  • $\begingroup$ @spektr Thanks a lot! those courses cover exactly what I need I think. It matches up quite nicely with the K A Stroud Advanced Engineering Mathematics book I am using. I think the road map for PDEs might look like solving them first with pen and paper/spreadsheet methods, then moving onto some simple examples in different sectors of physics. Unfortunately, being a high school teacher has an occupational hazard of being interested in everything. $\endgroup$ Feb 10 at 7:19
  • $\begingroup$ @KishanBhatt awesome! The benefit of being a high school teacher is as you learn these things, you can come up with some cool demos to show your students (you will want to look into visualization techniques to help do this well). Anyway, I hope the learning process goes well! $\endgroup$
    – spektr
    Feb 11 at 4:14

1 Answer 1


I think most people who are into computational science start the same way. When they learn the basics and decide which problems they want to solve, they start learning specific computational methods to solve them.

After you brush up on your math (algebra and analysis), you should study a book on numerical analysis. That's pretty much the main starting point from which everything else is built. I recommend this book.

The next thing I would advise you is to study the finite difference method. No matter what physics branch you choose to be in, there is always a chance you can solve your problem quickly using this method. It is a simple method and you will encounter some key concepts that can also be applied to other methods.

At this point, you should choose a physics branch that you would like to study and solve problems in. If you want to deal with fluid mechanics for instance, then you should study the finite volume method. If you want to deal with elastic body mechanics, you should study the finite element method. These methods are pretty much the most popular and applied ones, and there is a good amount of literature on them.

EDIT: I recommend also learning to write code in Matlab or Mathematica. They are quite handy if you want to solve a problem by writing your own algorithm.

  • $\begingroup$ I would have suggested at least python instead matlab/mathematica. The latter are not free and are more limited for programming purposes. $\endgroup$
    – lightxbulb
    Feb 9 at 18:12
  • $\begingroup$ @lightxbulb, funny you should mention matlab, I was just looking into buying a license for an older version that I could pair up with python. $\endgroup$ Feb 10 at 7:21
  • 1
    $\begingroup$ Nikola, thanks a lot for the suggestion of finite difference method. Before, I had underestimated it's popularity or applicability in certain areas of physics. Given that my current level is getting to grips with calculus and algebra for undergrad level as it has been a while since I covered anything close to postgrad level and beyond. $\endgroup$ Feb 10 at 7:24
  • $\begingroup$ @KishanBhatt I believe python can do everything that matlab can and more. $\endgroup$
    – lightxbulb
    Feb 10 at 9:24
  • $\begingroup$ @lightxbulb Yes I have been investigating python quite a lot. I wanted to learn matlab as a way to cross-validate results. Sometime ago, I was coding C++ classes for a problem where I had to calculate the exponent of a matrix. I coded it, but had no idea if my values were correct. $\endgroup$ Feb 10 at 9:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.