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 Toronto Metropolitan.
My primary research focus currently is Zag Smalltalk - a high-performance implementation of the Smalltalk language
I have been one of the principal investigators for over a decade on PharoJS - allowing people to developvapplications in Smalltalk, and deploy them on the WWW in Javascript.
Previously my research focus was 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 several years previous to that I was been working on foundational work that would allow software to be "engineered". This was 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 have spent the rest of my career exploring these avenues and supervising other researchers. (But I didn'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.
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 TMU. 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 two Ph.D. students.
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, Toronto Metropolitan Faculty Association
2026-present,2011-2019,2003-2009,1998-2000,1995-1997: Ryerson/Toronto Metropolitan 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.