Introduction to Scientific Computing
Phys 540 — Spring 2023 
Department of Physics & Astronomy 
Instructor:  Dr. Kevin Beach 
Office:  206 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, mathematics, and other quantitative disciplines. It teaches the practical 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. Examples will be drawn from problems in physics, chemistry, biology, engineering, and epidemiology.
3 credit hours
Where and when
Lecture times:  M W F 11:00–11:50 in Lewis Room 104 
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 the specific skills students need to solve numerical problems in their research and other course work. Sample codes will be provided in C/C++, Rust, Julia, and Python; all are widely adopted languages with a major foothold in key areas of science. The course will introduce students to scientific programming with an emphasis on code correctness and good programming style. Students will also develop familiarity with commonly used opensource tools that are relevant in academia and industry. The graduates students enrolled 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.
Topics to be covered
A variety of basic algorithms and numerical methods will be taught, including (but not limited to) regression, interpolation, polynomial and spline fitting, Fourier analysis, numerical integration and differentiation, matrix manipulation, eigenvector problems, root finding, optimization, relaxation methods, RungeKutta methods, and techniques to solve coupled ordinary differential equations. Some instructional time will be devoted to floatingpoint numbers, especially numerical precision and error issues, and to the graphical representation of data. At the instructor’s discretion, and time permitting, students may be introduced to more advanced topics, such as parallel computing, time series analysis, partial differential equations, and userinterface programming.
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 internetconnected 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.
Grading scheme
The course grade will be based on the cumulative points earned from assignments, inclass activities, and two projects, weighted as follows for undergraduate and graduate students. The weighting reflects the additional emphasis placed on independent, projectbased work for the graduate students. Their projects will be more openended and will exceed in scope and complexity those of the undergraduates.
Weighting for undergraduate students
Assignments:  40% 
Inclass activities:  20% 
Midterm project:  20% 
Final project:  20% 
Weighting for graduate students
Assignments:  30% 
Inclass activities:  10% 
Midterm project:  30% 
Final project:  30% 
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 (inperson or virtual) is strongly encouraged.
Assignments — The course puts great emphasis on students’ developing technical mastery in a variety of important computational techniques. Students will be regularly asked to attempt problems and to turn in solutions in the form of working computer code. Assignments are to be submitted electronically for grading (as a shared git repository). A complete assignment consists of wellcommented 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 cooperatively at the level of discussing algorithms and general approaches, but each student should implement his or her own, independent solution. Late assignments will be penalized at the rate of 20% per day.
Inclass activities — Regular inclass activities, possibly including problems, quizzes, and group exercises, will test students’ understanding of the material covered in recent lectures and assignments.
Projects — Two longerterm programming projects will be due in the middle and at the end of the semester. These are meant to be more substantial in scope and ambition than the weekly assignments. For each project, students will work on a topic of their own choosing, either in their own field of study or from a list of suggestions drawn up by the instructor. Project topics are subject to the instructor’s approval. Expectations for the project will be set at different levels for undergraduate and graduate students, as reflected in the grading scheme. Undergraduate projects will be narrow in scope, addressing a welldefined technical problem, and may build on skeleton code provided by the instructor. Graduate projects will require significant, independent work, and must touch on some interesting phenomenon or other important scientific question.
Schedule
January 23: Classes begin 
M  Jan  23  Lecture 1 
W  Jan  25  Lecture 2 
F  Jan  27  Lecture 3 
January 27: Students may add courses on a space available basis through this date 
M  Jan  30  Lecture 4 
W  Feb  1  Lecture 5 
F  Feb  3  Lecture 6 
February 3: 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 
M  Feb  6  Lecture 7 
W  Feb  8  Lecture 8 
F  Feb  10  Lecture 9 
February 13: Automatic drop date for nonattendance 
M  Feb  13  Lecture 10 
W  Feb  15  Lecture 11 
F  Feb  17  Lecture 12 
M  Feb  20  Lecture 13 
W  Feb  22  Lecture 14 
F  Feb  24  Lecture 15 
M  Feb  27  Lecture 16 
W  Mar  1  Lecture 17 
F  Mar  3  Lecture 18 
M  Mar  6  Lecture 19 
W  Mar  8  Lecture 20 
F  Mar  10  Lecture 21 
March 10: Deadline for course withdrawals without refund 
March 1119: Spring Break 
M  Mar  20  Lecture 22 
W  Mar  22  Lecture 23 
F  Mar  24  Lecture 24 
M  Mar  27  Lecture 25 
W  Mar  29  Lecture 26 
F  Mar  31  Lecture 27 
M  Apr  3  Lecture 28 
W  Apr  5  Lecture 29 
April 7: Good Friday holiday 
M  Apr  10  Lecture 30 
W  Apr  12  Lecture 31 
F  Apr  14  Lecture 32 
M  Apr  17  Lecture 33 
W  Apr  19  Lecture 34 
F  Apr  21  Lecture 35 
M  Apr  24  Lecture 36 
W  Apr  26  Lecture 37 
F  Apr  28  Lecture 38 
M  May  1  Lecture 39 
W  May  3  Lecture 40 
F  May  5  Lecture 41 
May 5: 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 (6629157128 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 labbased courses, technical writing courses, seminar courses that assign a term paper, and senior design courses that assign a multifaceted 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.