CV

Profile Room 4262
Dept. of Computer Science
Bahen Centre for Information Technology
40 St. George St.
University of Toronto
Toronto, Ontario M5S 2E4
+1 416 946 5236
gvwilson@cs.utoronto.ca
http://www.cs.toronto.edu/~gvwilson

Employment

Sept 2006 — present: Assistant Professor, Dept. of Computer Science, University of Toronto.
Teaching graduate and undergraduate courses; developing a proposal for a Professional Master’s degree in Computer Science; helping to reorganize the undergraduate software engineering curriculum; supervising and co-supervising graduate students in Computer Science and Medical Biophysics; editing a collection of essays on software design called Beautiful Code; on the editorial board of Computing in Science and Engineering and Doctor Dobb’s Journal.
Sept 2004 — Jan 2006: independent consultant and software developer.
Wrote Data Crunching: Solve Everyday Problems Using Java, Python, and More (Pragmatic Press, 2005); led development of a web-based portal for managing undergraduate team programming projects while an Adjunct Professor at the University of Toronto; created a course on basic software development skills for the Python Software Foundation; contributing editor with Doctor Dobb’s Journal.
Jan 2000 — Aug 2004: senior developer, SelectAccess team, Toronto.
Worked on design, implementation, documentation, and testing of Select Access, a next-generation network security management product, using C++, Java, LDAP, and XML. The product started life as Nevex Software Technologies, was acquired by Baltimore Technologies, and became part of Hewlett-Packard in September 2003. I was also a contributing editor with Doctor Dobb’s Journal, and an Adjunct Professor in Computer Science at the University of Toronto, where I created a new core course on software design and tool-based software development and supervised a series of undergraduate projects.
June 1998 — Dec 1999: independent consultant and software developer.
Organized and ran the Software Carpentry project for Los Alamos National Laboratory; worked on a next-generation security product called SelectAccess for Nevex Software Technologies; taught software engineering and Python at Los Alamos National Laboratory and elsewhere; editorial work for Doctor Dobb’s Journal; developed tutorials and documentation for a parallel C++ numerical library at LANL; wrote a children’s picture book called Three Sensible Adventures (Annick Press, 1999).
Aug 1996 — June 1998: software developer, Visible Decisions Inc., Toronto.
Team lead for In3D Studio, an IDE for building 3D data visualization tools using Microsoft Windows and MFC, during three release cycles. Major responsibilities included project management, testing the In3D library, design and implementation of a property interface for In3D’s classes, and construction of a C++ code generator.
May 1995 — Aug 1996: Center for Advanced Studies, IBM Toronto.
Co-developed ABC++, a C++ library for parallel and distributed computing; edited a book on C++-based parallel programming systems (Parallel Programming Using C++, MIT Press, 1996); organized fifteen workshops for CASCON’95.
Sept 1992 — April 1995: post-doctoral researcher.
Worked at the University of Oregon, University of Alberta, Australian National University (Canberra), Vrije Universiteit (Amsterdam), and University of Toronto; taught graduate and undergraduate courses on parallel programming and participated in local research projects while writing a book on programming massively-parallel computers (Practical Parallel Programming, MIT Press, 1995).
Sept 1986 — Aug 1992: Research Assistant, Edinburgh Parallel Computing Centre, Edinburgh.
Supported development and parallelization of large scientific applications for the Centre’s industrial sponsors; wrote and maintained GFX graphics package for Meiko Scientific’s parallel computers; supervised graduate and undergraduate theses; initiated and ran the Centre’s Summer Scholarship Programme; produced a quarterly newsletter; developed an entry for the 1989 World Computer Chess Championships while completing Ph.D. part-time.
March 1985 — Aug 1985: software engineer, Design Interpretive Division, Bell-Northern Research, Ottawa.
Developed a real-time 68000-based interface to a 3D digitizer for use in an office automation system prototype.
June 1984 — March 1985: software engineer, Miller Communication Systems Ltd., Kanata.
Developed signal processing simulation software.
1975 — 1983: part-time and summer jobs, including an NSERC USRA in 1982.

Education

Ph.D. in Computer Science, Department of Computer Science, University of Edinburgh, 1993.
Thesis was Structuring and Supporting Programs on Parallel Computers.
M.Sc. in Information Technology (Knowledge Based Systems), Department of Artificial Intelligence, University of Edinburgh, 1986.
Thesis was An Implementation of a Connection Method Theorem Prover for S5 Modal Logic. Shared prize for best thesis in year.
B.Sc. in Mathematics and Engineering (First Class Honours), Faculty of Applied Science, Queen’s University, Ontario, 1984.
Top student in Mathematics and Engineering class.

Awards

  • Co-winner with Andy Oram of the 2008 Jolt Award in the Best General Book category (for Beautiful Code).
  • Instructional Technology Courseware Development Fund award, 2007.
  • Instructional Technology Courseware Development Fund award, 2006 (with Prof. Jennifer Campbell).
  • IBM Eclipse grant, 2005 (with Prof. Steve Easterbrook).
  • Python Software Foundation grant, Dec 2004 — Aug 2006, for developing Software Carpentry course.
  • Instructional Technology Courseware Development Fund awards, 2004 and 2005 (with Prof. Karen Reid).
  • University of Toronto Computer Science Student Union Teaching Award, 2004.
  • Shared Howe Prize (best M.Sc. thesis in Artificial Intelligence), University of Edinburgh, 1986.
  • Commonwealth Scholarship, 1985-86.
  • University Medal, Queen’s University, 1984 (top student in Mathematics and Engineering class).
  • Co-winner of A.B. Lillie Prize, 1984 (top student in Mathematics).
  • Queen’s University Provincial Scholarship (4 years).
  • Dean’s Scholar, Faculty of Applied Science, Queen’s University (3 years).
  • Jeffrey Scholarship, Department of Mathematics, Queen’s University (2 years).
  • Dean’s Scholar, Faculty of Arts & Sciences, Queen’s University (1 year).
  • British Columbia Provincial Scholarship, 1980 (stanine 9 out of 9 on examinations).

Selected Publications

  • Andy Oram and Greg Wilson (eds): Beautiful Code: Leading Programmers Explain How They Think. O’Reilly Media, 2007; winner of the 2008 Jolt Award for Best General Book.
  • Greg Wilson: Data Crunching: Solve Everyday Problems Using Java, Python, and More.. Pragmatic Bookshelf, 2005.
  • Gregory V. Wilson and Paul Lu (eds.): Parallel Programming Using C++. MIT Press, 1996.
  • Gregory V. Wilson: Practical Parallel Programming. MIT Press, 1995.
  • Greg Wilson: Three Sensible Adventures. Annick Press, 1999.
  • Arthur Trew and Greg Wilson (eds.): Past, Present, Parallel: A Survey of Available Parallel Computing Systems. Springer-Verlag, London, 1991.
  • D. Winter, B. Vinegar, H. Nahal, R. Ammar, G. V. Wilson, and N. J. Provart: “An ‘Electronic Fluorescent Pictograph’ Browser for Exploring and Analyzing Large-Scale Biological Data Sets”. PLoS ONE 2(8): e718, 2007.
  • Jorge Aranda, Steven Easterbrook, and Gregory V. Wilson: “Requirements in the wild: How small companies do it”, to appear in Proc. 15th International Conference on Requirements Engineering (RE’07), October 2007.
  • Karen L. Reid and Gregory V. Wilson: “DrProject: a software project management portal to meet educational needs”. Proc. 38th SIGCSE Technical Symposium on Computer Science Education, Cleveland, Ohio, 2007.
  • Greg Wilson: “Where’s the Real Bottleneck in Scientific Computing?” American Scientist, Jan.-Feb. 2006.
  • Paul Gries, Volodymyr Mnih, Jonathan Taylor, Greg Wilson, and Lee Zamparo: “Memview: A Pedagogically-Motivated Visual Debugger”. ASEE/IEEE Frontiers in Education (FIE 2005), Indianapolis, Indiana, 2005.
  • Greg Wilson: “Open-source offers solutions for science software education”. Nature, Vol. 436, pg. 600, July 2005.
  • Greg Wilson: “Top Ten Data Crunching Tips and Tricks”. O’Reilly OnLamp.com (www.oreillynet.com), June 9, 2005.
  • Keir Mierle, Kevin Laven, Sam Roweis, and Greg Wilson: “Mining Students’ CVS Repositories for Performance Indicators”. Proc. International Workshop on Mining Software Repositories (MSR05), St. Louis, Missouri, 2005.
  • Karen L. Reid and Gregory V. Wilson: “Learning by doing: Introducing version control as a way to manage student assignments”. Proc. 36th SIGCSE Technical Symposium on Computer Science Education, St. Louis, Missouri, 2005.
  • Greg Wilson: “Extensible Programming for the 21st Century”. ACM Queue, November/December 2004-05.
  • Michelle Levesque and Greg Wilson: “Open Source, Cold Shoulder”. Software Development, November 2004.
  • Gregory V. Wilson: “XML-Based Programming Systems”. Doctor Dobb’s Journal, March 2003.
  • Gene Amdur, Andrew Flint, Irving Reid, and Greg Wilson: “SelectAccess: Extensible Network Access Control”. Doctor Dobb’s Journal, Spring 2002.
  • Pete Beckman and Greg Wilson: “Open Source Meets Big Iron”. Doctor Dobb’s Journal, June 2000.
  • Gregory V. Wilson: “High-Performance Programming for Computational Scientists”. Keynote address in Pollack et al (eds.), Proc. High Performance Computing Systems and Applications ‘99, Kluwer, 1999.
  • Peter Webb and Gregory V. Wilson: “Matlab as a Scripting Language”. Doctor Dobb’s Journal, January 1999.
  • Greg Wilson: “Is the Open Source Community Setting a Bad Example?”. IEEE Software, Vol. 16, No. 1, January 1999.
  • Mauricio de Simone and Gregory V. Wilson: “The Active Expressions Library”. Doctor Dobb’s Journal, August 1998.
  • Brent Gorda and Gregory V. Wilson: “Building and Running Online Auctions”. Doctor Dobb’s Journal, October 1997.
  • Roel van der Goot, Jonathan Schaeffer, and Gregory V. Wilson: “Safer Tuple Spaces”. COORDINATION 1997, pp. 289-301, Berlin, Germany, 1997.
  • Eshrat Arjomandi, William G. O’Farrell, and Gregory V. Wilson: “Smart Messages: An Object-Oriented Communication Mechanism for Parallel Systems.” Proc. 2nd USENIX Conference on Object-Oriented Technologies and Systems, Toronto, June 1996.
  • Gregory V. Wilson: “What Should Computer Scientists Teach to Physical Scientists and Engineers?” IEEE Computational Science & Engineering, Summer 1996, Fall 1996.
  • Gregory V. Wilson: “Using Opportunistic Combining Networks to Reduce Contention in Multicomputers”. Proc. PARLE’92, Paris, France, June 1992. Published as Lecture Notes in Computer Science 605, Springer-Verlag, 1992, 3540555994.

Sole or joint author of over 130 other articles and reviews in academic journals, popular science magazines, newspapers, and trade publications, including Doctor Dobbs Journal, IEEE Software, New Scientist, and The Independent.

Courses Taught

  • Fall 2002 — present: CSC494/5 project course, University of Toronto. Supervised over 130 undergraduates working alone or in small teams on 60 real-world projects, of which more than half were for clients outside the Computer Science department.
  • Winter 2008: CSC301 (Introduction to Software Engineering), CSC490 (Computer Science Capstone), and CSC2125 (Topics in Software Engineering), University of Toronto. 45 students in CSC490 and CSC2125 were matched with real customers and went through the entire software development lifecycle on 25 substantial projects.
  • Fall 2007: CSC301 (Introduction to Software Engineering), University of Toronto.
  • Winter 2007: CSC407 (Software Architecture) and CSC2125 (Topics in Software Engineering), University of Toronto. The latter is an academic version of the Software Carpentry course, which introduces scientists and engineers to basic software development skills.
  • Fall 2006:CSC407 (Software Architecture), University of Toronto.
  • Summer 2006: CSC207 (Software Design) and CSC407 (Software Architecture), University of Toronto.
  • Fall 2005: CSC2125 (Topics in Software Engineering), University of Toronto. This is an academic version of the Software Carpentry course, which introduces scientists and engineers to basic software development skills.
  • Summer 2005: CSC309 (Web Programming), University of Toronto.
  • Winter 2004: non-credit course in software development to science and engineering graduate students at the University of Toronto.
  • Summer and Fall 2003: CSC207 (Software Design), University of Toronto.
  • Summer 1998 — Spring 2004: intensive short courses on software engineering and Python at Los Alamos National Laboratory, the Space Telescope Science Institute, and the Bettis Atomic Power Laboratory.

Other Achievements

  • Mentor, Google Summer of Code program, 2005-2007 (6 students); organized series of articles on successful projects for Doctor Dobbs Journal, 2005.
  • Supervised 9 M.Sc., 4 undergraduate, and 6 Afstudeer theses at the University of Edinburgh and the Vrije Universiteit (Amsterdam).
  • Recruited, trained, and supervised 60 students while co-ordinator of Edinburgh Parallel Computing Centre’s Summer Scholarship Programme.
  • Ultimate frisbee, 1991-present (member of Toronto Ultimate Club “C” Division championship team 2002).
  • Competitor in 6th World Computer Chess Championship, Edmonton, 1989 (one win, four losses).
  • Competitive judo at Queen’s University, Takahashi Dojo (Ottawa), and the University of Edinburgh.
  • Member, Queen’s University Bands, 1980-83 (lead stick 1982).
  • Past or current member/volunteer with the Canadian National Institute for the Blind, the Sierra Club, Amnesty International, OXFAM, and the Bruce Trail Assocation.
  • Bronze Cross, RCLSS (qualified lifeguard).

References available on request.