General Information

The course covers three engaging subjects at once: (1) the standard suite of powerful numerical methods, and the mathematics behind them; (2) Julia, a modern, new computer language ideally suited for scientific computing with far greater efficiency and flexibility than matlab or python; (3) as a example application of the preceding powerful tools, students will construct for themselves, through a series of structured assignments, ab initio electronic-structure software to solve the many-body Schrodinger equation for atoms, molecules, and solids. As the assignments proceed, students will be introduced to more and more aspects of Julia until a working knowledge of the language is built up organically. The assignments will also guide students through best practices for scientific software organization and debugging. The course also includes a module on how to optimize computer code to approach the absolute limits of computational performance through awareness of the computation cost of basic operations, inner loop optimization, proper memory management, cache optimization, and the use of profiling tools.

Prerequisites

Comments: Assumes familiarity with standard mathematical methods for physical sciences and engineering (basic calculus, differential equations, and linear algebra) and with some form of computer programming (e.g., Python, Matlab, etc.). No physics background beyond electricity and magnetism will be assumed, although familiarity with quantum mechanics at the level of an introductory course will be useful.

Topics Covered

Workload

High, but no prelims/finals. [Fall 2022]

General Advice

  • I took it as a first semester sophomore, after it seemed interesting, I needed a few extra credits that semester, and was given the OK by the department, since the prerequisites were optional. Do not do this. I made this class very unnecessarily hard for myself, as deeper experience with quantum mechanics and anything to do with tensors would have saved me so much time and effort. I would say this is a perfectly reasonably-paced class for a junior with a solid amount of coding experience and some quantum and analytical mechanics under their belt. Don’t think of the pre/co-requisites as optional. [Fall 2022]

Testimonials

An interesting class that I wish I had taken much later in my academic career. Very clear grading/workload expectations, we had an amazing TA who I think turned the class from impossibly difficult to manageable. One problem I had, at least at the time I took it, was that there was a very generous late/drop policy for the psets, but each pset was cumulative, i.e. required chunks of code from previous psets, so if you wanted to drop one you still very much needed to figure out the problem eventually, or you could only drop the psets at the end of units. Rating: 4/5. [Fall 2022]

Resources

Past Offerings

Semester Professor Median Grade Course Page