Coding Across the Curriculum
In 1999, the National Academy of Science in their report Being Fluent with Information Technology advocated that all college students should learn to program. Rudimentary knowledge of coding for all students was named as a national priority in the recent State of the Union address, as it strengthens the nation’s international competitive in an information age.
The vast majority of students in liberal arts colleges have never been exposed to computer programming. However, there is no room and probably also no need to add a complete course on programming to the students’ curriculum. Instead, we propose to add small programming projects to all existing STEM courses.
Within the project, we will develop curricular components that can be used in most any liberal arts college. The web platform developed for this project can serve as national clearinghouse for the programming projects.
The initiative is currently piloting in senior seminars and physics. The figure shows an actual student project, developed in VPython in a second-semester introductory physics course.
In this example, electrons can be launched from a movable emitter at varying speeds, and the “player” needs to hit a screen on the other side of a random charge distribution. All 120 students in this course are required to turn in working code.
An important feature of Coding Across the Curriculum is that it will be easily reproducible at other colleges. We are minimizing the adoption hurdle by designing small “infusions” of coding into standard STEM courses as they would be taught at almost every college and university around the nation, so degree requirements and course numbers do not need to be modified. An online platform allows for completion of the projects without installing software locally.
The project assignments should be completed over the course of about two weeks, requiring about six hours of uninterrupted work each.
The following are illustrative examples; deciding on the actual projects is a component of the proposed project.
- Predator-Prey: simulation of a predator-prey system
- Hardy-Weinberg: simulation of population genetics, taking into account several higher order parameters
- Stoichiometry: balancing of chemical equations.
- Kinetic gas theory: simulation of a large number of molecules in a box, observation of temperature and pressure.
- Chemical kinetics: addition of reactions between molecules, observation of reaction rates.
- VSPER optimization: simple central atom and ligand model, 3D visualization
- Harmonic series: numerical proof of some “paradoxes”
- Numerical integration
- Fractals: Sierpinski carpet and Koch snowflake
- Double-Pendulum: simulation of a driven double pendulum, observation of onset of chaotic behavior.
Experience has shown that students oftentimes have problems installing programming environments, and valuable time is lost trying to troubleshoot those problems. In order to facilitate broad adoption with minimum hurdles, we will create an online browser-based environment for the coding projects.
In every semester, a “Basics of Programming” workshop will be offered at times convenient for students. This four-hour workshop will provide an introduction for students who have never programmed before. Over the course of the project, an online version of this workshop will be produced.
As part of the project we will develop an assessment instrument on algorithmic thinking, the Algorithm Diagnostic Assessment.