Miscellaneous notes about the course following the Spring 2014 PHYS 202 at Cal Poly.
Pair programming has been demonstrated to be an effective tool for students to learn programming. Now with all of the materials "fully" developed, in the future I would make the tours required work outside of classtime and have them pair program solutions to the exercises in class. To ensure a balance of work, each person could be the designated driver for half the problems and vice versa.
After I began posting self-guided tour materials and exercises online in advance of class, there were two noticeable effects. First was an obvious drop in attention paid to the tours. Students arrived to class claiming to have "finished" the tours, but then couldn't complete trivial extensions to the tour examples as part of the exercises. I took this trend to mean that they had stopped taking the tours seriously as training and learning tools that would prepare them for doing the exercises.
I spent a few moments of class time reminding them that they need to be present and paying careful attention to each command they type (by hand, NO copy/paste!) as they follow a self-guided tour in order to get the training they need to understand the material and use the skills to complete the exercises. There was some improvement after the pep talk.
Continual reminders that they are building skills and "learning by doing" are important to keeping the students focused and on track.
The second effect of posting materials in advance was a slight drop in attendance, which may be coincidental with the timing of midterms and other course assignment deadlines, but this is unclear.
In future offerings I might only make tour material available in advance as preparation and provide the exercises at the start of class for pair programming activities.
Originally I was not going to give any exams because I don't know whether timed exams accurately assess programming skills. However, I realized that it might be the kind of motivator the students need to stay on top of their skill-building so that they would be ready to do real problem solving in the second half of the course.
When I created the exam I thought the level was just about right for the two-hour time frame and covered the basics that they should have been able to get from the first several weeks of instruction and activities. I had Brian Granger look it over and offer his opinion. He suggested some additional problems that may have been appropriate but in the end I left the exam as it was.
Then when the students started taking the exam I panicked mildly wondering if it was too easy. They breezed through the first question very quickly (as they should) and I wondered if they would all be finished in 20 minutes. By the end of the exam it was clear that this was probably the right level. Most students stayed until the end. The earliest finishers took about one hour and fifteen minutes.
During the exam I scrolled through the screen viewer with the Insight Teacher Console to gauge progress. I let them use any and all web resources but had admonished them that they were not allowed to copy code solutions. There was just one person who found an answer online and was trying to implement it. I closed the browser window and sent her a message saying that copying the solution she found violated the academic honesty guidelines and she needed to start the problem solution over, which she did. I did not penalize her for it. I also offered guidance through the Insight console messaging system when I saw someone spinning their wheels. Just suggestions such as "try looking up the matplotlib documentation for marker types" when I noticed they were guessing at it and not finding Diamonds. Etc.
The average on the exam for Spring 2014 was 20/25 = 80%.
The catalog description for Cal Poly's PHYS 202 states: "Introduction to using computers for solving problems in physics: differential equations, matrix manipulations, simulations and numerical techniques, nonlinear dynamics."
The pre-requisites are MATH 241 (Vector Calculus) and PHYS 133 (Electricity and Magnetism), but the first math course where they see differential equations and matrices is MATH 244 - Linear Analysis I. (In a previous catalog, MATH 244 was listed as a preferred OR with MATH 241.)
The math pre-requisite for PHYS 202 should really be MATH 244.
According to the physics B.S. Flowchart, students take MATH 244 in the Winter of the second year, so the scheduling would work out to have it be a pre-requisite for PHYS 202.
A Note on FFTs
Fast Fourier Transforms (FFTs) are sometimes included in the laundry list of numerical topics to cover in a course such as this one but may be too advanced for the course as it is taught at Cal Poly, where the students first see Fourier Series/Transforms in MATH 344. According to the physics B.S. flowchart, B.S. students take MATH 344 concurrently with 202. In the MATH 344 Expanded Course Outline, Fourier Series and Fourier Transforms (FS/FT) are covered in the last third of the quarter. The other course in the B.S. flowchart where students see Fourier Analysis is in PHYS 322, which is taken in the Fall Quarter of the third year, after PHYS 202.
These observations suggest that FFTs are a more appropriate topic for an advanced computational physics course (along with partial differential equations, among others). It is the instructor's prerogative to include FFTs if desired, but they may wish to be aware of most students' lack of prior preparation for it.
Some students may be tempted to copy solutions from others' repositories if they are public. I take the attitude that students who do this are only harming themselves by depriving themselves of the opportunity to build their own skills. It is a violation of the academic honesty guidelines to copy/share code and they sign a pledge to not commit academic misconduct. Appropriate actions can be taken in those instances where they are clearly in violation. That said, as of February 2015, github offers free micro accounts to valid academic users with 5 private repositories. In the future, this could be used to eliminate temptation, although solutions to many of the exercises exist in public repos already.
Out of curiosity I decided to peek on the github repos of the students who took the class the previous year, to see who is still using github. There were 7 people who had posted updates to their PHYS202-S13 repo after the class was over. A total of 10 students made new repos for other work after the course was over (some overlap with the 7 already mentioned).
This amounts to a ~23% retention rate (44 students) from 2013 to 2014.