publications: - title: "ConcJUnit: unit testing for concurrent programs" author: - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Robert Cartwright" link: "https://researchr.org/alias/robert-cartwright" year: "2009" doi: "http://doi.acm.org/10.1145/1596655.1596676" abstract: "In test-driven development, tests are written for each program unit before the code is written, ensuring that the code has a comprehensive unit testing harness. Unfortunately, unit testing is much less effective for concurrent programs than for conventional sequential programs, partly because extant unit testing frameworks provide little help in addressing the challenges of testing concurrent code. In this paper, we present ConcJUnit, an extension of the popular unit testing framework JUnit that simplifies the task of writing tests for concurrent programs by handling uncaught exceptions and failed assertions in all threads, and by detecting child threads that were not forced to terminate before the main thread ends." links: doi: "http://doi.acm.org/10.1145/1596655.1596676" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/pppj/RickenC09" tags: - "meta programming" - "exceptions" - "meta-model" - "testing" - "model-driven development" - "writing" - "programming" - "Meta-Environment" researchr: "https://researchr.org/publication/RickenC09" cites: 0 citedby: 0 pages: "129-132" booktitle: "PPPJ" kind: "inproceedings" key: "RickenC09" - title: "Abstract factories and the shape calculator" author: - name: "Eric Cheng" link: "https://researchr.org/alias/eric-cheng" - name: "Dung Zung Nguyen" link: "https://researchr.org/alias/dung-zung-nguyen" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Stephen B. Wong" link: "https://researchr.org/alias/stephen-b.-wong" year: "2004" doi: "http://doi.acm.org/10.1145/1028664.1028705" abstract: "The Shape Calculator is an assignment targeted at CS1 students in an objects-first curriculum. It can serve as a powerful yet entertaining example of the advantages of object-orientation." links: doi: "http://doi.acm.org/10.1145/1028664.1028705" tags: - "meta-model" - "Meta-Environment" - "meta-objects" researchr: "https://researchr.org/publication/ChengNRW04" cites: 0 citedby: 0 pages: "101-102" booktitle: "OOPSLA" kind: "inproceedings" key: "ChengNRW04" - title: "Design patterns for marine biology simulation" author: - name: "Dung Zung Nguyen" link: "https://researchr.org/alias/dung-zung-nguyen" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Stephen B. Wong" link: "https://researchr.org/alias/stephen-b.-wong" year: "2004" doi: "http://doi.acm.org/10.1145/971300.971459" abstract: "We specify and implement a GUI application that simulates marine biological systems by making extensive use of object-oriented design patterns. The key design patterns are model-view-control, observer/observable, visitor, command, factory method and decorator. These design patterns help delineate the roles and responsibilities of the objects in the system, establish loose coupling between objects and arrange for the objects to communicate and cooperate with one another at the highest level of abstraction. The result is an application that exhibits minimal control flow, yet is powerful, robust, flexible and easy to maintain. Our work entails a non-trivial redesign of the current AP Computer Science Marine Biology Simulation case study and may serve as a case study for an introductory “object-first” curriculum." links: doi: "http://doi.acm.org/10.1145/971300.971459" tags: - "control systems" - "design science" - "case study" - "meta-model" - "visitor" - "data-flow" - "object-role modeling" - "e-science" - "abstraction" - "Meta-Environment" - "design" - "meta-objects" researchr: "https://researchr.org/publication/NguyenRW04" cites: 0 citedby: 0 pages: "467-471" booktitle: "sigcse" kind: "inproceedings" key: "NguyenRW04" - title: "Object-Oriented Design Festival" author: - name: "Dung \"Zung\" Nguyen" link: "https://researchr.org/alias/dung-%22zung%22-nguyen" - name: "Stephen Wong" link: "https://researchr.org/alias/stephen-wong" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Eric Cheng" link: "https://researchr.org/alias/eric-cheng" year: "2006" month: "March" abstract: "Object-oriented (OO) programming begins with analysis and design that produce a model describing the objects in the problem domain, their relationships, creation and interactions. The workshop covers fundamentals of OO analysis and design such as abstraction, separation of variants from invariants and decoupling of system components, via appropriate applications of composition, inheritance, polymorphism, and design patterns. The workshop will progress from a small design example illustrating the principles to a larger design problem to be solved by small teams of participants. Their solutions will be discussed in terms of design goals and compared against a solution provided by the presenters." tags: - "interaction design" - "object-oriented programming" - "program analysis" - "meta programming" - "meta-model" - "composition" - "domain analysis" - "analysis" - "principles" - "object-role modeling" - "programming" - "subject-oriented programming" - "abstraction" - "Meta-Environment" - "design" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/Zung-NguyenWongRickenCheng2006" cites: 0 citedby: 0 kind: "misc" key: "Zung-NguyenWongRickenCheng2006" - title: "Marine biology simulation" author: - name: "Eric Cheng" link: "https://researchr.org/alias/eric-cheng" - name: "Dung Zung Nguyen" link: "https://researchr.org/alias/dung-zung-nguyen" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Stephen B. Wong" link: "https://researchr.org/alias/stephen-b.-wong" year: "2004" doi: "http://doi.acm.org/10.1145/1028664.1028708" abstract: "The Marine Biology Simulation is designed as a final project in an objects-first CS2 course. It provides an entertaining setting that serves as compelling example of the powers of object-oriented design and programming." links: doi: "http://doi.acm.org/10.1145/1028664.1028708" tags: - "object-oriented programming" - "meta programming" - "programming" - "subject-oriented programming" - "Meta-Environment" - "design" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/ChengNRW04a" cites: 0 citedby: 0 pages: "109-110" booktitle: "OOPSLA" kind: "inproceedings" key: "ChengNRW04a" - title: "Mint: Java multi-stage programming using weak separability" author: - name: "Edwin Westbrook" link: "https://researchr.org/alias/edwin-westbrook" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Jun Inoue" link: "https://researchr.org/alias/jun-inoue" - name: "Yilong Yao" link: "https://researchr.org/alias/yilong-yao" - name: "Tamer Abdelatif" link: "https://researchr.org/alias/tamer-abdelatif" - name: "Walid Taha" link: "http://www.cs.rice.edu/~taha/" year: "2010" doi: "http://doi.acm.org/10.1145/1806596.1806642" abstract: "Multi-stage programming (MSP) provides a disciplined approach to run-time code generation. In the purely functional setting, it has been shown how MSP can be used to reduce the overhead of abstractions, allowing clean, maintainable code without paying performance penalties. Unfortunately, MSP is difficult to combine with imperative features, which are prevalent in mainstream languages. The central difficulty is scope extrusion, wherein free variables can inadvertently be moved outside the scopes of their binders. This paper proposes a new approach to combining MSP with imperative features that occupies a “sweet spot” in the design space in terms of how well useful MSP applications can be expressed and how easy it is for programmers to understand. The key insight is that escapes (or “anti quotes”) must be weakly separable from the rest of the code, i.e. the computational effects occurring inside an escape that are visible outside the escape are guaranteed to not contain code. To demonstrate the feasibility of this approach, we formalize a type system based on Lightweight Java which we prove sound, and we also provide an implementation, called Mint, to validate both the expressivity of the type system and the effect of staging on the performance of Java programs." links: doi: "http://doi.acm.org/10.1145/1806596.1806642" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/pldi/WestbrookRIYAT10" tags: - "programming languages" - "rule-based" - "Java" - "type soundness" - "functional programming" - "language design" - "type system" - "code generation" - "programming" - "abstraction" - "staged computation" - "design" - "systematic-approach" researchr: "https://researchr.org/publication/WestbrookRIYAT10" cites: 0 citedby: 0 pages: "400-411" booktitle: "PLDI" kind: "inproceedings" key: "WestbrookRIYAT10" - title: "A Framework for Testing Concurrent Programs" author: - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" year: "2007" month: "October" abstract: "Incremental, test-driven development is sweeping the software industry, elevating testing from an ancillary activity to an integral part of the programming process. Unfortunately, in our recent experience developing production programs in Java, unit testing has only proven effective in assuring the reliability of code with a single thread of control; it is much less effective in concurrent programs. To facilitate the development of concurrent programs, we have developed: 1. An extension of the JUnit framework that actively supports the developer by treating tests that could silently ignore failures in auxiliary threads as test errors; 2. A lightweight Java annotation language that can be used to specify and check the threading invariants of both existing and new code; 3. A testing framework that can record and analyze the schedules of unit tests, detect deadlocks, and run the tests using modified schedules, increasing the likelihood that concurrency problems are discovered." links: successor: "https://researchr.org/publication/1643721" tags: - "programming languages" - "Java" - "model checking" - "testing" - "model-driven development" - "programming" - "incremental" - "reliability" researchr: "https://researchr.org/publication/Ricken2007" cites: 0 citedby: 0 school: "Rice University" kind: "mastersthesis" key: "Ricken2007" - title: "Agile and Efficient Domain-Specific Languages using Multi-Stage Programming in Java Mint" author: - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Edwin Westbrook" link: "https://sites.google.com/site/edwinwestbrookiv/" - name: "Walid Taha" link: "http://www.cs.rice.edu/~taha/" year: "2010" abstract: "Domain-specific languages (DSLs) are a powerful productivity tool because they allow domain experts, who are not necessarily programming experts, to quickly develop programs. DSL implementations have unique constraints for programming languages because they must be efficient, in order to ensure high productivity, but they must also be agile, in order to meet the rapidly changing demands of their domains. In this tutorial we show how multi-stage programming (MSP) can be used to build staged interpreters, which combine the agility of interpreters with the efficiency of compilers. The tutorial is conducted in Java Mint, an multi-stage Java based on recent work incorporating MSP into imperative object-oriented languages. In the first half of the tutorial, we introduce MSP by demonstrating how to write a staged interpreter for a number of basic language constructs, such as recursive functions, conditionals, and let expressions. In the second half, we extend our staged interpreter to take advantage of several well-known compiler optimizations, including type inference, constant folding, and static parallel loop scheduling. We highlight the opportunities afforded by using MSP with object-oriented design to quickly create efficient DSL implementations." tags: - "programming languages" - "optimization" - "object-oriented programming" - "type inference" - "rule-based" - "Java" - "meta programming" - "interpreter" - "language design" - "parallel programming" - "constraints" - "compiler" - "DSL" - "programming" - "subject-oriented programming" - "program optimization" - "Meta-Environment" - "design" - "feature-oriented programming" - "meta-objects" - "domain-specific language" researchr: "https://researchr.org/publication/RickenWestbrookTaha2010" cites: 0 citedby: 0 kind: "inproceedings" key: "RickenWestbrookTaha2010" - title: "Tool Demonstration: DrHJ - A Lightweight Pedagogic IDE for Habanero Java" author: - name: "Jarred Payne" link: "http://compsci.rice.edu" - name: "Vincent Cavé" link: "http://compsci.rice.edu/people.cfm?doc_id=3464" - name: "Raghavan Raman" link: "http://compsci.rice.edu" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Robert Cartwright" link: "http://www.cs.rice.edu/~cork/" - name: "Vivek Sarkar" link: "http://www.cs.rice.edu/~vs3/home/Vivek_Sarkar.html" year: "2011" abstract: "The Java language and runtime environment has had a profound worldwide impact on computer software since its introduction nearly two decades ago. It has enabled the creation of a rich ecosystem of libraries, frameworks, and tools that promises to deliver significant value for many years to come. Consequently, a wide range of Interactive Development Environments (IDEs) have emerged to increase the productivity of Java programmers. They vary in functionality based on the expertise level assumed for their target user base. The Eclipse Java Development Tools (JDT) project offers a rich set of power tools for experienced programmers, but can be harder for novice programmers to set up and use. In contrast, IDEs such as DrJava and BlueJ have been developed primarily for use in introductory programming courses. In this tool demonstration paper, we summarize the DrHJ tool which will be demonstrated at the conference. In anticipation of the need for introducing parallelism earlier in the Computer Science curriculum, DrHJ extends DrJava with support for the pedagogic Habanero Java (HJ) parallel programming language that was derived from the earlier Java-based definition of the X10 language. DrHJ builds on our past experiences at Rice with developing the DrJava IDE and the HJ language. DrJava is used by many universities world-wide, and has been downloaded over 1.1 million times since its inception in 2002." tags: - "programming languages" - "rule-based" - "Java" - "Eclipse" - "meta programming" - "functional programming" - "parallel programming" - "introductory programming" - "e-science" - "programming" - "Meta-Environment" researchr: "https://researchr.org/publication/PayneCaveRamanRickenCartwrightSarkarPayneCaveRamanRickenCartwrightSarkar2011" cites: 0 citedby: 0 kind: "inproceedings" key: "PayneCaveRamanRickenCartwrightSarkarPayneCaveRamanRickenCartwrightSarkar2011" - title: "DrHJ: the cure to your multicore programming woes" author: - name: "Vincent Cavé" link: "http://compsci.rice.edu/people.cfm?doc_id=3464" - name: "Jarred Payne" link: "http://compsci.rice.edu" - name: "Raghavan Raman" link: "http://compsci.rice.edu" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Robert Cartwright" link: "http://www.cs.rice.edu/~cork/" - name: "Vivek Sarkar" link: "http://www.cs.rice.edu/~vs3/home/Vivek_Sarkar.html" year: "2011" month: "October" doi: "http://doi.acm.org/10.1145/2048147.2048150" abstract: "DrHJ extends DrJava with support for the pedagogic Habanero-Java language derived from X10, and used to teach parallel programming at the sophomore level. The demonstration will show how a rich and powerful set of parallel programming capabilities can be easily introduced to anyone familiar with the basics of sequential programming in Java." links: doi: "http://doi.acm.org/10.1145/2048147.2048150" "url": "http://doi.acm.org/10.1145/2048147.2048150" tags: - "programming languages" - "Java" - "parallel programming" - "programming" researchr: "https://researchr.org/publication/Cave%3A2011%3ADCY%3A2048147.2048150" cites: 10 citedby: 0 pages: "5-6" booktitle: "Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion" kind: "inproceedings" key: "Cave:2011:DCY:2048147.2048150" - title: "DrHJ: a lightweight pedagogic IDE for Habanero Java" author: - name: "Jarred Payne" link: "https://researchr.org/alias/jarred-payne" - name: "Vincent Cavé" link: "https://researchr.org/alias/vincent-cav%C3%A9" - name: "Raghavan Raman" link: "https://researchr.org/alias/raghavan-raman" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Robert Cartwright" link: "https://researchr.org/alias/robert-cartwright" - name: "Vivek Sarkar" link: "https://researchr.org/alias/vivek-sarkar" year: "2011" doi: "http://doi.acm.org/10.1145/2093157.2093180" links: doi: "http://doi.acm.org/10.1145/2093157.2093180" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/pppj/PayneCRRCS11" researchr: "https://researchr.org/publication/PayneCRRCS11" cites: 0 citedby: 0 pages: "147-150" booktitle: "PPPJ" kind: "inproceedings" key: "PayneCRRCS11" - title: "Design patterns for parsing" author: - name: "Dung Zung Nguyen" link: "https://researchr.org/alias/dung-zung-nguyen" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Stephen B. Wong" link: "https://researchr.org/alias/stephen-b.-wong" year: "2005" doi: "http://doi.acm.org/10.1145/1047344.1047497" abstract: "We provide a systematic transformation of an LL(1) grammar to an object model that consists of - an object structure representing the non-terminal symbols and their corresponding grammar production rules, - a union of classes representing the terminal symbols (tokens). We present a variant form of the visitor pattern and apply it to the above union of token classes to model a predictive recursive descent parser on the given grammar. Parsing a non-terminal is represented by a visitor to the tokens. For non-terminals that have more than one production rule, the corresponding visitors are chained together according to the chain of responsibility pattern in order to be processed correctly by a valid token. The abstract factory pattern, where each concrete factory corresponds to a non-terminal symbol, is used to manufacture appropriate parsing visitors. Our object-oriented formulation for predictive recursive descent parsing eliminates the traditional construction of the predictive parsing table and yields a parser that is declarative and has minimal conditionals. It not only serves to teach standard techniques in parsing but also as a non-trivial exercise of object modeling for objects-first introductory courses." links: doi: "http://doi.acm.org/10.1145/1047344.1047497" tags: - "model-to-model transformation" - "rule-based" - "meta-model" - "modeling" - "visitor" - "source-to-source" - "rules" - "object-role modeling" - "model transformation" - "Meta-Environment" - "higher-order transformations" - "parsing" - "design" - "process modeling" - "systematic-approach" - "meta-objects" - "transformation" - "grammar" researchr: "https://researchr.org/publication/NguyenRW05" cites: 0 citedby: 0 pages: "477-481" booktitle: "sigcse" kind: "inproceedings" key: "NguyenRW05" - title: "Multi-stage Programming for Mainstream Languages (TR09-02)" author: - name: "Edwin Westbrook" link: "https://sites.google.com/site/edwinwestbrookiv/" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Jun Inoue" link: "https://researchr.org/alias/jun-inoue" - name: "Yilong Yao" link: "https://researchr.org/alias/yilong-yao" - name: "Tamer Abdelatif" link: "https://researchr.org/alias/tamer-abdelatif" - name: "Walid Taha" link: "http://www.cs.rice.edu/~taha/" year: "2009" month: "July" abstract: "Multi-stage programming (MSP) provides a disciplined approach to run-time code generation. In the purely functional setting, it has been shown how MSP can be used to reduce the overhead of abstractions, allowing clean, maintainable code without paying performance penalties. Unfortunately, MSP is difficult to combine with imperative features, which are prevalent in mainstream languages. The central difficulty is scope extrusion, wherein free variables can inadvertently be moved outside the scopes of their binders. This paper proposes a new approach to combining MSP with imperative features that occupies a “sweet spot” in the design space in terms of how well useful MSP applications can be expressed and how easy it is for programmers to understand. The key insight is that escapes (or “anti quotes”) must be weakly separable from the rest of the code, i.e. the computational effects occurring inside an escape that are visible outside the escape are guaranteed to not contain code. To demonstrate the feasibility of this approach, we formalize a type system based on Lightweight Java which we prove sound, and we also provide an implementation, called Mint, to validate both the expressivity of the type system and the effect of staging on the performance of Java programs." tags: - "programming languages" - "rule-based" - "Java" - "type soundness" - "functional programming" - "language design" - "type system" - "code generation" - "programming" - "abstraction" - "staged computation" - "design" - "systematic-approach" researchr: "https://researchr.org/publication/WestbrookRickenInoueYaoAbdelatifTaha2009" cites: 0 citedby: 0 institution: "Rice University" number: "TR09-02" kind: "techreport" key: "WestbrookRickenInoueYaoAbdelatifTaha2009" - title: "A Framework for Testing Concurrent Programs" author: - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" year: "2011" month: "April" abstract: "This study proposes a new framework that can effectively apply unit testing to concurrent programs, which are difficult to develop and debug. Test-driven development, a practice enabling developers to detect bugs early by incorporating unit testing into the development process, has become wide-spread, but it has only been effective for programs with a single thread of control. The order of operations in different threads is essentially non-deterministic, making it more complicated to reason about program properties in concurrent programs than in single-threaded programs. Because hardware, operating systems, and compiler optimizations influence the order in which operations in different threads are executed, debugging is problematic since a problem often cannot be reproduced on other machines. Multi-core processors, which have replaced older single-core designs, have exacerbated these problems because they demand the use of concurrency if programs are to benefit from new processors. The existing tools for unit testing programs are either flawed or too costly. JUnit, for instance, assumes that programs are single-threaded and therefore does not work for concurrent programs; ConTest and rstest predate the revised Java memory model and make incorrect assumptions about the operations that affect synchronization. Approaches such as model checking or comprehensive schedule-based execution are too costly to be used frequently. All of these problems prevent software developers from adopting the current tools on a large scale. The proposed framework (i) improves JUnit to recognize errors in all threads, a necessary development without which all other improvements are futile, (ii) places some restrictions on the programs to facilitate automatic testing, (iii) provides tools that reduce programmer mistakes, and (iv) re-runs the unit tests with randomized schedules to simulate the execution under different conditions and on different machines, increasing the probability that errors are detected. The improvements and restrictions, shown not to seriously impede programmers, reliably detect problems that the original JUnit missed. The execution with randomized schedules reveals problems that rarely occur under normal conditions. With an effective testing tool for concurrent programs, developers can test programs more reliably and decrease the number of errors in spite of the proliferation of concurrency demanded by modern processors." tags: - "control systems" - "optimization" - "rule-based" - "Java" - "synchronization" - "operating system" - "meta programming" - "model checking" - "meta-model" - "testing" - "model-driven development" - "debugging" - "random testing" - "compiler" - "programming" - "program optimization" - "Meta-Environment" - "process modeling" - "systematic-approach" researchr: "https://researchr.org/publication/Ricken2011" cites: 0 citedby: 0 school: "Rice University" kind: "phdthesis" key: "Ricken2011" - title: "DrHJ: the cure to your multicore programming woes" author: - name: "Vincent Cavé" link: "https://researchr.org/alias/vincent-cav%C3%A9" - name: "Jarred Payne" link: "https://researchr.org/alias/jarred-payne" - name: "Raghavan Raman" link: "https://researchr.org/alias/raghavan-raman" - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Corky Cartwright" link: "https://researchr.org/alias/corky-cartwright" - name: "Vivek Sarkar" link: "https://researchr.org/alias/vivek-sarkar" year: "2011" doi: "http://doi.acm.org/10.1145/2048147.2048150" links: doi: "http://doi.acm.org/10.1145/2048147.2048150" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/CavePRRCS11" researchr: "https://researchr.org/publication/CavePRRCS11" cites: 0 citedby: 0 pages: "5-6" booktitle: "OOPSLA" kind: "inproceedings" key: "CavePRRCS11" - title: "Mint: A Multi-stage Extension of Java (Purdue University Computer Science Colloquia)" author: - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" year: "2010" month: "March" abstract: "Multi-stage programming (MSP) provides a safe way of generating code at run-time. In mostly-functional languages like MetaOCaml, this has been used to reduce the performance penalties of abstractions such as loops, recursion or interpretation. The main advantage of MSP compared to other techniques, such as string or LISP quotations, is that MSP guarantees type safety for the generated code statically, at the time the program is compiled. Unfortunately, MSP is difficult to combine with imperative features found in most mainstream languages like Java. The central problem is “scope extrusion”, which may accidentally move variables outside the scopes in which they are bound, leading to run-time errors in the generated code. This problem can be prevented if code in escapes (or “anti-quotes”) is “weakly separable”, i.e. the computational effects occurring inside an escape that are visible from the outside do not involve code. We have formalized a type system, based on Lightweight Java, that uses weak separability to prevent scope extrusion, and we have proved that the type system is sound. We have also developed an implementation called Mint to demonstrate the expressivity of the type system and the performance benefits MSP can provide in an imperative setting. Since our implementation extends the Java language, our work is accessible to mainstream programmers. This talk is based on work will be presented at the Conference on Programming Language Design and Implementation (PLDI 2010). More information is available at http://mint.concutest.org/" tags: - "programming languages" - "design science" - "rule-based" - "Java" - "type soundness" - "functional programming" - "language design" - "type system" - "e-science" - "compiler" - "programming" - "abstraction" - "staged computation" - "design" researchr: "https://researchr.org/publication/Ricken2010" cites: 0 citedby: 0 kind: "misc" key: "Ricken2010" - title: "Test-first Java concurrency for the classroom" author: - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" - name: "Robert Cartwright" link: "http://www.cs.rice.edu/~cork/" year: "2010" doi: "http://doi.acm.org/10.1145/1734263.1734340" abstract: "Concurrent programming is becoming more important due to the growing dominance of multi-core processors and the prevalence of graphical user interfaces (GUIs). To prepare students for the concurrent future, instructors have begun to address concurrency earlier in their curricula. Unfortunately, test-driven development, which enables students and practitioners to quickly develop reliable single-threaded programs, is not as effective in the domain of concurrent programming. This paper describes how ConcJUnit can simplify the task of writing unit tests for multi-threaded programs, and provides examples that can be used to introduce students to concurrent programming." links: doi: "http://doi.acm.org/10.1145/1734263.1734340" tags: - "Java" - "meta programming" - "meta-model" - "testing" - "model-driven development" - "writing" - "programming" - "Meta-Environment" researchr: "https://researchr.org/publication/RickenC10" cites: 0 citedby: 0 pages: "219-223" booktitle: "sigcse" kind: "inproceedings" key: "RickenC10" - title: "A Framework for Testing Concurrent Programs: Concutest" author: - name: "Mathias Ricken" link: "http://www.cs.rice.edu/~mgricken" year: "2009" abstract: "Incremental, test-driven development is sweeping the software industry, elevating testing from an ancillary activity to an integral part of the programming process. Unfortunately, in our recent experience developing production programs in Java, unit testing has only proven effective in assuring the reliability of code with a single thread of control; it is much less effective in concurrent programs. To facilitate the development of concurrent programs, we have developed: 1. An extension of the JUnit framework that actively supports the developer by treating tests that could silently ignore failures in auxiliary threads as test errors; 2. A lightweight Java annotation language that can be used to specify and check the threading invariants of both existing and new code; 3. A testing framework that can record and analyze the schedules of unit tests, detect deadlocks, and run the tests using modified schedules, increasing the likelihood that concurrency problems are discovered." tags: - "programming languages" - "Java" - "model checking" - "testing" - "model-driven development" - "programming" - "incremental" - "reliability" researchr: "https://researchr.org/publication/1643721" cites: 0 citedby: 0 address: "Saarbrücken, Germany" publisher: "VDM Verlag" isbn: "3639150740, 9783639150742" kind: "book" key: "1643721"