Research interests: software reliability, software engineering, compilers, programming languages, concurrency, formal verification, operating systems.
I am one of the principal investigators in the Software Analysis Research Group at Ryerson.
My primary research focus at the moment is Programming for the Rest of Us - creating an environment for anybody to be able to transform the data swarming around them into useful information.
For the past several years I have been working on foundational work that would allow software to be "engineered". This has principally been based on finding an accurate way to determine software reliability. This is particularly challenging because, unlike most hardware systems, a small change in a software system can result in dramatic changes in the system reliability. This was the area of my Ph.D., which opens more questions than it answers, so I could likely spend the rest of my career exploring these avenues and supervising other researchers. (But I won't, because there are too many other interesting research areas to look at.)
The program analysis necessary for software reliability is very similar to the program analysis required for compilation and other parts of programming languages research, which is my second main area of research. There are several direct applications of the software reliability research to this area. The research area that I was pursuing before I switched topics for my Ph.D. also has several fruitful research paths open, which I want to eventually explore.
I am also very interested in programming languages design from a pedagogical standpoint - for all beginning programmers, but most especially for women - as well as visual languages that would be more accessible to non-computer scientists. I had some student researchers a few years ago working on visual language programming environments for high-school girls. While the project itself has been on a back-burner, one of those students went on to do a Masters in the area at Queen's, and another one has completed an undergraduate thesis in the area. I have a half-dozen papers in the general area of computer-science education, and I will also continue this work (even if the granting councils aren't excited by it!).
2014-2016: Dean's Bridging Grant $10,000
2002-2006: NSERC Research Grant, $15,000 per year.
1997-2001: NSERC Research Grant, $17,600 per year. Inactive 2000.Sep.01-2002.Sep.01 while I completed my PhD.
1997-present: Dean's Starter Grant, $5,000
Two preliminary patents related to web delivery of services were filed during my time at Swurv. I am principle inventor for both of these patents. Unfortunately, the company went out of business before the applications could be completed.
Compacting Garbage Collection Can Be Fast and Simple. Charles Clarke and Dave Mason. Software Practice and Experience, 26(2):177-194, February 1996.
The Online Assessment in Programming Courses A Multiple Case Study. Denise Woit and Dave Mason. Selected Styles in Web-based Educational Research, Bruce Mann, Ed. Idea Group Inc, Hershey, PA, 2006.
Properties of Software Systems Synthesized from Components. Dick Hamlet, Dave Mason, and Denise Woit. Chapter 6 in Component-Based Software Development: Case Studies, Kung-Kiu Lau, Ed. World Scientific, London, 2004
Evaluation Methods for In-Context, Consistent Comments and Hierarchical Marking. Denise Woit and Dave Mason. Chapter 13 in Perspectives in Web Course Management, Bruce Mann, Ed. Canadian Scholars Press, Toronto, 2000.
Mocks, Proxies, and Transpilation as Development Strategies for Web Development Noury Bouraqadi and Dave Mason. International Workshop on Smalltalk Technology, Prague, Czech Republic, August 2016
Ubiquitous Citizen Programming. Dave Mason. 7th International Conference on Emerging Ubiquitous Systems and Pervasive Networks, London, UK, September 2016.
Performance from Aligning Smalltalk & Javascript Classes. Dave Mason. International Workshop on Smalltalk Technology, Brescia, Italy, July 2015
Data Programming for Non-Programmers. Dave Mason. 4th International Conference on Emerging Ubiquitous Systems and Pervasive Networks, Niagara Falls, Canada, May 2013.
Flexible Structures for End-User Programming. Dave Mason. 3rd International Workshop on Free Composition (FREECO'12), October 2012.
Smalltalk Metaprogramming supports Probabilistic Program Analysis. Dave Mason. International Workshop on Smalltalk Technologies 2009, September 2009.
Probabilistic Analysis for Component Reliability Composition. Dave Mason. 5th ICSE Workshop on Component-Based Software Engineering (CBSE'2002), May 2002.
Effectiveness of Online Assessment. Denise Woit and Dave Mason. Proc. of 2003 ACM Conference on Computer Science Education (SIGCSE'2003), 137-141, February 2003.
Probabilistic Analysis for Component Reliability Composition. Dave Mason. 5th ICSE Workshop on Component-Based Software Engineering (CBSE'2002), May 2002.
Theory of Software Component Reliability. Dick Hamlet, Dave Mason, and Denise Woit. Proc. 23rd International Conference on Software Engineering (ICSE'2001), May 2001.
Probability Density Functions in Program Analysis. Dave Mason. 4th ICSE Workshop on Component-Based Software Engineering (CBSE'2001), May 2001.
Component/System Reliability: Making Software more like Hardware. Dick Hamlet, Dave Mason, and Denise Woit. Proc. 12th Annual Software Technology Conference, May 2000.
Enhancing Student Learning Through On-line Quizzes. Denise Woit and Dave Mason. Proc. of 2000 ACM Conference on Computer Science Education (SIGCSE'2000), March 2000.
Input Domain Analysis for Software Reliability Measurement. Dave Mason and Denise Woit. Proc. 5th International Conference on Computer Science and Informatics, February 2000.
Web-based Evaluation for the Convenience of Students, Markers, and Faculty. Dave Mason, Denise Woit, Abdel Abdullah, Hanaa Barakat, Carla Pires, and Michelle D'Souza. Proc. of N.A. Web'99 Conference, October 1999.
Providing Markup and Feedback to Students with Online Marking. Dave Mason and Denise Woit. Proc. of 1999 ACM Conference on Computer Science Education (SIGCSE'99), March 1999.
Component Independence for Software System Reliability. Denise Woit and Dave Mason. Quality Week, Europe (QWE'98), November 1998.
Software Component Independence. Denise Woit and Dave Mason. Proc. 3rd IEEE High-Assurance Systems Engineering Symposium (HASE'98), November 1998.
Lessons from On-Line Programming Examinations. Denise Woit and Dave Mason. Proc. of 3rd Annual Conference on Integrating Technology into Computer Science Education (ITiCSE'98), August 1998.
Software System Reliability from Component Reliability. Dave Mason and Denise Woit. Proc. of 1998 Workshop on Software Reliability Engineering (SRE'98), July 1998.
Integrating Technology into Computer Science Examinations. Dave Mason and Denise Woit. Proc. of 1998 ACM Conference on Computer Science Education (SIGCSE'98), February 1998.
A Functional Intermediate Form for Diverse Source Languages. Dave Mason. Included on the CDROM for the 1996 CASCON Conference.
Graphics Control System for the GT40. Dave Mason, C. Carmen, A. Mufti. Proceedings of the Digital Equipment Computer Users Society. SanDiego, California, December 1974.
Probabilistic Program Properties and Compositionality. Dave Mason. 2nd Workshop on Predictable Assembly of Certifiable Components, Software Engineering Institure, Pittsburgh, Pennsylvania, January 2003.
Software Reliability - Probability for Computer Scientists. Dave Mason. Seminar at Ryerson University, October 2002.
Probabilistic Analysis: Composable Component Reliability. Dave Mason. Seminar, Ryerson University. Toronto, Ontario, November 2001 / University of Waterloo. Waterloo, Ontario, October 2001.
Components and Reliability Composition: Great Promise - Usable Reality?. Dave Mason, Denise Woit, and Dick Hamlet. ACM SIGPLAN OOPSLA-99 Workshop-12 on Modeling Reliability and Maintainability of Large-Scale Object-Oriented Software Systems, November 1999.
Foundational Theory of Software Component Reliability. Dick Hamlet, Dave Mason, and Denise Woit. Proc. 10th International Symposium on Software Reliability Engineering (ISSRE'99) - Fast Abstracts, November 1999.
Software System Reliability from Component Reliability. Denise Woit and Dave Mason. Talk at the Centre for Software Reliability, City University. London, U.K. June 1999.
Problems with Software Reliability Composition. Dave Mason and Denise Woit. Proc. of 1998 International Symposium on Software Reliability Engineering (ISSRE'98) - Fast Abstracts, November 1998.
Type Systems are Your Friends. Dave Mason. Colloquium, Ryerson Polytechnic University. Toronto, Ontario, January 1996.
WatIF -- Compiling Alternative Languages.
Dave Mason.
Poster at the 1995 ACM SIGPLAN Programming Language Design and Implementation Conference. La Jolla, California, June 1995.
Also presented as a Poster at the 1995 ITRC/TRIO Researcher Retreat. Kingston, Ontario, May 1995.
Type Systems are Your Friends. Dave Mason. Tutorial at the 1995 ITRC/TRIO Researcher Retreat. Kingston, Ontario, May 1995.
The Challenges of Compiling SML Systems Code. Dave Mason. Poster at the 1994 ACM SIGPLAN Workshop on ML and its Applications. Orlando, Florida, June 1994.
Compiling Functional Programs. Dave Mason. 1994 ITRC/TRIO Researcher Retreat. Kingston, Ontario, May 1994.
High Quality Code from a Mostly Functional Language. Dave Mason. Poster at the 1993 ITRC/TRIO Researcher Retreat. Peterborough, Ontario, May 1993.
Why OOPs may not be the solution to all the world's problems. Dave Mason. Tutorial at the 1992 ITRC/TRIO Researcher Retreat. Peterborough, Ontario, May 1992.
Development Aids: Program Generator, Batch, Spooler. Dave Mason. Proceedings of the Digital Equipment Computer Users Society, pp 941-951. Montreal, Quebec, February 1981.
I have designed and taught courses in: Advanced Computer Security and Forensics, Analysis of Algorithms, Compilers, Advanced Compilers, Comparative Programming Languages, Operating Systems, Computer Graphics, Computer Architecture, Data Communications, Distributed Systems, Advanced Data Structures & Software Engineering, Introductory Computer Science, and Intermediate Computer Science, as well as a liberal-studies course in Computation.
There is an Instructor/Course Evaluation at Ryerson. While there is ongoing debate about the quality of the responses, it is the only "objective" evaluation of my teaching available. Each question is on a scale of 1-5, with 1 being better. In questions such as "Understands material", "Treats students with respect", "Was effective teacher" my scores are usually in the 1.0-2.2 range. To be honest, the students usually feel I ask a lot of them, with scores of 4-5 on "Amount of work", and "Level of material".
I have supervised almost 100 undergraduate thesis students in most of these areas. The most ambitious of these was a re-implementation of the Unix kernel, implemented with literate programming techniques in C. I have stayed in contact with many of my past students.
I have also designed or implemented two significant re-designs of the Applied Computer Science program in the School of Computer Science at Ryerson, and have several publications on Computer Science Education.
In the mid-1990s I was nominated by my students for a Ryerson-wide Professor of the Year.
I am supervising two M.Sc. students, and I have a Ph.D. student who will start as soon as the Ph.D. in Computer Science has been approved (hopefully fall 2010).
Similar responsibilities to the above.
I taught several on-site seminars, to companies in manufacturing and service industries, on various topics in operating systems design.
Responsible for operation of the Department of Computer Science, including: 1000 undergraduate students, 100 graduate students, 27 faculty, 9 staff, interaction with other departments.
Although I've also listed this under service, I include this here because of the magnitude of the commitment; except for the first term when I taught 1 course, this was essentially a full-time commitment for 4.5 years. My leadership was about making the association more professional and emphasizing transparency both within the union, and in interactions with the university administration. I was actively involved in strategy development for 2 rounds of Negotiations, and attended most grievance meetings with the administration and all arbitration hearings, while interacting effectively with staff and the Grievance and Negotiating committees.
Responsible for coordination and facilitation of research within the department. Arrangements for co-supervision by department faculty of graduate students at other universities, working toward the goal of a Ryerson M.Sc.
Responsible for operation of the School of Computer Science, including: students, promotion policy, awards, appeals, chairing the School of Computer Science Council, secondary responsibility for purchases within the School, interaction with other departments, transfer credit evaluation.
The first year I was Co-director, and shared the responsibility for the items listed above.
2018-present: Vice-President External, Ryerson Faculty Association
2011-2019,2003-2009,1998-2000,1995-1997: Ryerson University Senate (previously Academic Council)
2014-2019,1995-2000: Faculty of Arts Liberal Studies Council
2014-present,1996-2000,1986-1989: School of Computer Science Curriculum Committee, including 2 years as Chair
2011-2019: Ryerson University Senate Priorities Committee
2012-2013: Member of the Search Committee for the Provost and Vice-President Academic for Ryerson University
2011-2012: Member of the Search Committee for the Dean, Faculty of Science for Ryerson University
2010: Ontario Ministry of Research and Innovation - Early Researcher Award Panel
2005-2009: President, Ryerson Faculty Association
2006-2007: Member of the Search Committee for the Provost and Vice-President Academic for Ryerson University
2003-2005: Treasurer, Ryerson Faculty Association
2003: Member of the Search Committee for the Associate Dean, Faculty of Engineering and Applied Science of Ryerson University.
1998-2002: Co-editor of the "Scheme Request For Implementation" process.
2001: Participated in a "Visioning" process for an IT School for Mohawk College.
2000-2001,1996-1998,1993-1995,1984-1987: Departmental Appointments (Hiring/Tenure) Committee, Department of Mathematics, Physics, and Computer Science, Ryerson University
1999-2000: Member of the Search Committee for the Vice President Academic at Ryerson University.
(In the following list of committees, where my participation ends in 2000, it does so because I was going on Sabbatical)
1998-2000: Chair of the Laptop Implementation Committee
1997-2000: Academic Standards Committee of Ryerson University Senate
1997-2000: Standing Committee on Scholarly, Research, Creative Activity of Ryerson University Senate
1997-2000: Chair of the Planning and Priorities Advisory Committee of Ryerson University Senate
1996-1997,1988-1990: Member.
1996-2000: Chair of the Advisory Committee on Academic Computing
1992-1996: Member.
1996-2000,1993-1995,1990: Coach and Advisor for Ryerson University teams at the ACM Regional Programming Contest
1996-2000: School of Computer Science Facilities Committee
1997-1998: Chair of the Information Technology Strategy Development Committee
1995-1996: Member of the Academic Planning Group Information Technology Committee
1995-1996: Member of the Search Committee for the Director of Computer and Communications Services
1994,1993: Member of the Program Committee for two ITRC/TRIO Researcher Retreats
1992: Referee for the 1993 International Symposium on Computer Architecture
1986-1988: Ryerson Faculty Association Departmental Representative
1986: External Advisory Council member for Cambrian College new program design
2010-2013: President of York Condominium Corporation #106
1985-present: Member of the Association for Computing Machinery, including SIGPLAN, SIGOPS, SIGCSE
1998-2007: Member of the IEEE Computer Society
1982-1993: Volunteer at the Metro Toronto YMCA
1987-1989: Director of /usr/group/cdn (now Uniforum Canada)
1985-1987: Member
1981-1983: Member of Canadian Information Procession Society
For my Sabbatical in 2000, I worked with an Internet startup business, where we were fortunate to hire 9 of Ryerson's best recent graduates. We were building essentially a "Web 2.0 application" (a term that didn't come into technical usage until 2003) that provided some interesting challenges in video-compression and web-delivery. I was the principle inventor on 2 preliminary patent applications that were filed. Following the sabbatical year, I took a 1-year leave without pay to continue with Swurv full-time. Following that, I continued to be Chief Scientist on a part-time basis until the company ceased operation. Another interesting part of this was building an "Extreme Programming" team for just-in-time delivery of business value.
The job title may understate the administrative/management aspects of the job. I shared the administration of the development team with the Chief Technology Officer. As one of the principals of the company, I was involved in management and strategic decisions.
For the first 2 years we were dedicated to a project to build a 4th Generation programming language. It was technically successful, but we didn't have the wherewithal to market it effectively. We had several sales, and one customer built their business on the product and continued to depend on the product for over 20 years.
Subsequently, I was a full-time consultant, doing jobs from writing data communications protocols to working on compilers and hardware designs. Consulted for half a dozen different companies.
From the mid 1980s to the early 1990s it wound down to an occasional contract, and enventually got completely pushed aside by my other duties and interests.
Worked on various business contracts; built a file and screen management system (out of which grew the 4GL product mentioned above); was the closest the company could afford to a research scientist.
I wrote graphics and communications software to control the DEC GT40 "graphics workstation" in communication with the main computer. Involved a small interrupt-driven operating system kernel and device drivers for the light pen, display, clocks, and communications interfaces, as well as higher level graphics libraries to generate the graphics primitives.