## Effective Practices

### Establish goals and a plan for providing students with computational skills

- Inventory software and hardware available on campus.
- Determine students’ access to technology (e.g., computers, phones, and software) and consider this access in plans involving computational activities given as homework (e.g., ensure that students have access to computing labs outside of class time, work with your instructional technology office to make site-licensed software available off campus, ensure that assignments use software that is accessible on the devices students have, and/or loan students laptops with software installed).
- Locate other computational resources on and off campus, e.g., coding or robotics clubs, local industry, or technology companies.
- Survey on the software and computational skills they integrate into their courses and their expertise and interest in expanding computational skills into the physics curriculum.
- Inventory the expertise within your institution to identify potential collaborators who can either provide guidance on teaching computational skills or identify existing activities outside your department that could be integrated into and/or modified for use within the physics curriculum.

- Survey the computational skill sets of incoming students, including computational physics skills, use of computational tools, and technical computing skills.
- Collaboratively determine the desired computational skill set of program graduates, using input from sources such as departmental alumni, potential employers of program graduates, etc.
- Collaboratively determine the desired computational skill set of students in non-majors physics courses, using input from sources such as student feedback, discussions with faculty in other departments, etc.
- Collaboratively determine for computational skills, including computational physics skills, use of computational tools, and technical computing skills, throughout the curriculum. Revise these outcomes as needed.
- Determine what can be done with existing resources.
- Determine what can be done with additional resources and investment of time.
- Reflect on and revise student learning outcomes as necessary, based on assessment feedback.

- Pay special attention to ensuring that all students feel supported in participating in computational work, in light of pervasive stereotypes of computation as a white and male activity.
- Encourage to engage students in the design of instructional materials, assessments, and other projects, and to ask students what they need to be able to learn and demonstrate their understanding. For example, students may be able to provide input on grading and assessment structures to better support their learning.
- Train your instructional staff to notice and respond to the marginalization of students during group work, recognizing that the nature of this marginalization may be different during computational activities than during other kinds of activities. For example, students with more experience in computer science may dominate computational group work, so instructional staff should be aware of students’ backgrounds and strategies and include all students.
- Use the results of incoming student surveys to intentionally design courses and experiences that are inclusive and promote equity within the program.
- Provide computational learning opportunities for and celebrate achievements of all students, particularly those from historically .
- Invite women and people of color whose work includes computational physics to share their experiences with students in classes or departmental seminars.
- Discuss historical contributions to computation by women and people of color, e.g., Katherine Johnson, Dorothy Vaughan, Grace Hopper, and Ada Lovelace.
- See the section on Equity, Diversity, and Inclusion for other strategies for supporting students from marginalized groups.

- Develop and implement a strategy to assess which practices are most effective for supporting students in achieving your .
- Develop a that identifies where each student learning outcome for computational skills is introduced and developed in the curriculum.
- Have regular meetings of instructional staff teaching computational skills to check whether all learning outcomes in your curriculum map are being addressed in the appropriate courses and how these outcomes are connected throughout the curriculum.
- Identify and resolve any issues with implementing the curriculum map, e.g., gaps, lack of buy-in from instructional staff, or a need for professional development.
- Communicate the outcomes of these activities at department meetings, identifying accomplishments as well as gaps for potential curricular revisions.

- Lower barriers to using computation in courses by finding reliable technological solutions, sharing resources, and encouraging collaboration, e.g., by pairing instructional staff members who have less experience with computation with another instructional staff member who can support their growth in this area.
- Encourage who are teaching computational skills to use the many available resources for computational instruction. See Resources for examples.
- Support to take advantage of professional development opportunities around evidence-based teaching practices in computational instruction.
- Support to present about their experiences both locally and nationally.
- When developing or reforming courses and curricula, use your to include computational skills development in your course activities.
- Recognize and encourage who implement computation in their courses, document the impacts on student learning and student attitudes, and use this information to improve instruction.

### Integrate opportunities to develop computational skills into the curriculum

- Implement active-learning approaches, particularly those suited for computational skills, such as or other group or project-based approaches. See the section on Implementing Research-Based Instructional Practices for details.
- Integrate computational activities throughout the standard physics course offerings in a deliberate and coherent way.
- Design laboratory activities that use computational approaches for data acquisition and organization, analysis and modeling, and visualization. See the section on Laboratory and Experimental Skills for details.
- Scaffold students’ development of career-relevant computational skills throughout the curriculum.

- Teach students about analytical models for which there are computational analogs and extensions, e.g., projectiles with and without air drag.
- Have students reflect on the similarities and differences between using analytics versus computation to model a physical system, e.g., obtaining an expression whose parameters can be tuned versus having to choose fixed values for parameters, or solving an ordinary differential equation numerically using a “step” algorithm versus analytically by guessing a functional form and showing that it is a solution.
- Have students explore the affordances and constraints of analytical and numerical modeling, e.g., the computational time necessary for accurate numerical results or the lack of analytic solutions in some limits or regions of parameter space for models such as the simple pendulum.
- Have students explore the connection between posing problems and solutions in terms of continuous (analytic) variables and posing them in terms of discrete (computational) variables, e.g., discrete versus continuous location and time information for a projectile.
- Have students reflect on the advantages and disadvantages of analytical versus computational analyses based on the activities above.

- Support students in learning to plan and document their code.
- Support students in analyzing their programs for efficiency and accuracy, and iteratively improving them.
- Support students in learning the theoretical basis of canonical algorithms and data analysis techniques used in physics.
- Familiarize students with commercial computational packages.
- Familiarize students with artificial intelligence and machine learning methods.
- Familiarize students with ethical issues in computing, with respect to, e.g., model choice, algorithm choice, uncertainty quantification, artificial intelligence, energy usage, and the goals of projects that computational work can be used to support.

- Establish working relationships with appropriate related departments (e.g., computer science, data science, and engineering) to design or co-design computational courses and degree tracks and to provide physics credit for those courses.
- Discuss and collaboratively align courses, languages, and resources with other departments to avoid duplication of efforts, extension of graduation timelines, or excess costs to students.
- Consider cross-listing computational physics courses with other departments.
- Encourage students to take appropriate computer science courses if no computational physics courses exist.

### Provide students early and continuing opportunities to learn and apply computational skills

- Develop for a core set of computational concepts and teach them within a physics context.
- Incorporate activities that integrate foundational techniques such as iterative numerical integration methods and data visualization, fitting, and analysis.
- Design exercises using video analysis, data acquisition interfaces, and computer simulations, e.g., video analysis of the center-of-mass motion of an object when tossed between students, acquiring and analyzing position, velocity, and acceleration data for a mass-spring system, or quantification of damping of the same system using a PhET simulation.
- Include activities that require students to create, explore, and refine models of physical systems through programming and simulations, e.g., exploring complex multi-body systems using Newton’s Laws or analyzing the motion of a projectile without and with air drag.
- Include activities in which students compare experimental data to the behavior of a simulation/computational model, e.g., comparing experimental data to the analytical model of a simple pendulum or harmonic oscillator.
- Include activities in which students explore how varying initial conditions may produce interesting, surprising, or complex behavior, e.g., periodic versus chaotic motion of a double pendulum.
- Seek recommendations for computational examples and activities from other departments these courses serve.

- Design classroom and homework exercises that use mathematical symbolic computation programs, e.g., Mathematica.
- Design lab exercises that use advanced data analysis tools, e.g., Origin.
- Design classroom, homework, and lab exercises that use programming languages, e.g., Python and Matlab.
- Seek recommendations for computational examples and activities from other departments these courses serve.

- Choose a programming language or computational tool that aligns with the resources and computational experience of your . Consider the experience of instructional staff, learning resources, other computational courses, relevance of computational courses to physics, and cost of computational tools for the classroom.
- Explore more sophisticated problems from a variety of physics subfields.
- Integrate advanced computational techniques such as machine learning or big-data analysis.

- Identify problems and/or projects in advanced courses that are appropriate for computer modeling and computational solutions.
- Identify advanced lab experiments (on, e.g., chaotic and stochastic systems) that require computer modeling to predict and understand the experimental system’s behavior.
- Continue and, when appropriate, enhance the use of data acquisition, visualization, and analysis in advanced laboratory activities.

- See the sections on Undergraduate Research and Capstone Experiences for details.
- Identify research opportunities within your department, outside your department, and/or off campus through which your students can get involved in computer modeling and analysis.
- Identify research within and outside your department that would benefit from computer modeling and analysis, and find ways to involve undergraduate students in doing computational work to support that research, e.g., through independent study projects.
- Integrate advanced computation and visualization techniques into theoretical and experimental research experiences.
- Encourage computational independent studies if research experiences are lacking.

### Communicate the value of computation in physics and for a broad range of careers

- Communicate the value of computational skills in a variety of careers. See the section on Career Preparation for details.
- Promote the computational skills used by students and alumni when talking with current and prospective students.
- Encourage presenters at department seminars to highlight use of computational skills, e.g., how they choose which type of package (analytical, coding, or computational modeling) to use to solve a problem.
- Invite alumni to speak with students and faculty (in, e.g., classes, colloquia, and small group meetings) regarding their use of computational skills.
- Encourage faculty and students to highlight their computational skills in research talks, posters, and departmental promotional materials.
- Encourage to highlight information from (see Resources) and other professional societies in science and engineering on the use and importance of computation in careers.

- Encourage students to discuss computational skills with employers at internship and career fairs.
- Invite speakers from non-academic careers who use computation to meet with students and discuss their experiences.
- Develop a list of local and regional employers looking for students with computational skills; include how employees at those workplaces use such skills.
- Connect with curricular partners (e.g., engineering programs and computer science programs) to establish contacts between students and potential employers. Contact these programs’ internship site liaisons, members of their advisory boards, and/or their representatives at internal job fairs.