Currently I am completing all exercises in books like "Introduction to Python for Science and Engineering, David Pine" and "Guid to Scientific Computing in C++, Pitt-Francis, Whitley". I am looking for a career change after spending a long time in high school education teaching physics. Re-teaching myself from the Engineering Maths and Advanced Engineering Maths by Stroud as well. At university, I coded a numerical simulation of solar neutrino oscillations using Runge-Kutta routines in C++. Whilst I am making good progress, I would like to know what kinds of projects, tasks etc should I engage with to bring these skills together? Is there a good source of these projects, that one could take a look at and review with others to get feedback on progression? Any other tips are also welcome.

  • 1
    $\begingroup$ Could you add some features to SciPy, NumPy, Eigen, or Boost.Math? This would derisk future employers hiring you by giving them a body of work to analyze. $\endgroup$ – user14717 May 12 '20 at 19:06
  • $\begingroup$ My interests mainly lie in the application of these to real world problems. But I was under the impression that above libraries are already very well optimised for speed. Unless in your better judgement, could allude to otherwise. $\endgroup$ – Kishan Bhatt May 13 '20 at 7:22
  • $\begingroup$ Some of the features are optimized, but many aren't. But adding new features is easier; here's a wishlist: github.com/boostorg/math/issues/303 $\endgroup$ – user14717 May 13 '20 at 12:43
  • $\begingroup$ Wow I didn't realise. I mean, I'm just getting my head around series, calculus and other maths stuff after years teaching. Always thought that this stuff was very well optimised and I could make little or no contribution with my limited. But some of this stuff seems reasonably achievable. Whilst I'm no James Maxwell, I could do something later i gues once I develop a good foundation of knowledge and understanding. $\endgroup$ – Kishan Bhatt May 13 '20 at 12:45
  • $\begingroup$ I've got some books on numerical analysis that will be my next task after finishing Advanced Engineering Maths. I've literally gone through every exercise in Engineering Maths by stroud so far. $\endgroup$ – Kishan Bhatt May 13 '20 at 12:55

I agree with the spirit of the comments from @user14717. You can burn the candle from both ends here. I suggest splitting your time between

  1. small, fundamental problems that can be solved in < 100 lines of code
  2. project-based problems that foster knowledge of production code architecture and implementation

For 1., your textbook problems are good. I also recommend checking out Project Euler. Reading questions/answers from this StackExchange site isn't a bad idea either. For 2., check out active open-source software and see what you can contribute. Even attempting to understand how these codes operate is beneficial. You might consider what application areas you find interesting, then looking for software in this area. For example, if you find fluid dynamics interesting, you could check out OpenFOAM or deal.II (both are C++, which I noticed you used as a tag). These projects are not hard to find if you search around. You can also check out the journals that publish the documentation for these projects, e.g. SoftwareX, Computer Physics Communications, Journal of Open Source Software, etc.

  • $\begingroup$ Thanks again! I like the idea of contributing to a project and being involved in something. As far as application areas go. Everything seems to be exciting 😂. I'm doing c++ as I did it at university $\endgroup$ – Kishan Bhatt May 17 '20 at 7:24
  • $\begingroup$ OpenFOAM will never has the documentation, it is not open source. $\endgroup$ – IamNotaMathematician Jun 1 '20 at 17:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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