# Teaching computational thinking and practice

A minisymposium held during the SIAM Conference on Computational Science & Engineering in Salt Lake City, UT on Sunday, March 15, 2015.

## MS78

### Summary

As dependence on computational tools increases, so does the need for better computational training. We discuss our own efforts to provide such training. We address several larger questions including: What is the role of computational training in our various fields? How can we scale training to meet demand? What technologies, languages, principles, and practices should we teach? What is the right balance between conceptual learning and hands-on training and practice? More generally, how should we train the next generation of scientists, statisticians, and engineers in computational methods and practices?

### Teaching statistical computing to undergraduates (slides)

```
K. Jarrod Millman (co-organizer)
Division of Biostatistics, UC Berkeley
Philip B. Stark (co-organizer)
Department of Statistics, UC Berkeley
```

We frame the minisymposium in the context of our experience teaching computing with data to undergraduates. We discuss our recent efforts to automate grading student computational work in Python and R. Automating grading can improve pedagogy by making it easier to assign students more work, reducing latency in providing feedback, and enabling TAs to spend more time working directly with students by freeing them from the “busy work” of grading.

### Teaching with Version Control (slides)

```
Randall J. LeVeque
Applied Mathematics Department
University of Washington
```

The use of version control is widely viewed as a best practice in the development of software, not only for large scale projects with many collaborators but also for the solo development of research codes. However, students are rarely taught to use version control in courses. I will describe some recent attempts to introduce it into the computational curriculum by requiring students to access course materials, submit homework, and collaborate on group projects via GitHub or BitBucket repositories.

### Teaching Computing to Engineers (slides)

```
Lorena A. Barba
Mechanical & Aerospace Engineering,
The George Washington University
```

The term “computational thinking” became quite popular some years ago with a viewpoint piece at the CACM by Wang (2006), but the term goes back to Papert 10 years before. Wang explained it as the ability to think algorithmically and apply problem-solving computation in other fields. We’ve been talking about teaching computational thinking ever since. With an interest in reforming how we teach computing to engineering students, I stumbled onto an extension of this idea that defines the pedagogical value of computation. With modern tools for interactive computing (e.g. IPython Notebooks), it becomes possible to learn by computing, to actually create knowledge—similar to what we do in scientific computing to make discoveries, but in education. I will describe how this thinking has been inspiring several educational initiatives aiming at making computing a core pedagogical instrument.