
Dave Mason- Ph.D. Computer Science, Waterloo
- Professor (Full) at Toronto Metropolitan University
Dave Mason
- Ph.D. Computer Science, Waterloo
- Professor (Full) at Toronto Metropolitan University
About
34
Publications
5,227
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
470
Citations
Introduction
Dave Mason currently chairs the Department of Computer Science, Ryerson University. Dave does research in Programming Languages and Software Engineering. Their current project is 'High-leverage software development with Smalltalk'.
Current institution
Toronto Metropolitan University
Current position
- Professor (Full)
Additional affiliations
September 1981 - present
Publications
Publications (34)
With the advent of HTML 5, we can now develop rich web apps in Javascript that rival classical standalone apps. Nevertheless, developing in Javascript is still challenging and error prone because of the language’s ambiguous semantics and quirks. In this paper, we advocate that the popular solution of using another language with better semantics and...
Modern society is increasingly mediated by computers. The quantity and diversity of data generated daily is growing at an astounding rate. While the number of people with programming ability is also growing, the percentage of the population with such capability remains in the single digits. This means that we are witnessing a growing gap between ne...
With the advent of HTML 5, we can now develop rich web apps that rival classical standalone apps. This richness together with the portability of web technologies, turned HTML 5 into a viable (and in the case of mobile - essential) solution to develop cross-platform apps. This possibility is heavily dependent on Javascript having acceptable performa...
Amber is a wonderful Smalltalk programming environment that runs on top of Javascript, including a browser-based IDE and compiler, as well as command-line support. The only challenge is that execution performance can be 1--2 orders of magnitude slower than native Javascript code. Amber-Direct is a series of modest changes to the compiler and some i...
"Big Data" is becoming a standard catch phrase that often means more like "Ubiquitous Data" - it's not necessarily all that big, but it's everywhere, and its collection rate is accelerating. Citizens may only have a need to spend a few hours per week attempting to make sense of that data. The concomitant worry is that citizens will be left behind a...
We are creating a visual programming environment for userprogrammers (who are not trained programmers) that they will use a few hours per week.. Because of this sporadic usage pattern, traditional code structuring approaches are both overkill and difficult to learn. Therefore, the environment is designed to support very fluid relationships among co...
Program paths (equivalently program input subdomains) are interesting for a variety of purposes in software engineer-ing, including testing, reliability, and estimating of resource requirements. The full potential of paths is often not real-ized because it is difficult to generate the most important paths from the – potentially infinite – set of po...
We present an instrumental, multiple-case study exploring issues relating to student efficacy and practical skills acquisition. Specifically, we explore the relationship between efficacy, as measured by a final online assessment, and the number and type of pre-final assessments. Online final assessment remains a constant throughout the cases of our...
We present an instrumental, multiple-case study exploring issues relating to student efficacy and practical skills acquisition. Specifically, we explore the relationship between efficacy, as measured by a final online assessment, and the number and type of pre-final assessments. Online final assessment remains a constant throughout the cases of our...
Software components are today the most promising approach to dealing with the complexity and uneven quality of software systems. The design-using-components paradigm has been extremely successful in almost every engineering field, with its benefits of rapid, routine, reliable system construction. The central dilemma of software design using compone...
For five academic years we have engaged in an on-going study of the effectiveness of online assessment of student programming abilities for introductory programming courses in Computer Science. Our results show that online evaluation can be implemented securely, efficiently, and can result in increased student motivation and programming efficacy; h...
The component reliability model described in [4] requires that component execution frequency, reliability, and transformations be analysed statistically based on parameters to the component. This paper describes work in progress toward that goal.
We present a foundational theory of software system reliability based on components. The theory describes how component developers can design and test their components to produce measurements that are later used by system designers to calculate composite system reliability --- without implementation and test of the system being designed. The theory...
We present a foundational theory of software system reliability based on components. The theory describes how component developers can design and test their components to produce measurements that are later used by system designers to calculate composite system reliability — without implementation and test of the system being designed. The theory d...
Most software-component research has been directed at functional specification of software components. The other, equally important, side of the coin is component quality. We present a foundational theory of reliability based on components. The theory describes in principle how component developers can make measurements that are later used by syste...
We have experimented with the use of weekly on-line quizzes to enhance student learning in our first-year computer science courses. In our experiments we compared the effectiveness of using quizzes to the alternative of using weekly marked laboratory assignments. The results of our experiments show that student learning and retention increase with...
We have experimented with the use of weekly on-line quizzes to enhance student learning in our first-year computer science courses. In our experiments we compared the effectiveness of using quizzes to the alternative of using weekly marked laboratory assignments. The results of our experiments show that student learning and retention increase with...
Continuation-Passing-Style has been used as a programming style as well as a compilation technique in functional programming languages for over 20 years. Recently it has been discovered that CPS resolves a longstanding structural problem in the composition of software reliability. While this provides yet another argument in favour of functional pro...
Online marking of assignments can lead to improved marking consistency and integrate well with on-line mark reporting. It can also be easier for the marker. Unfortunately, most such systems do not include good feedback mechanisms for the students. This paper describes an environment that provides online marking with convenient, structured and detai...
Independence is a fundamental requirement for calculating system
reliability from component reliabilities, whether in hardware or
software systems. Markov analysis is often used in such calculation;
however, procedures as conventionally used do not qualify as nodes in a
Markov system. We outline the requirements for several classes of
component ind...
We have been using a combination of conventional and on-line programming examinations for the past 3 years in our first year programming courses. We plan to continue using on-line components because of the positive feedback from both students and faculty. We describe the operational and pedagogical lessons we have learned, illustrating problems enc...
On-line programming tests and examinations were administered to approximately 120 first year computer science students in order to evaluate their practical skills. We describe our motivation for on-line testing, outline the technical details of our closed testing environment, and present our observations about student performance. We also compare t...
On-line programming tests and examinations were administered to approximately 120 first year computer science students in order to evaluate their practical skills. We describe our motivation for on-line testing, outline the technical details of our closed testing environment, and present our observations about student performance. We also compare t...
ons will be clearly stated on the lab. Individual labs are worth very few marks, so if they are not handed in on time, no opportunity will be available to hand them in later, and they will not cause an INC grade. The departmental assignment policy applies. You are expected to have read and understood it. If you have any questions about this please...
Copying garbage collectors are now standard for the memory-management subsystems of functional and object-oriented programming languages. Compacting garbage collection has correspondingly fallen out of favor. We revitalize the case for compaction by demonstrating that a simple compacting collector, extended with the generational garbage collection...
This paper describes the use of WatIF, a simple compiler intermediate form based on the λ-calculus, for writing compiler front-ends for a wide range of programming languages. Somewhat similar intermediate forms have been previously used for single-language compilers, but applicability to such a range of languages has not been previously reported. E...
We propose an underlying theory for the technical quality information to appear on a software-component data sheet. The other side of the components' coin -- the technical description of what a component is supposed to do -- is of equal or greater importance, but we do not address it. (However, most of the current research in reusability goes into...
To find an accurate estimate of system reliability it is necessary to find the partition of the system input domain and relate the reliability of the associated code with the frequency information from the Operational Profile. We describe the approach to testing software for reliability, the analysis, and our prototype tool. 1 Introduction The ulti...
We have been working on a detailed treatment of compo- nent reliability, particularly the necessary conditions to al- low using component reliabilities to calculate the system reliability resulting from their composition. This includes aspects of components that must be included in their spec- ication, and a calculus for composing those reliabiliti...
For a typical software system, it is generally consid- ered infeasible to calculate system reliability from the reliabilities of its constituent components because soft- ware systems, unlike hardware systems, tend to violate the underlying independence assumptions inherent in the usual reliability calculations. We present a set of component design...
The SML module system is widely recognized for its formal semantics and expressive power. This paper proposes an extension to the module system to support recursive modules. This removes a signiicant impediment to software reuse from the module system. An example is provided that is impractical without recursive modules.