Archive

Archive for the ‘Research’ Category

Another Quote from Mark Guzdial

June 24th, 2010
Comments Off

From “Proving and Improving Teaching Programming Languages“:

SIGPLAN Education Board has produced a report “Why undergraduates should learn the principles of programming languages”  which was presented at the ACM Education Council meeting.  It makes four claims for why students should study programming languages:

  • Students learn widely-applicable design and implementation techniques.
  • Many students will need to create new domain specific languages or virtual machines, so it’s useful for them to study what’s known about languages.
  • By learning programming languages, students learn new computational models and speed learning of new languages.  ”The best preparation for quickly learning and effectively using new languages is understanding the fundamentals underlying all programming languages and to have some prior experience with a variety of computational models.”
  • Students learn how to choose the right programming language for a task.

The problem is that we have empirical support for none of these claims.  People are amazingly bad at transferring knowledge.  People tend to learn about a specific situation and not recognize when the same idea applies in a new situation—or worse, they transfer negatively, mistaking the similarity and using older knowledge in an incorrect way.

Research, Teaching

A Quote from Marian Petre

June 24th, 2010
Comments Off

From Marian Petre’s recent paper “Mental imagery and software visualization in high-performance software development teams“:

…even in debugging and comprehension, the experts relied more on their own systematic practices than on visualizations—and their use of available visualizations related to how directly the visualizations supported their practices.  Tools which simply re-presented available information, which failed to provide forms of abstraction or selection, or which embodied assumptions at odds with the experts’ practices were discarded.

Take-up was extremely low in the context of design and generation. The exception was for general tools such as MATLAB, which allowed software developers to realize their own visualizations—in effect for visualization-builders rather than visualizations per se…(Please note that ‘Not invented here’ was never offered as a reason not to use a tool.)

Research

What Kinds of Docs Do You Use?

May 5th, 2010
Comments Off

What kind of documentation do you use when you’re programming? How useful do you find it? If have three minutes to fill in a very short survey on the topic (it’s literally half a dozen questions), we’d be very grateful for your feedback.

Research

Can You Read and Write Python? Then We Need You!

May 4th, 2010
Comments Off

Mike Conley, another of my current grad students, has got ethics approval for his research study as well. From his blog post:

Want to win a $100 Best Buy gift card? Are you an undergraduate computer science student who knows Python? If so, I need you!

Subjects are needed to take part in a study concerning peer evaluation and grading. Participants will be asked to complete small, fun programming exercises, and peer grade other submissions. Time needed for the study is approximately 1.5hrs and takes place in person in the Bahen Center at the University of Toronto.

Subjects should be undergraduate computer science students with programming experience in Python.

Participants will be entered into a draw for a $100 Best Buy gift card.

For more information please contact:

Mike Conley
mconley@cs.utoronto.ca

Please help him out if you can—I think we’ll all learn some cool stuff from his study.

Research

Do You Speak Database? Then We Need You!

May 3rd, 2010
Comments Off

Zuzel Vera Pacheco, one of my current graduate students, got ethics approval today for her research study. From her blog post:

Want to win a $100 Best Buy gift card? Do you have basic knowledge about database queries? If so, I need you!

Subjects are needed to take part in a study concerning the visualization of database queries. Participants will be asked to draw diagrams that represent the execution of database queries or to determine what queries are represented by a set of diagrams. This study will help design a tool intended to help expert and novice programmers to design and debug such queries. The time needed for the study will range from 30 minutes to an hour, and can take place in the Bahen Centre at the University of Toronto or elsewhere in the Greater Toronto Area.

A basic understanding of relational databases and database queries is required. The examples will contain queries in SQL and other programming languages like Ruby or Python. The participants should be fluent/conversant in English.

Participants who complete the study will be entered into a random draw for a $100 Best Buy gift card. The odds of winning this prize are 1 in 30.

For more information please contact:

Zuzel Vera Pacheco
zuzelvp@cs.toronto.edu

If you can help, please give her a shout—we could all learn something cool.

Research

Congratulations to Jason and Jon

April 22nd, 2010

Congratulations to Jason Montojo and Jon Pipitone, who have just completed their Master’s degrees in Computer Science at the University of Toronto. Jon was one of my very first CSC49X students in September 2002, and Jason was in the second batch in January 2003. I’m proud to have worked with them, and wish them all the best.

And in other school news, Alecia Fowler is still looking for people to participate  in her web-based study of how people understand maps. If you have a few minutes, and would like to help her help the visually disadvantaged, please send her an email at accessiblemapping@gmail.com.

(And in other school news, I handed in my final set of marks two days ago. Yee hah!)

Announcements, Research, Teaching

Summer School on Mining Software Repositories

April 8th, 2010
Comments Off

Summer School on Mining Software Repositories

http://msrcanada.org/school/

June 9-12, 2010.
Queen’s University, Kingston, ON, Canada.
Sponsored by MITACS.

The Mining Software Repositories (MSR) field analyzes the rich data available in software repositories to uncover interesting and actionable information about software systems and projects. It has gained popularity since 2004 with the first instance of the MSR workshop (now conference) and continues to be one of the fastest growing fields in the area of software engineering.

This summer school will provide students with opportunities to learn the background needed to excel in this emerging and important field. For researchers, the summer school offers a platform to discuss and collaborate on the future of the MSR field. The summer school is also an opportunity for industry to learn how to adopt MSR ideas in practice. The speakers are leading experts on MSR from academia and industry.

Lecturers

  • Tim Menzies, West Virginia University, USA
  • Audris Mockus, Avaya Labs Research, USA
  • Tao Xie, North Carolina State University, USA
  • Ahmed Hassan, Queen’s University, Canada
  • Daniel German, University of Victoria, Canada
  • Thomas Zimmermann, Microsoft Research, USA

For topics and a schedule visit the school’s web-page at http://msrcanada.org/school/.

Announcements, Research

How Do You See Maps?

April 7th, 2010
Comments Off

Back in the 1990s, I did a bit of volunteer work with the Canadian National Institute for the Blind, and one of the things I learned was that computers often make life even harder for people whose lives are already hard enough. Remember when classified ads went online? It was several years before screen readers like JAWS caught up, which meant that for several years, finding a job or an apartment was even harder for the visually impaired than it had been. And just when things had settled down, AJAX appeared and broke screen readers again.

Another recent(ish) development that has made life harder for the visually impaired is the increased use of maps on the web. One of my grad students, Alecia Fowler, is trying to address that problem by finding out how best to describe maps to people who can’t see them. If you’re willing to give her 30 minutes of your time, please head over to http://www.cs.utoronto.ca/~aleciaf/maps/ and give her little “game” a try.

Research

What Do You See?

March 18th, 2010
Comments Off

One of my favorite software engineering research papers is Cherubini, Venolia, DeLine, and Ko’s “Let’s go to the whiteboard: how and why software developers use drawings” (SIGCHI’07), which explored the kinds of pictures programmers draw when they’re talking to each other, what those drawings are actually used for, and why today’s drawing tools don’t meet their real needs. In a similar vein, Zuzel Vera Pacheco plans to look at how developers visualize the execution of SQL queries for her Master’s thesis. When you see a query like:

SELECT left.name, right.name FROM people AS left INNER JOIN people AS right WHERE left.name > right.name;

what do you actually see? When a query like this returns an unexpected result, what do you draw as you trace through its execution, and why? It’ll be a few weeks before Zuzel can start her study (we need to get ethics clearance first), but she’d welcome your thoughts.

Research

Currently Juggling

March 15th, 2010

I keep telling my students not to over-commit themselves. It’s a shame I don’t take my own advice :-) . Here’s what I’ve currently got on the go:

Software Carpentry teaches basic software development skills to scientists and engineers. I have 80% of the funding I need to spend a year upgrading its content and delivery. I hope to raise the last 20% of the money in the next few weeks. If I can pull it off, the major challenges will be:

  1. Learning how to create effective online course material: there’s lots of handwaving out there about wikis in the classroom, but nothing substantive about instructional design for mature learners using present-day internet technologies.
  2. Assessment. We don’t know how to measure the productivity of programmers, or the productivity of scientists; trying to gauge this course’s impact on the productivity of scientific programmers will therefore be something of a challenge. (One of the reasons I left industry for academia in 2006 was to figure out how to do this, but my attempts to find research funding all failed.)
  3. Mechanics. Site5 only allows one shell account per domain, which makes it difficult to open up the project’s Subversion repository to other contributors. And I’ll have to choose a format for the lecture notes: LaTeX, plain HTML, S5, one of the many wiki formats… And figure out a better way to create and manage images and video. And pick a bibliography format. And…

A professional Master’s degree in Computer Science at the University of Toronto to complement the department’s existing research Master’s. The program consists of five regular graduate courses, a course each on business skills and professional communication, and an eight-month industrial internship in which students have to show that they can translate theory into practice. We are now accepting applications for September 2010 entry, so if you’d like to learn leading-edge ideas from some of the best researchers in the world, please check it out.

Basie, our replacement for Trac, built on Django and jQuery, is coming along nicely, but I don’t know what will happen to it once I leave U of T. A few non-students are now involved in its development, but we aren’t big enough to bid for our own Google Summer of Code students. If anyone would like to get involved, please give me a shout. (I’d particularly like to hear from ex-project students—it would be nice to have an excuse to stay in touch.)

UCOSP stands for “undergraduate capstone open source projects”. 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 works for a term under the supervision of a faculty or industry lead on an open source project. We’re currently trying to find $35,000 to hire a half-time administrator to run the program from September 2010 so that we can scale up from the present 45 students/term to 80, 90, or more. Again, if you’re interested, please give me a shout.

CSC302 is my regular undergraduate software engineering course. This term, six teams of students are porting Django to Python 3, adding pivot tables to Gnumeric, parallelizing parts of ILUTE, upgrading PyLint, pluginifying Selenium, and extending SpatiaLite. It could be the last regular course I teach at the University of Toronto; it has been a bit bumpy, but I’m glad the students are getting to work on real things.

Grad student supervision: Alecia, Zuzel, and Mike all have topics nailed down, and Jason is writing up. I plan to spend one morning a week in the department working with them from now through next January; I’m looking forward to seeing what they produce.

The Cowichan Problems. This one goes back to the mid-1990s, when I first realized that human performance was at least as important to overall productivity in computational science as machine performance. The idea is to use a suite of fairly simple applications, all stitched together, to benchmark the usability of parallel programming systems. A couple of undergrads updated the code last year; I’m hoping to revisit it as part of my work on Software Carpentry.

Book #1, called What Really Works?, is a Beautiful Code-style book that presents evidence-based results in software engineering. Where do bugs actually come from? Does pair programming get the job done faster? Can code metrics predict post-release fault rates? Are some programming languages intrinsically more productive than others? Each of our authors will explore one such question in a chapter-length essay; contributions are now coming in, and we’re still on track to have the book on the shelves this summer. (I’ve been talking about this subject and this book for a few months now; if you’re interested, you can view the slides.)

Book #2 is yet another collection, this time exploring the architecture of open source applications. As I said in my lightning talk at PyCon, the aim isn’t really to explain the internals of Hadoop, Parrot, and Mercurial (though I think that’s worth doing). The real aim is to teach people how to think about software architecture by showing them how architects think. We’re hoping to have chapters in for review by November, and the book out this time next year.

Book #3 is an illustrated children’s book about the universe, life, science, and global warming. I’ve had some good feedback from the editor who handled my last children’s book, but most of the work is still in front of me.

Projects I’m not working on:

Government 2.0: I enjoyed working on open data/open government projects with my students last term, but I couldn’t find any faculty at U of T willing to keep it going. I could have found Gov 2.0 stuff for CSC302, but I thought open source work would be better for them.

Two novels and half a dozen short stories. I enjoy writing fiction, but it feels like an indulgence, and I keep pushing it aside to do “serious” stuff. I’m sure that when I’m seventy I’ll regret having done that, so I hope to spend one hour a day writing fiction once I start full-time on Software Carpentry.

Jazz: I haven’t touched my sax since this time last year—it may be vanity, but I’d rather not play at all than play badly. Maybe when my daughter’s a little older…

Exercise: yeah… exercise. Maybe I’ll get my bike back on the road this week…

Basie, Government 2.0, Making Software, Research, Teaching, Uncategorized