Computational Physics 2024, Course 488

Undergrad CompPhys

Graduate CompPhys

Advanced Grad CompPhys

Many body physics

Quantum Mechanics

Advanced Solid State

Electricity\&Magnetism



     
(a) and (b): Zoom in of the Mandelbrot Set in two different locations (c) double pendulum trajectory in chaotic regime (d) projectile motion with and without accounting for air drag

Course description and overview: This course introduces algorithmic concepts and familiarizes students with fundamental computational tools that are essential for students in STEM and related fields. The course emphasizes practical applications and prepares students for both academic and industrial pursuits. Modern computational approaches, including Python numpy/scipy libraries and Jupyter notebooks, will be utilized to develop a strong foundation in computational physics. The course covers a range of algorithms, including numeric integration, solving differential equations, Fourier analysis, large-scale minimization problems, high-dimensional integration using Monte Carlo methods, error propagation, controlling numerical errors, linear and logistic regression, and provides an introduction to deep learning and neural networks.

As the programming language, we will use Python and its scientific library, scipy & numpy (numba, pybind11). Most of the lectures will be in the form of Jupyter notebooks.

To speed up parts of the code, we will also utilize C++ and pybind11 to demonstrate how Python could compete with speed of C++.

Requirements: To complete the homework and perform the hands-on training, it is essential to have access to a computer where Anaconda software can be installed. A modest familiarity with programming is assumed. It is desired that students use their laptops and bring them to class. Alternatively, students can use their desktop computers at home or in the lab.

Physics & Astronomy Departmental Learning Goals: Students who complete the course demonstrate knowledge of how to use computation as a tool in physics and STEM research and education. Students can solve the physics problem in the form of differential equations, integral equation, or minimization problem, and find the most appropriate algorithm to numerically solve such problems and analyze resulting data with modern data visualization tools. Students will also learn how to propagate errors in measurements, and how to avoid errors in numerics. If time allows, students will be familiarized with modern data science tools of regression and deep learning.


Class Time: Tuesday and Thursday, 4:05 PM - 5:00 PM, SEC-204

Announcements and assignments can be found in Canvas.
Instructor: Kristjan Haule
Office: Serin E267
email: haule@physics.rutgers.edu
Phone: 445-3881
Office hours: after lecture

 

Survey running, please respond by using QR code


List of Topics with Lecture Notes in the form of Jupyter notebooks

  1. Installation, testing env with Mandelbrot set, introducing numba, and pybind11,  jupyter notebook Python script for dynamic plot
  2. Interactive Mandelbrot Set and self-similarity,  jupyter notebook
  3. Logistic map and fractals, Lyapunov exponent and chaos,  jupyter notebook
  4. Introduction to Jupyter  jupyter notebook
  5. Basics of Python  jupyter notebook
  6. Numpy  jupyter notebookstockholm_td_adj.dat.txt
  7. Scipy  jupyter notebook
  8. Ordinary differential equations  jupyter notebook
  9. ODE, Driven Pendulum and chaos  jupyter notebook
  10. ODE and Hydrogen_atom  jupyter notebook
  11. Measurement error propagation and uncertainties package  jupyter notebook
  12. Numerical error accumulation and stable recursion with Miller's algorithm  jupyter notebook
  13. Random numbers, multidimensional integration, Metropolis  jupyter notebook
  14. Ising model,  jupyter notebook
    for Alternative implementation of Ising: online Ising model simulation
  15. Simulated annealing and Traveling Salesman problem  jupyter notebook
  16. Linear regression ,   jupyter notebook, NucleousEnergy.dat
  17. Logistic regression ,   jupyter notebook
  18. Deep Learning,  jupyter notebook

Source code: https://github.com/haulek/CompPhysU
Browse source code with nbviewer

Useful literature:

  • Computational Physics by Mark Newman
  • Computational Physics by N.J. Giordano and H. Nakanishi
  • Computational Physics by J.M. Thijssen
  • An Introduction to Computational Physics by Tao Pang
  • Computational Physics by Rubin H. Landau and Manuel J. Paez
  • Software carpentry
  • How to Think Like a Computer Scientist: Learning with Python
  • Python for beginners
  • Python documentation
  • Python regular expressions
  • Numerical Recipes online
  • Some part of the lectures are adopted from https://github.com/jrjohansson/scientific-python-lectures

    Assessment:

    • There will be no exam. The grade will consist of completed homework (70%) and class participation (30%).
    • Homeworks will be graded on the scale of 0 to 3, allowing half points.
      • 3 : fully completed problem, perhaps with tiny deficiencies(Outstanding),
      • 2 : most of the conceptual steps done correctly, but some errors made(Good),
      • 1 : some essential steps made(Satisfactory),
      • 0 : nothing of value was done(Unsatisfactory).
    • Standard grading scheme will be used to
      • 90-100: A,
      • 85-90: B+,
      • 80-85: B,
      • 75-80: C+,
      • 70-75: C,
      • 60-70: D,
      • <60: F

    Policies:

    • Changes: The course schedule and guidelines are subject to change. Any changes will be communicated promptly and clearly.
    • Absences: Students are expected to attend all classes; if you expect to miss one or two classes, please use the University absence reporting website to indicate the date and reason for your absence. An email is automatically sent to your instructors. If you have been told to quarantine, or are experiencing symptoms of any transmissible disease, please do not attend in-person class meetings. Contact the Professor to make arrangements for handling such absences.
    • Fostering an equitable and inclusive classroom. All instructors, students, and staff associated with the Physics and Astronomy Department are expected to follow the Department’s Policy against Discrimination and Harassment. As stated in this policy, “The Rutgers Department of Physics & Astronomy strives to foster an academic, work, and living environment that is respectful and free from discrimination and harassment. The Department recognizes the human dignity of each member of the community and believes that each member has a responsibility to promote respect and dignity for others so that all community members are free to pursue their educational and work goals in an open environment, to participate in the free exchange of ideas, and to share equally in opportunities.”

    Resources for student success:

    Disability Accommodations:

      Rutgers University welcomes students with disabilities into all of the University's educational programs. In order to receive consideration for reasonable accommodations, a student with a disability must contact the appropriate disability services office at the campus where you are officially enrolled, participate in an intake interview, and provide documentation: (documentation-guidelines) . If the documentation supports your request for reasonable accommodations, your campus’s disability services office will provide you with a Letter of Accommodations. Please share this letter with your instructors and discuss the accommodations with them as early in your courses as possible. To begin this process, please complete the Registration form on the ODS web site at: getting-registered.

    Academic integrity

      Rutgers University takes academic dishonesty very seriously. By enrolling in this course, you assume responsibility for familiarizing yourself with the Academic Integrity Policy and the possible penalties (including suspension and expulsion) for violating the policy.

    Student Wellness Services