Please let me know if I should migrate this question elsewhere if it is inappropriate for this site.

This fall, I will begin my PhD program in physics at Johns Hopkins, and I would like to continue my education in theoretical condensed matter physics with a strong emphasis on computational methods.

As an undergraduate, I took Computational Physics I and II (grad level courses) and I absolutely loved them. In particular, I enjoyed the process of doing pen-and-paper theoretical calculations and turning those results into code from scratch. Note the latter part: many computational physics groups utilize packages like LAPACK in their work, but I'm not a fan of that; I'm a fan of writing my own code. I guess you could say I enjoy coding, just as much as I enjoy doing theoretical calculations. Additionally, I have been doing research in computational condensed matter physics for two years now. The conclusion has been a robust, multi-layered MD code for correlated systems that is super fast. The process of developing the code and seeing how physical calculations can turn into simulated observables was amazing.

Having enjoyed the field of computational physics, I'd like to pursue it professionally and end up with a career in industry regarding this field. As such, I would like to master it! My problem is that I don't know how. First, there aren't that many classes focusing on computational methods at my university. Second, there aren't many condensed matter physicists at my school who actively write their own code (if they are computational people, they use already-built packages for massive simulations). To me, it seems like becoming an expert in computational physics would be more of a self-taught situation. If so, how can I ensure I get a comprehensive overview of the subject and adequately educate myself?

In general, I'd like your expert recommendations as to what I can do to professionally develop myself in the field of computational physics.

  • 6
    I think this is way off topic, but it does prompt the question - Why are you starting a PhD program which does not seem likely to equip you for the professional career you seem to want ? – High Performance Mark Mar 27 '19 at 15:23
  • Thanks for letting me know instead of marking the question. Do you know where I can ask such a question? Also, Physics PhD is the perfect thing for me. I must have not been clear--my apologies. I want to be a physicist by profession. In particular, I want to professionally pursue condensed matter theory. I love the computational aspect of physics, as opposed to say becoming a software engineer. I wanted to seek advice on how to become an expert in the field of computational physics, and I don't think one can become an expert in this field if one lacks physical knowledge and intuition. – Ptheguy Mar 27 '19 at 17:09
  • 3
    One of the best things you can do is pursue an internship at a national laboratory where they conduct computational physics research. – nwsteg Mar 27 '19 at 17:14
  • 1
    Do you know where I can ask such a question?. I expect that having a discussion with your supervisor soon after you pitch camp at Johns Hopkins will be one of the best ways of getting answers to your question. Far better than any half-baked, ill-informed advice you get from strangers on the Internet. – High Performance Mark Mar 28 '19 at 8:54
  • Definitely check out the DoE National Labs, and the Computational Science Graduate Fellowship. – Richard Mar 30 '19 at 4:37

So for starters, I want to comment on your interest in writing everything from scratch. I feel for you with that, I felt similarly when I was starting out. While writing codes for some things that exist in great software packages already can definitely make sense, I will specifically say that writing code to do numerical linear algebra work is a terrible use of time. These numerical linear algebra packages are optimized to the extreme both with respect to algorithm approaches and with their software implementations.

Now implementing some of these things yourself is a great learning experience but don’t expect your code will perform nearly as well as the popular and proven packages. Also note that when it comes to being a productive researcher, you will have to be smart about optimizing your use of time. Building up your own numerical linear algebra package is likely not going to be a very productive use of your time. Feel free to comment.

As for how to learn, you should see if you can find more specific courses in other departments in things like computational mechanics so you can develop some general computational science skills, if you cannot find computational courses with your desired niche. From there, you’ll want to find some good textbooks to supplement your learning, depending on what things you need to learn more deeply or that fit your domain of interest better. You’ll obviously want to also develop some of your own solvers after you’ve covered the theoretical side of things to validate your understanding.

Outside of the straight up computational physics learning, you should try learning about some topics that could be useful, such as High Performance Computing, numerical optimization, and perhaps some minimal computational geometry.


I guess for starters you could look at what is there at JHU in terms of advisors. Consider to look at theoretical chemistry, matsci or even applied math or engineering as well for co-advisor. (Just since you are looking for something very specific, you may need to expand the net, within your school.)

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.