Two Unfunded Proposals

Posted

For the price of two condominiums in Toronto, we could have a significant impact on software engineering or data science at Canadian universities. It seems like a pretty good bargain to me, but as is so often the case, everyone seems to think these kinds of things are someone else’s job to fund…

Software Engineering: An Empirical Approach

Executive Summary

We will help Canada’s IT sector become more competitive and strength ties between industry and academia by (a) pairing experienced software developers with software engineering instructors in higher education and (b) co-developing curricular materials to teach data analysis methods in software engineering courses so that the next generation of developers are able to generate, understand, and apply evidence-based decision making. We seek CAD $1.65 million over three years to fund this work.

The Problems We Want to Solve

People have been complaining about the “two cultures” of academic research and industrial practice for as long as computer science has been a recognized field. This divide is particularly pronounced in software engineering: many of the people who teach the subject at Canadian colleges and universities have little more experience with designing, building, and deploying large applications than their students. Those who do have such experience are often sessional instructors, whose high turnover rate means that there is little or no accumulation of institutional learning.

An equivalent communication failure occurs in the opposite direction. Over the last twenty-five years, empirical research in software engineering has answered many questions of practical importance. Are some programming languages easier to learn or less error-prone than others? (Yes.) Does test-driven development produce better code in less time? (Probably not.) Do “10X” programmers exist? (Not in significant numbers, but four-fold differences in individual productivity are common.)

Most working programmers—and sessional instructors—are unaware of these findings. As a result, many important decisions are made on the basis of hearsay and “just-so” thinking. As a corollary, most programmers do not think to apply empirical methods to their own work: they may build dashboards and data analysis pipelines for their clients or employers, but do not collect and analyze equivalent data about their own bug rates, deployment failures, and so on.

Our Proposal

We believe we can and should address these problems simultaneously by pairing experienced software developers with software engineering instructors in higher education and co-developing curricular materials to teach data analysis methods in software engineering courses.

Pairing Instructors

Rather than asking working programmers to teach entire software engineering courses, we propose pairing programmers with full-time instructors at Canadian colleges and universities. Experienced programmers will be recruited from both companies and major open source projects, given training in modern evidence-based instructional methods, and then paid 80% of their usual hourly salary to spend one full day per week working with an instructor to develop, deliver, and assess upper-year software engineering classes.

Teaching Data Science for Software Engineering to Software Engineers

Many undergraduate software engineering courses attempt to simulate the entire cycle of product design, development, and delivery. These attempts are often unsatisfying: students’ time and attention is divided between multiple courses, so they are unable to work in the focused manner that most software development methodologies assume, and 12 or 13 weeks is simply not enough time to form teams, come to grips with the problem domain, and so on.

We propose developing reusable curricular materials for these courses in which the central project is the construction of a data analysis pipeline. Such projects share many of the features of those in traditional courses—e.g., development, debugging, and deployment—but will provide a natural way to introduce the methods used by software engineering researchers and some of the field’s key findings.

What We Need

Item Annual Cost Number Annual Total
Instructor Recruitment and Pairing $75,000 1 $75,000
Curriculum Development $75,000 1 $75,000
Instructor Pay $20,000 20 $400,000
Annual Total $550,000
Program Total $1,650,000

Teaching Partnerships in Data Science

Executive Summary

We will help Canada’s IT sector become more competitive and strengthen ties between industry and academia by pairing experienced data scientists with data science instructors in higher education. We seek CAD $1.65 million over three years to fund this work.

The Problems We Want to Solve

People have been complaining about the “two cultures” of academic research and industrial practice for as long as statistics and computer science have been recognized fields. This divide is particularly pronounced in data science: many of the people who teach the subject at Canadian colleges and universities have little more experience with designing, building, and deploying industrial-strength data analysis pipelines with modern tools than their students. Those who do have such experience are often sessional instructors, whose high turnover rate means that there is little or no accumulation of institutional learning.

Our Proposal

Rather than expecting working data scientists to teach entire courses on their own, we propose pairing data scientists with full-time instructors at Canadian colleges and universities. Experienced data scientists will be recruited from both industry and the private sector, given training in modern evidence-based instructional methods, and then paid 80% of their usual hourly salary to spend one full day per week working with an instructor to develop, deliver, and assess undergraduate and/or graduate data science classes.

Our model is build-operate-transfer: after being paired with a data scientist for several semesters, the permanent instructor would be expected to have acquired and adapted enough new knowledge to teach on their own (and train others).

What We Need

Item Annual Cost Number Annual Total
Instructor Recruitment and Pairing $75,000 1 $75,000
Curriculum Development $75,000 1 $75,000
Instructor Pay $20,000 20 $400,000
Annual Total $550,000
Program Total $1,650,000