Professional Documents
Culture Documents
https://homepage.univie.ac.at/Franz.Vesely/cp0102/index.html
Franz J. Vesely:
Computational Physics - An Introduction
Second Edition
The essential point in computational physics is not the use of machines, but the
systematic application of numerical techniques in place of, and in addition to, analytical
methods, in order to render accessible to computation as large a part of physical reality
as possible.
http://iel.ucdavis.edu/publication/WhyC.html
Harry H. Cheng
Last updated on May-30-2011
Writing computer programs to solve problems is a basic skill all students must master. There
are many popular programming languages. Students nowadays typically get exposure to more
than one language. Which computer programming language should students know so that
they will not miss fundamentals of computing? Which computer programming language
should students learn first to gain computer-aided problem solving skills? I started my
computing career using computers with punch cards and BASIC. Later, I learned FORTRAN
77, Fortran 90, and numerous computer programming languages. Based on my teaching,
research, and industrial experiences, the answer is C for the following reasons.
1. C is one of the foundations for modern information technology (IT) and computer
science (CS).
Many working principles of IT and CS, such as programming languages, computer
architectures, operating systems, network communication, database, graphical user
interface (GUI), graphics, image processing, parallel processing, multi-threads, real-
time systems, device drivers, data acquisition, algorithms, numerical analysis, and
computer game, are based on or reflected in the functionalities and features of C. The
experience in C will help students understand the working principles of these
important concepts in IT and CS. Therefore, C is required for the CS major in almost
all universities.
2. C is the most commonly used programming language in industry.
Academic institutions have a mission to teach technologies that are widely used in the
real world so that students have the skills and knowledge that employers need. More
than 90 percent of the programs running on our desktops, from operating systems and
e-mail clients to Web browsers and word processors, are written in C or its relative,
C++ which has extensions to C. Most games and underlying robot control software
are written in C or C++. With the knowledge of C, students will not only be able to
play games and robots, but also understand their underlying working principles and
potentially develop their own games and robots. The Programming Language
Popularity Web site (www.langpop.com) and Programming Community Index
( www.tiobe.com) are two of the best known and most authoritative statistical
sources. In the Programming Language Popularity Website (dated in June, 2010), C
tops the list, C++ ranks the second, Java is the third as shown in Figure 1.
Note that many embedded systems do not support C++. Therefore, learning to
develop programs using a strict C, without advanced C++ features, is critical for many
applications including interface to hardware. C++ is a superset of C to a certain
degree. However, C++ is a lot more complicated than C. Unfortunately, without a
solid foundation in C, it is impossible to fully master object-oriented and many other
advanced features in C++.
The notion that only future computer scientists or IT professionals need training in
computer programming is no longer true. Outside of the IT industry, knowledge of
computer programming is an essential skills for careers not only in STEM fields, but
also in marketing, advertising, journalism and the creative arts. For example, market
researchers may have to use or write programs to analyze a large set of data.
https://www.phys.uconn.edu/~rozman/Courses/P2200_12F/downloads/
http://www.ap.smu.ca/~thacker/teaching/3437/lectures.html
Lecture 2 (ppt): Storing information digitally. Integer representations, floating point arithmetic.
Lecture 3 (ppt): Short discussion about projects. More on floating point arithmetic and problems you
may encounter.
Lecture 4 (ppt): Introduction to Unix shells and useful commands. 10,000 ft view of programming.
Lecture 5 (ppt): Functions and roots. Roots for polynomials. Bracketing & Bisection, Newton-Raphson,
hybrid NR-bisection, Secant Method.
Lecture 6 (ppt): A global bracket finding strategy. Muller-Brent. Example of root finding from quantum
mechanics.
Lecture 7 (ppt): Introduction to interpolation. Difference between interpolation and fitting to data.
Interpolation polynomials in Lagrange form. Hermite interpolation. Introduction to cubic splines.
Lecture 10 (ppt): Numerical integration. Simple Newton-Cotes formulas (trapezoid & Simpson's Rule).
Romberg Integration. Gaussian quadrature.
Lecture 11 (ppt): Problems that can be encountered in numerical integration. Change of variables,
removal of singularities. Dealing with improper integrals. Multidimensional int egration.
Lecture 12 (ppt): Introduction to ODE solvers. Euler method, including Modified and Improved
variants. Classical Runge-Kutta with adaptive step size from Richardson Extrapolation.
Lecture 13 (ppt): Issues with the adaptive step size procedure. Separating 2nd order ODEs into
coupled first order system. Separating nth order ODEs into n coupled first order systems. Algorithm to
integrate nth order systems.
Lecture 14 (ppt): Introduction to Monte Carlo methods. Numerical integration techniques, rejection
method, importance sampling.
Lecture 15 (ppt): MC methods applied to molecular motion in gases - the random walk. Simulation
method & how to choose points randomly on a sphere. Short overview of random number generators,
advice for quick and dirty generators and what to use if you want really "good" random numbers.
Lecture 16 (ppt): Introduction to parallel programming. Different types of parallel computers. When is
parallel computing useful? Brief introduction to OpenMP.
Lecture 17 (ppt): More details on parallel programming. Dealing with data dependencies and race
conditions. Useful OpenMP commands reviewed.
Lecture 19 (ppt): More on Opendx. Loading in data and using the default viewer. Visualization of 3d
volumes, surface rendering versus volume rendering. How transfer functions highlight different parts
of a data volume. Making movies.
https://ww2.odu.edu/~agodunov/teaching/notes/Intr01_basic.pdf
https://homepages.uc.edu/~schreihf/uchenry/post/computational-physics/