WTPC: A Case for Software Carpentry
We have recently (from March 7th to 18th) held our first Workshop in Scientific Programming Techniques, Link in Spanish. It took place in the Physics Department of the University of Buenos Aires and the organizers were Pablo Echevarría, Cecilia Jarne, María Graciela Molina and me. It was mostly based on the ICTP’s 2014 Workshop on Advanced Techniques for Scientific Programming, organized by Ivan Girotto, Axel Kohlmeyer and David Grellscheid. I wanted to talk a bit here about our experiences in conducting this workshop.
When, on April 2015, we all four went to São Paulo ICTP-SAIFR edition of the same workshop, we thought that it was almost mandatory for us to somehow pass the knowledge along. What began with us thinking that maybe we could give a talk or two about some core concepts (like distributed version control or object oriented programming), escalated to a full-fledged two week course. Without even knowing it, we were in over our heads. This was near July 2015 when we decided to go for a two week Workshop. The goal was to take as students people that had some knowledge about Linux and the command line interface (not too much, simply knowing how to survive in a terminal) and, building from there, teach new tools. The problem, identified by the ICTP in its course (and even earlier by the software carpentry NPO) is that people in some scientific environments know how to program (at least coming from my background, Physics), but most of this knowledge was acquired un-programatically, and based on a specific need. Although I won’t criticize this method, it has a very big disadvantage: sometimes you cannot properly identify (or verbalize) your own needs. This is a paramount case of the versioning control system. You might know that you are getting tired with the way you work, but don’t really know there is an alternative. So this workshop aimed at filling that gap. As our idea of the workshop escalated, so did the impact it had. We had 100 applicants (some were from abroad! Amazing considering that this started as two or three talks in a forgotten basement) of which we had to choose approximately 20.
Inspired by (should I said copied from?) the ICTP’s workshop, it was divided in two weeks, the first week being formative and the second one informative. The topics in the first week were:
- Python as a scripting language
- Object oriented programming
- Compiled languages: linking and compiling
- Hardware architecture
- Debugging and profiling
- Software and hardware optimization
In the second week, we had many invited speakers:
- Pablo Mininni - DF, FCEN, UBA
- Esteban Mosckos - DC, FCEN, UBA
- Gonzalo Sosa Rolón, Saif Addin Ellafi, Xabier Anduaga, Gastón Romeo - CRISIL GR&A, Risk&Analytics
- Ticiano Torres Peralta - FACET, UNT
- Diego Zea - Fundación Instituto Lelior
- Ariel Marin - UTN FRA
that talked about many different things, from MPI programming to risk analysis in financial markets. In the first week, we had hands-on sessions based on the topics covered by the talks, while in the second the students developed communitary programs.
The experience was really satisfying, and even though we were extremely exhausted after those two weeks, we ended up thinking that we would do it again. Well, not only we said it, but also we are doing it again, next year in Tucumán, Argentina.
To finish, I attach here the talks given by me in the first week. These are in Spanish, obviously, but I want to translate them anytime soon, so they can be up here for future reference. Feel free to go through the workshop page (also in Spanish) to check for the other talks.
Leave a Comment