Introduction to Scientific Computing
| Phys 540 — Spring 2026 |
| Department of Physics & Astronomy |
| Instructor: | Dr. Kevin Beach |
| Office: | 108A Lewis Hall |
| Email: | kbeach@olemiss.edu |
| Website: | https://www.phy.olemiss.edu/~kbeach |
Catalog description
This course is designed for graduate students and advanced undergraduates in the physical sciences. It teaches the practical computing skills that students will need in their graduate studies and that most scientists are expected to use in their technical careers. It focuses on algorithms and numerical methods, is largely language agnostic, and assumes only limited familiarity with programming. The course’s project modules are closely aligned with the various research domains in the Department of Physics and Astronomy.
3 credit hours
Where and when
| Lecture times: | T Th 11:00–12:15 in Lewis Room 109 |
| Office hours: | by appointment |
Prerequisites
| None. Some basic familiarity with computer programming is recommended, however. |
Learning goals
The goal of this course is to provide a general understanding of fundamental concepts in scientific computing and to impart some of the specific skills students need to solve numerical problems in their research and other course work. Students will work in Python, C++, and Mathematica (and possibly other languages) to develop familiarity with numerical and symbolic computation using procedural and functional programming approaches. The course will introduce students to scientific programming with an emphasis on code correctness, good programming style, and adherence to best practices. Students will gain experience with commonly used open-source tools that are relevant in academia and industry. They will learn to apply the techniques of scientific programming to explore various physical phenomena and to solve other meaningful scientific problems that are beyond the reach of analytical tools. The expectation is that students will master the baseline skills and develop the confidence and exploratory mindset necessary to bootstrap their own learning; while no one-semester course can fully prepare them for research, students will leave this course with an understanding of how to extend their computational skill set on their own through online resources and code experimentation.
Topics to be covered
The course begins with a brief introduction to Unix. Students will be asked to develop basic proficiency with the terminal environment, file system navigation, and file management. They will learn simple commands and tools and the basics of shell scripting. They will become familiar with a programming workflow that involves editing files, invoking compilation/build systems, and debugging; they will also learn to work in interactive runtime environments based on REPL, scripts, or notebooks. An important component of the course is to showcase how to carry out computational work effectively, both individually and in collaboration with others. The instructor will model best practices in version control, unit tests, data provenance, and code documentation.
Students will learn about key scientific programming concepts, including common algorithms and data structures and numerically safe and efficient implementations. A variety of basic numerical methods will be taught, including curve fitting, Fourier analysis, numerical integration and differentiation, matrix manipulation, eigenvector problems, root finding, optimization, and techniques to solve ordinary differential equations. Some instructional time will be devoted to floating-point numbers, especially numerical precision and error propagation, and to the graphical representation of data.
Project modules
Students will be exposed to specialized topics through five project modules (undergraduates will complete only two) tailored to the computational styles and workflows that are common across the physical sciences:
- Linear algebra and data science (in Python/Jupyter). Students will learn to leverage Python’s vast ecosystem of libraries, such as numpy, pandas, and matplotlib.
- Symbolic and semi-numerical computation (in Mathematica). Students will develop familiarity with functional programming and how to structure symbolic and arbitrary-precision calculations.
- High-performance computing (in C++). Students will be exposed to parallelism using MPI, OpenMP, and threading. They will have an opportunity to learn about batch systems and to run skeleton codes on computing clusters at the Mississippi Center for Supercomputing Research (MCSR).
- Differential equations. Students will gain experience with simulations of initial- and boundary-value problems, with specific examples drawn from hydrodynamics.
- Signal processing. Students will learn to compute Fourier transforms and
to analyze time series data.
Required course materials
There is no textbook for this course. All instructional material will be freely available online. Completing the course work will require the use of an internet-connected computer, either the student’s own or a university machine in a computing lab on campus. Students may be asked to set up an appropriate programming environment under UNIX, MacOS, or Windows and to create and configure accounts on external services such as Bitbucket or Github.
Grading scheme
The course grade will be based on the cumulative points earned from assignments, in-class activities, and projects, weighted as follows for undergraduate and graduate students. The weighting reflects the additional emphasis placed on independent, project-based work for the graduate students. Their projects will be more open-ended and will exceed in scope and complexity those of the undergraduates.
Weighting for undergraduate students
| Assignments: | 50% |
| In-class activities: | 10% |
| Project modules: | 2 × 20% |
Weighting for graduate students
| Assignments: | 15% |
| In-class activities: | 10% |
| Project modules: | 5 × 15% |
The numerical score (out of 100) will be converted to a letter grade with a corresponding grade point value, following the UM +/– grading system adopted in Fall 2011. The conversion is carried out by matching to the ranges shown in the table below.
| Letter grade | Grade point value | Numerical score range |
|---|---|---|
| A | 4.0 | ≥ 90 |
| A– | 3.7 | [85,90) |
| B+ | 3.3 | [80,85) |
| B | 3.0 | [75,80) |
| B– | 2.7 | [70,75) |
| C+ | 2.3 | [65,70) |
| C | 2.0 | [60,65) |
| C– | 1.7 | [55,60) |
| D | 1.0 | [50,55) |
| F | 0 | < 50 |
Class attendance — Regular attendance is strongly encouraged, especially since a portion of the student’s grade will be derived from activities carried out during class time. Also, during class the instructor will sometimes present worked problems, give hints and tips about the homework, and provide other useful guidance.
Assignments — Homework assignments will be set roughly every week during the first half of the course and will consist of a small set of computational exercises. The necessary instructions and computer code will be posted on the class website. Assignments are to be submitted electronically for grading (as a shared git repository). A complete assignment consists of well-commented program files, an explanatory document (plain text or pdf), and any required figures (pdf, eps, png, or tiff). Incomplete assignments submitted for partial credit should at the very least compile and run. Students may work co-operatively at the level of discussing algorithms and general approaches, but each student should implement his or her own, independent solution.
In-class activities — Regular in-class activities, possibly including problems, quizzes, and group exercises, will test students’ understanding of the material covered in recent lectures and assignments.
Projects — Graduate (undergraduate) students will be expected to complete five (two) of the project modules. These are more substantial in scope and ambition than the assignments. Each module is self-contained and comes with detailed instructions, a grading rubric, and preliminary code that students are meant to extend and improve with new functionality. Graduate students will operate under heightened expectations regarding the scope and sophistication of their project submissions.
Schedule
| January 19: Martin Luther King, Jr. Holiday (Administrative Offices closed) |
| January 20: Classes begin |
| T | Jan | 20 | Lecture 1 |
| R | Jan | 22 | Lecture 2 |
| January 26: Students may add courses on a space available basis through this date |
| T | Jan | 27 | Lecture 3 |
| R | Jan | 29 | Lecture 4 |
| February 2: Last day to register or add classes (between January 28 and February 3 may add only with instructor’s approval); last day for course withdrawals with refund |
| T | Feb | 3 | Lecture 5 |
| R | Feb | 5 | Lecture 6 |
| February 9: Automatic drop date for non-attendance |
| T | Feb | 10 | Lecture 7 |
| R | Feb | 12 | Lecture 8 |
| T | Feb | 17 | Lecture 9 |
| R | Feb | 19 | Lecture 10 |
| T | Feb | 24 | Lecture 11 |
| R | Feb | 26 | Lecture 12 |
| T | Mar | 3 | Lecture 13 |
| R | Mar | 5 | Lecture 14 |
| March 6: Deadline for course withdrawals without refund |
| March 7-15: Spring Break |
| T | Mar | 17 | Lecture 15 |
| R | Mar | 19 | Lecture 16 |
| T | Mar | 24 | Lecture 17 |
| R | Mar | 26 | Lecture 18 |
| T | Mar | 31 | Lecture 19 |
| R | Apr | 2 | Lecture 20 |
| April 3: Good Friday holiday |
| T | Apr | 7 | Lecture 21 |
| R | Apr | 9 | Lecture 22 |
| T | Apr | 14 | Lecture 23 |
| R | Apr | 16 | Lecture 24 |
| T | Apr | 21 | Lecture 25 |
| R | Apr | 23 | Lecture 26 |
| T | Apr | 28 | Lecture 27 |
| R | Apr | 30 | Lecture 28 |
| May 1: Classes end |
Attendance verification
The university requires that all students have a verified attendance at least once during the first two weeks of the semester for each course. Students whose attendance is not verified will be dropped from the course and any financial aid will be adjusted accordingly. Please see http://olemiss.edu/gotoclass for more information.
Academic integrity and honesty
Students are expected to adhere to the University of Mississippi Creed and the Standards of Honesty as described in Policy Code ACA.AR.600.001 and the M Book.
Students are reminded that cheating in any form will not be tolerated. Performance on all tests and assignments shall represent the individual work of the student. Those who violate the Standards of Honesty will be reported and subject to the appropriate sanction, which may include expulsion from the University.
Nondiscrimination policy
The University complies with all applicable laws regarding affirmative action and equal opportunity in all its activities and programs and does not discriminate against anyone protected by law because of age, color, disability, national origin, race, religion, sex, sexual orientation, handicap, or status as a veteran or disabled veteran.
Policies and procedures for students with disabilities
It is University policy to provide, on a flexible and individual basis, reasonable accommodations to students who have disabilities that may affect their ability to participate in course activities or meet course requirements. Students with disabilities should contact the Office of Student Disability Services (662-915-7128 or sds@olemiss.edu) to discuss their individual needs.
Examinations and last week of class
Regulations governing all examinations — A student’s failure to appear for an examination without an acceptable excuse,inability to present valid identification,absence from the room during the course of an examination without the consent of the examiner, or attempting any portion of an examination without submitting his or her answers shall result in failure of the examination. Tardiness beyond 15 minutes forfeits a student’s right to an examination.
Final examinations — A final examination, to be given at the time posted in the examination schedule, is required in each undergraduate course, unless the appropriate chair and dean have approved an exception. A student who has three or four final examinations in one day may arrange with the course instructor to take the noon or 7:30 p.m. examination at another time. In order to give a final examination at any time other than that shown in the posted examination schedule, an instructor must have prior approval of the department chair and dean.
Last week of class — The following guidelines exist to allow sufficient time for students and instructors to prepare for final examinations. These guidelines apply to the week preceding final examinations for undergraduate courses held during Fall and Spring semesters.
-
During the period of Wednesday through Friday of the last week of class, instructors are not to give exams, tests, or quizzes that contribute more than 10% of the final grade for a class. An instructor can obtain approval of the department chair and dean to give an exam, test, or quiz, of this weight, during this three day period. Instructors should return graded work and/or inform students of their grades on exams, tests, or quizzes prior to the beginning of finals week.
-
Exceptions to the above statement are automatically made for lab-based courses, technical writing courses, seminar courses that assign a term paper, and senior design courses that assign a multi-faceted project in lieu of a final exam. Major projects of the above types, which contribute
more than 10% of the final grade and which are due during this Last Week period, should be assigned in the syllabus at the beginning of the semester and any substantial change in the assignment should be made known to students before the drop deadline.