Sample Curriculum for

Bachelor of Science and Bachelor of Arts in Computational Physics

Oregon State University, College of Science, Department of Physics


Fall Winter Spring

Fresh (46)

Diffrntl Calculus
(MTH 251, 4)
Fitness/Writing I, 3
Gen Chemistry
(CH 201, 3)
CP/CS Seminar
(PH 407, 1)
Perspective 3

Intro Scientific Computing

(Ph/MTH/CS 265, 3)
[or Fall term]
Gen Chemistry
(CH 202, 3)
Integral Calculus
( MTH 252, 4)
Perspective, 6
[or Fitness/Writing I, 3]
Intro Computer Sci I
  (CS 161, 4)
Vector Calculus I
(MTH 254, 4)
Gen Phys, Rec
(PH 211,221; 4,1)
Fitness/Writing I, 3
[or Perspective, 3]
Soph (45)
Intro Computer Sci II 
(CS 162, 4)
Writing II, 3
Vector Calculus II
  (MTH 255, 4)
Gen Phys, Rec
(PH 212,222; 4,1)
Discrete Math
(MTH 231/235, 3)
Infinite Series and Seqncs
(MTH 253, 4)
Gen Phys, Rec
(PH 213,223; 4,1)
Perspective, 3
Scientific Comptng II
(PH 365, 3)
Linear Algebra
(MTH 341, 3)
App Diffrntl Eqs
(MTH 256, 4
Intro Modern Phys
  (PH 314, 4)
Jr (44)
CP Simulations I
(PH 465, 3)
CP Seminar
\(PH 407, 1)
Intro Probability
(MTH 361, 3)
(PH 421, 2)
Static Vector Fields
(PH 422, 2)
Writing III/Speech, 3
CP Simulations II
(PH 466, 3)
Data Structure
(CS 261, 4)
Waves in 1D
(PH 424, 2)
Quantum Measurement
(PH 425, 2)
Central Forces
(PH 426, 2)
Elective/Perspsective, 3
Periodic Systems
(PH 427, 2)
Class/Quant Mechan
(PH 435/451, 3)
Energy and Entropy
(PH 423, 2) 
Biology, 4 
Perspective/Elective, 3
Sr (45)
Num. Lin Alg.
(MTH 451, 3)
(PH 431, 3)
Mathematical Methods
(PH 461, 3)
Elective, 6
Adv CP Lab
(PH 417,517; 3)
Social & Ethical CS
(Synthesis, CS 391, 3)
Elective, 6
Synthesis, 3
[CP Lab+WIC]
  (PH 401,4)
Interact Multi Media}
(CS 395, 4)
CP Seminar
(PH 407, 1)
Electives, 6

Computer-intensive courses shown in bold. Courses suggested for electives or approved substitution: PH 415, Computer Interfacing; PH 435, Classical Mechanics; MTH 452, Numerical Solution of Ordinary Diffrntl Equations; MTH 453, Numerical Solution of Partial Diffrntl Equations; CS 311, Operating Systems; CS 361, Fundamentals of Software Engineering; PH 428, Rigid Bodies; Ph 441, Physical Optics; PH 481, Thermal and Statistical Phys; PH 621, Classical Dynamics.

Sample schedule of the proposed curriculum for the B.S. in CP degree with 180 credits. The computation courses shown in bold. This is just one possible arrangement of the required courses; others also exist, as well as ones in which substitutions are made depending upon the student's interests and the advisor's consent. The proposed program has 21 credit hours of electives compared to the Physics B.S. degree program that has 25 hours. Essentially, we are picking some of the ``electives'' a student might choose to specialize in computational science. However, we believe that flexibility is important for an interdisciplinary program, and we plan to make subsitutions for individual cases.

The keystones of the proposed curriculum are the courses:

1   Unix, Windows, Maple, Numbers 6   Conditional Statements, Function Definitions
2   Basic Maple, Functions 7   Loops, Numerical Integration
3   Floating Points, Symbolic  Computing

8   Complex Arithmetic,  Structures

4   Visualization, Calculus, Equation Solving 9   Objects, Matrix Computing Arrays
5   Classes and Methods 10  General I/O, Applets

Table 4: Contents of PH/MTH/CS 265, Scientific Computing I 

Physics/Mathematics/Computer Science 265, Scientific Computing (Table 4) An introductory course designed to provide the basic computational tools and techniques needed by lower division students for study in science and engineering. The course is based on a project approach using the problem solving environment Maple and the compiled language Java (footnotes:  Maple  and its commercial competitor Mathematica  are called ``Problem Solving Environments''. They are large computer programs that provide an unusually complete and user-friendly computing environment. Maple has a variety of graphical interfaces, the ability to solve both numerical and algebraic (symbolic) problems, excellent visualization, and good scientific text
abilities. Matlab is also classified as a problem solving environment, yet its strength is in numerical work, and especially numerical linear algebra and advanced visualization as used in engineering and computational science. Sun Microsystems, its inventor, describes Java as
a ``simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded, and dynamic language".)   Unix operating system. (Learning Unix is assisted by the web-based Interactive Unix Tutorial we have developed and distributed nationally [Nacphy].) Although this course has worked well in the three years since its introduction, we are writing new materials for it that will be more succinct, integrated, focused, and computer-mediated than the text [Zachary] formerly used.

While the scientific programming of applications in C and Java is similar, our recent switch to Java in place of C provides an object-oriented view towards programming (inclusion of methods with variables), demonstrates the developing potential of platform- and operating-system independent programming, and emphasizes that the web is an integral part of future scientific computing. Furthermore, the use of Java for scientific programming has a large number of backers within the Computational Science community, as witnessed by the growing number of sessions at the SuperComputing conferences and forums and working groups on scientific Java [JNL]. Although the choice of a computer language is often contentious, we have found Java's handling of precision, errors, variable types, and pointers to be superior to C for scientific computing. We also find Java's platform and system independence attractive since this may modify the too rapid (2-3 year) obsolescence of educational software, and encourages distributed computing over the web.

Undeniably, some of the excitement for students learning to program in Java arises from its ability to create applets, that is, small computer simulations that are embedded into web documents and can thereby run on any computer running a browser. Approximately a week is spent on that. The Physics Department has developed a collection of CP applets [Nacphy], and we are implementing them as examples and ``experimental equipment'' for our courses. We will also benefit from Java materials collected by the Education, Outreach and Training thrust area of the National Partnership for Advanced Computational Infrastructure [EdCenter,NPACI].




Software Basics


Errors and Uncertainties in Computations


Integration and Differentiation


Data Fitting


Random Numbers


Differential Equations


Hardware Basics: Memory and CPU


Matrix Computing


Profiling and Tuning


Parallel Computing

Table 5: Contents of PH 365, Scientific Computing II 

Physics 365, Scientific Computing II (Table 5) An intermediate level course that provides the basic mathematical, numerical, and conceptual elements that are needed for utilizing computers as virtual scientific laboratories using Java, C, and Fortran. The basics of computer hardware, such as memory and CPU architecture, and shell programming with the Unix operating system are presented. Also studied are the basics of scientific computing: algorithms, precision, efficiency, verification, numerical analysis and associated approximation and round-off errors, algorithm scaling, code profiling, and tuning. Examples are taken from elementary physical systems that make the concepts clear, as well as being easy to compute. The limits of model and algorithm validity is demonstrated by investigating the physics simulation examples in regions for which there is manifest numerical failure.

Much of the theory to be taught in PH 365 is presently in our senior-level course Computational Physics Course PH 465. For PH 365 we propose to reformulate the examples so that they require only elementary physics, to add more discussion materials to help in concept formation, to make the computer simulations shorter and less complex, and decrease some of the coverage. The goal is to make the materials more accessible to students completing our PH/MTH/CS 265 course, as well as providing a course to the general university community, where no such course currently exists.

Physics 407/507 Computational Physics Seminar Reports of modern happenings, campus research results, and journal articles are presented and discussed. Undergraduates will hear about and learn to think about research topics while advanced (507) students will present results of their projects and research.

Dilos Monte-Carlo magnetic ordering in dilute semiconductors
DFT Density functional theory of periodic systems and super lattices
Tell 3-D spectrum analysis of archaeological tell sites
DFT-II Molecular dynamics
Gamow Bound states, resonances, and poles for exotic atoms and nuclei
HF Hartree-Foch calculations of atoms and molecules
LPOTT Meson scattering from spin 1/2 nuclei
LPOTII Distributed memory code for polarized proton-nucleus scattering
LPOTp Nucleon-nucleus scattering in momentum space
MD Molecular dynamics simulations of SiO2
MEG Principal component analysis of brain waves
Monte Monte-Carlo simulations of magnetic systems and thin films
nScatt Monte-Carlo simulations of neutron diffraction spectra
PiN The color dielectric quark model
Qflux Model quantum chromodynamics calculations of flux tubes
Shake Earthquake analysis

Transport simulations of nuclear storage

Table 6: Contents of PH 417/517, Advanced Computational Laboratory 

Physics 417/517 Advanced Computational Laboratory (Table 6) We are developing a completely new advanced computational laboratory in which senior CP students and graduate students will experiment with computer simulations taken from previous M.S. and Ph.D. research projects, as well as from research projects at national laboratories. We will write and publish the web-enhanced and computer mediated laboratory manual for this course. The research descriptions and computer simulations will be modified in order to provide a research experience accessible to undergraduate students in a short time (which is in contrast to the people-years required to develop the research codes originally).

To learn that codes are pieces of scientific literature designed to be read and understood by more than just their authors, the students will run, profile (determine time spent in different sections of the code), modify, parallelize (convert to run on multiple processors), and extend these working codes. The students will run some simulations without knowing what results to expect. This will teach that the codes also function as virtual laboratories built to explore nature. Some planned experiments are indicated in Table 6.

Since the projects will be based on existing research codes, many of the programs will have been written in some version of Fortran (one of the original high-level scientific computer languages). This will be a valuable experience for our students since Fortran is otherwise not taught at OSU, even though the majority of high performance computing applications are presently written in some version of it. In fact, we have heard from some of our industrial colleagues that lack of knowledge of Fortran and lack of experience with running large codes written by others, are some of the weakness they find in present graduates. (A complete course in Fortran does not seem necessary since once students are familiar with one programming language, it is easier to learn others through direct experience.)

1   Quantum Eigenvalues, Zero-Finding 9  Functional Integration on Quantum Paths
2   Anharmonic Oscillations 10  Fractals
3   Fourier Analysis of Nonlinear Oscillations 11  Electrostatic Potentials
4  Unusual Dynamics of Nonlinear Systems 12  Heat Flow
5  Differential Chaos in Phase Space 13  Waves on a String
6  Bound States in Momentum Space 14  Solitons, the KdeV Equation
7  Quantum Scattering and Integral Equations 15  Sine-Gordon Solitons
8   Thermodynamics: The Ising Model 16  Confined Electronic Wave Packets

Table 7: Contents of PH 465, 466, Computational Physics Simulations  

Physics 465, 466 Computational Physics Simulations (Table 7) The techniques covered in Scientific Computing, PH 265 and 365, are applied and extended to physical problems best attacked with a powerful computer and a compiled language. The problems are taken from realistic systems, with emphasis on subjects not covered in a standard physics curriculum. The students work individually or in teams on projects requiring active learning and analysis.

The course is designed for the student to discuss each project with an instructor and then write it up as an ``executive summary'' containing: Problem, Equations, Algorithm, Code listing, Visualization, Discussion, and Critique. The emphasis is professional, to make a report of the type presented to a boss or manager in a workplace. The goal for the students is to explain just enough to get across that they know what they are talking about, and be certain to convey what they did and their evaluation of the project. As part of the training, the reports are written on the web.