Skip to content

PHYS446

PHYS446 (Modern Computational Physics) is a 3-credit hour course that counts as a technical elective for both EEs and CEs. It is required for CS + Physics majors. It is offered in the spring semesters.

Content Covered

  • Cellular automata and simulation
  • Quantum computing
  • Statistical mechanics, Ising model, renormalization group
  • Hopfield networks
  • Restricted Boltzmann machines
  • Generative diffusion models
  • Topological insulators

PHYS446 is a continuation of PHYS246, covering more advanced topics in computational physics. The course begins with cellular automata and simulation, which is a simple model of a grid of cells that can be in one of a finite number of states. The course then moves on to quantum computing, where you will build a quantum computer simulator and use Shor's algorithm to factor 21. Then, it covers statistical mechanics, the Ising model, and renormalization groups. The course then covers Hopfield networks, which are a type of recurrent neural network used for associative memory, restricted Boltzmann machines, which are a type of generative model used in machine learning, and generative diffusion models. You will implement a basic diffusion model that can be "prompted" to pick between 2 options. The final topic is topological insulators and crystal lattices.

Each of these topics is explored through a coding-based project, where you will implement the concepts you learn in class. The projects can be done in Python or C++, but Python is recommended. You will use libraries such as Numpy, Scipy, Matplotlib, and Numba.

Prerequisites

PHYS246 (An Introduction to Modern Computational Physics) is the prerequisite for this course. Typically, PHYS446 is taken by Physics majors, so the level of background expected is high. However, completion of PHYS212, PHYS213, and PHYS214 will provide you enough foundation to understand the material in this course. On the programming side, it is useful to be proficient with Python and/or have experience with scientific computing and simulations.

When to Take It

Take this course if you are interested in scientific computing, statistical mechanics, or quantum computing. It is recommended that you take this course soon after taking PHYS246 to build on the concepts you learned in that course.

Course Structure

This class typically has two lectures per week, where the course content is introduced. They consist of some lecture time and then work time for the projects. The professor and/or TA is there to assist you with completing the projects.

In Spring 2024, this course was entirely project based, with no exams or quizzes. However, this course is very new, and the structure may change in the future.

Instructors

Recently, Professor Bryan Clark has taught this course.

Course Tips

The physics in this course is quite complex, and for ECE/CS majors it will be more difficult than the programming. It is not important to understand the physics entirely, but it is important to understand the concepts and how to implement them in code. Take advantage of the work time given in lecture as well as office hours to ask questions.

Professor Clark is an excellent and passionate instructor. He designed this course from the ground up and is very knowledgeable about the material. He is very approachable and willing to help you understand the material.

Life After

While no courses in computational physics directly follow this one, students who enjoyed specific aspects might enjoy courses related to quantum computing, statistical mechanics, or machine learning. - PHYS427 - Thermal and Statistical Physics - PHYS486 - Quantum Physics I - CS446 - Machine Learning

Resources

The online "workbook" is extremely useful and does a great job of guiding you through the projects. - Computing in Physics