|
CV and Biography
Calendar Research Interests Recommended Reading Blogs: ... Personal ... Basie Project ... Software Carpentry |
Greg Wilson has a Ph.D. in Computer Science from the University of Edinburgh, and has worked in high-performance scientific computing, data visualization, and computer security. He is currently an Assistant Professor in Computer Science at the University of Toronto, where his main interest is software engineering education, particularly for computational scientists. Greg is on the editorial board of Computing in Science and Engineering, and a former editorial board member of Doctor Dobb's Journal; his most recent books are Data Crunching (Pragmatic, 2005), Beautiful Code (O'Reilly, 2007), and Practical Programming (Pragmatic, 2009). |
| 2009: | Samira Ashtiani Abdi | Recovering Related Artifacts in Software Projects' History: a Comparison of Information Retrieval Based Methods |
| Jeremy Handcock | How Developers Use an Awareness Tool: Patterns and Usage Scenarios | |
| Carolyn MacLeod | Patterns in Novice Design Analysis Using Spin | |
| 2010: | Aran Donohue | Debugging Domain-Specific Languages |
| Jason Montojo | Characterizing Software Practitioner Behaviour Through Quantization of Qualitative Data | |
| Rory Tulk | Software Testing Techniques - An Empirical Approach | |
| current: | Michael Conley | topic: effect of code review on programming skill acquisition |
| Zuzel Vera Pacheco | topic: temporalization of entity-relationship diagrams | |
Computers are as important to modern science as telescopes and test tubes. From analyzing climate data to modeling the internals of cells, they allow scientists to study problems that are too big, too small, too fast, too slow, too expensive, or too dangerous to tackle in the lab. Unfortunately, most scientists are never taught how to use computers effectively. After a generic first-year programming course, and possibly a numerical methods or statistics course later on, graduate students and working scientists are expected to figure out for themselves own how to build, validate, maintain, and share complex programs. This is about as fair as teaching someone arithmetic and then expecting them to figure out calculus on their own, and about as likely to succeed.
It doesn't have to be like this. Since 1997, the Software Carpentry course has taught scientists the concepts and skills they need to use computers more effectively in their research. This training has consistently had an immediate impact on participants' productivity by making their current work less onerous, and new kinds of work feasible. The materials, which are available under an open license, have been viewed by over 140,000 people from 70 countries, and have been used at Cal Tech, the Space Telescope Science Institute, and other universities, labs, and companies around the world.
I am currently seeking support to update and extend this course. If you would like to help, please contact me.
Basie is a web-based software project forge that integrates all the tools developers need to work effectively in small teams. Built by and for students, it is simple enough to master in ten minutes, but powerful enough to support long-lived distributed projects, and is freely distributed under an open source license. Its features include:
Software development is no longer bound by time zones or national borders. Projects of all kinds--—academic, commercial, and open source—--may have their GUI designers in Boston, their database team in Bangalore, and their testers in Budapest and Buenos Aires. Working effectively in such teams is challenging: it requires strong communication skills, and makes proper use of coordination tools such as version control and ticketing systems more important than ever. But it is also an opportunity for students to build ties with peers across the country and around the world, and for instructors to breathe new life into old courses.
Since September 2008, undergraduates from several universities in Canada and the US have been taking part in joint capstone projects in order to learn first-hand what distributed development is like. Each team has students from two or three schools, and uses a mix of agile and open source processes under the supervision of a faculty or industry lead. Schools and projects that have taken part to date include:
|
|
| 2009: | Practical Programming (co-authored with Jennifer Campbell, Paul Gries, and Jason Montojo) |
| 2008: | Bottle of Light |
| 2007: | Beautiful Code (co-edited with Andy Oram) |
| 2006: | Data Crunching |
| 1999: | Three Sensible Adventures |
| 1996: | Parallel Programming Using C++ (co-edited with Paul Lu) |
| 1996: | Practical Parallel Programming |
| 1991: | Past, Present, Parallel (co-edited with Arthur Trew) |