Teaching Computational Physics to upper level undergraduatesSeyed Mohiaddeen Ali Tabei, University of Northern Iowa
In this course, students learn how to employ computational methods to solve advanced problems in physics and other fields of science. The objective is to obtain the experience of solving realistic non-textbook problems, which occurs in real research and industry situations. This course includes classroom lectures and graded in-class hands-on computer group activities. Home works consist of smaller computational/theoretical problems. To complete this course, each student is required to finish a comprehensive computational project within a team. The project is graded based on an oral presentation delivered by all the members and a written report. The oral presentations are peer-reviewed, and the reports are graded by the instructor.
Computational Physics is not intended to be a course in computer programming. The majority of students have not had a formal programming course before. However, the students are exposed to Matlab as a programming language in their previous courses. Because (i) the prior exposure of students to Matlab; (ii) the campus has a site license for Matlab, the adopted programming platform for this course is Matlab.
To avoid future frustrations and to make sure the whole class shares the same background on basic commands, early in the course, I review the basic Matlab commands. I also emphasize on the shortcomings, pitfalls and the intrinsic source of inaccuracy in numerical methods, which similar to experiments sets limits to the accuracy of results. Some of the first hand on activities are dedicated to examples, which targets both the power and the limit of these techniques.
In the course, students are exposed to a variety of numerical methods in the form of physics problems. Typically, problems, which require computation, do not appear in lower level courses. The computational methods I cover are related to physics topics such as electromagnetism, statistical physics, quantum physics, stochastic processes and nonlinear systems. Obviously, the students did not have a uniform background on all the topics. Learning from my past experience, I reduced the complexity and the number of the topics, which I covered. I assumed modern physics as the prerequisites and provided reading background and references based on an only modern physics background. I also took out some of the topics which required a higher level of programming skills such as recursive programming and fractal simulations. Instead, I recommended those topics for more interested students to explore in their coarse projects.
Textbook and course materials: Due to the nature of this course, there is not a complete and comprehensive textbook available (especially in Matlab). It heavily relies on the background and taste of the instructor and author. I gathered my course material and sample codes from various resources. The class had a Google folder, which the material was shared with the class in advance. The recommended textbook was "Numerical Methods for Physics" by Garcia. This textbook is one of the only textbook which uses Matlab as a platform for computational physics. The text book is strong in ordinary and partial differential equation techniques. However it misses more recent stochastic and MonteCarlo Techniques. I used the book for covering those areas plus the topic of nonlinear dynamics. Since the book was recommended, if I assigned something from the textbook, I would provide a copy of the problem to the class. For other techniques students were provided with lecture notes from other resources.
Exams: Computational physics heavily relies on projects. Thus, traditional written exams do not serve the same purpose as it does for other courses. I administered two exams basically on the theoretical aspects of the course. They also had to solve small numerical problems and print out the results. My goal was to make sure that each student is individually familiar with the basics of the methods and techniques. Also, more importantly, the exams would assist me to differentiate students and help me to assess their individual learning within a team.
Assignments and in class group activities: Students had to complete both group and individual assignments throughout the course. The assignments were either selected from the Garcia textbook or if from other resources, then the guidelines and the problems were printed and shared as handouts. The primary focus was learning via group activity. However to make each individual accountable and to not solely depend on their team mate and also to differentiate them once in a while they were asked to complete their assignments individually. The first time I taught the course, I had some challenge in managing the conflict within one of the groups, dealing with teamwork ethics, and teamwork performance. Based on comments I received in the AAPT workshop, the second time I taught the course, I provided the class with a template about how a group should function and how the roles should be divided within a team (leader, recorder and skeptic). I also periodically asked the team members to provide constructive feedback to each other. This time, I did not provide full flexibility to the students on their choice of group members. I took the lead in assigning group members based on their level of experience. I rotated the composition of the groups throughout the semester. Also, I encouraged the team members to switch their role within the group. I should also note that I usually give back individual feedback on assignments, projects and exams by meeting students me in my office.
Projects: Due to the modern nature of computational science, the majority of materials, problems and class projects are very close to the ongoing research in different fields of physics and similar to projects which as a physicist or an engineering student may face in their real life. Therefore, this course is an excellent gateway toward practicing real academic research and also tackling realistic problems in the industry within a collaborative teamwork setting. In the real world of research and industry projects are carried out as a team. Therefore, to promote scientific leadership and interactive peer learning, students complete their projects within a team.
This course significantly requires more time devotion than a typical upper-level course. I also had to move beyond an instructor and also, play the role of a supervisor and project manager. I provided them sample project topics with the freedom to also propose their own topic. After getting my approval, they had to submit an abstract and meet with me at least two times through the course of the project to discuss their progress. Each group had to present their work. Their presentation was peer reviewed via Google Forms. As a follow up, each group had to submit a 3-4 pages report. Similar to any research project, at the beginning, the teams struggled with the unknowns, which for sure have made frustrating moments for them. At the last week of the semester when they presented their results you could see how excited and proud they are about their achievements.