Computational Physics, Rutgers-Newark#

Why do we need to study computational methods and programming?#

Computers have become the “mathematics” of the modern era—they are, in essence, the capability to solve problems. In the 17th century, mathematics had its golden age: by mastering math, one could tackle many practical issues in astronomy, physics, and engineering. In other words, mathematics represented “problem-solving ability.”

In the 21st century, the types of problems solvable solely by mathematics have basically already been solved. What remain are complex systems and complex engineering challenges. These problems inevitably require computing power, storage capabilities, and AI.

So, why study computational methods? Because in today’s world, it is essentially the discipline of “problem-solving.” Once you’ve mastered computational science skills, you can apply them to solve complex problems and handle complex projects across all industries.

About AI/ChatGPT

In today’s age of AI and ChatGPT, many people might wonder why we still need to learn programming. After all, these powerful tools seem capable of doing so much already. However, rather than diminishing the importance of programming, AI has actually made it more essential than ever.

Tools like ChatGPT/Gemini/Claude operate within the framework we set for them. To maximize their benefits and customize or extend them to fit our needs, programming skills are crucial. By learning to code, we gain a better understanding of how these technologies work, giving us control rather than simply being passive users.

Programming is a form of creative expression. Even though AI can assist with code generation or problem-solving, truly understanding how to implement features or optimize algorithms still requires engineering thinking and creativity. Mastering programming skills allows for flexible realization of complex ideas.

Technology changes rapidly, with new frameworks, languages, and use cases emerging all the time. Learning to program fundamentally means learning a systematic problem-solving approach. Regardless of how technology evolves, this mindset will help you quickly adapt to new tools and platforms.

In short, if you know how to program, AI will be like adding wings to a tiger—making you even more powerful. But if you don’t know how to code and only rely on ChatGPT to solve problems, you’ll become increasingly dependent on AI and, over time, lose your competitive edge.

Learning Objectives#

By the end of this course, you will be able to:

  • Write Python programs to solve physics and engineering problems

  • Implement numerical methods for integration, differentiation, and interpolation

  • Solve ordinary and partial differential equations computationally

  • Apply Monte Carlo methods and stochastic simulations

  • Use optimization techniques including global optimization algorithms

  • Apply basic machine learning algorithms to scientific data

Prerequisites#

  • Basic calculus (derivatives, integrals)

  • Linear algebra fundamentals (vectors, matrices)

  • No prior programming experience required

Location: Smith Hall 242#

Schedule: Mondays/Thursdays 1:00 - 2:20 pm#

Instructor

Prof. Li Zhu

Email

li.zhu@rutgers.edu

Website

https://zhuli.name

Office

Smith 504

Office hours

by appointment

Course Outline#

Subjects

1

Python basics I

2

Python basics II

3

Python basics III

4

Integrals

5

Derivatives

6

Interpolation

7

Fitting

8

Fourier transform

9

Fast Fourier transform

10

Ordinary differential equations

11

Partial differential equations

12

Stochastic method I

13

Stochastic method II

14

Monte carlo III

15

Optimization I

16

Optimization II

17

Global Optimization I

18

Global Optimization II

19

Global Optimization III

20

Machine Learning I (Algorithms)

21

Machine Learning II (Applications)

22

Machine Learning III (Neural Networks)

23

Machine Learning IV (Graph Neural Networks)

Textbook: Computational Physics, M. Newman (not required)#

Additional Resources#

Grade Distribution:#

Items

Percentage

Attendance

10%

Homeworks

30%

Midterm Project

30%

Final Project

30%

Course Description#

This course is open to both undergraduate and graduate students interested in scientific programming and data analysis. There will be weekly assignments and two projects during the semester.

Please bring your laptop/tablet (iPhone/Android) to class. All practices will be based on Python 3.

We recommend using Colab (https://colab.research.google.com/) as the coding environment. The advantage of Colab is that it can be used on various computational devices, including laptops, tablets, and even smartphones, if you choose.

AI Policy#

You are encouraged to use AI tools (ChatGPT, Claude, Copilot) as learning aids. However:

  • You must understand and be able to explain any code you submit

  • Cite AI assistance in your submissions

Lecture Notes#

You can find the lecture notes on Google Drive.

Please make sure to save a copy to your own Google Drive.

The lecture notes will be uploaded to the course Google Drive prior to each class.

Homework Submission#

Assignments will be provided in the form of Jupyter (.ipynb) notebooks. Please save a copy of each assignment to your own Google Drive and complete it there.

To submit the assignment, follow both steps below:

  1. Export the notebook to PDF (File → Print → “Save as PDF”) and submit the PDF file to Canvas.

  2. Click Share in the top-right corner of the notebook, set access to “Anyone with the link – Viewer”, copy the link, and paste it into the Submission Comments box in Canvas along with uploading your PDF file.

image.png

image.png

image.png