feed2js_ck = true;

document.write('<div class="rss-box">');
document.write('<ul class="rss-items">');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2010/08/15/tutorial-lecture-agile-and-efficient-domain-specific-languages-using-multi-stage-programming-in-java-mint/" title="Agile and Efficient Domain-Specific Languages using Multi-stage Programming in Java Mint (PDF, view embedded) Mathias Ricken and Edwin Westbrook A tutorial lecture to be presented at the Ninth International Conference on Generative Programming and Compone..." target="_self">Tutorial Lecture: Agile and Efficient Domain-Specific Languages using Multi-stage Programming in Java Mint</a><br />');
document.write('<span class="rss-date">August 15, 2010 07:29:52 pm</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/mint/download/mint-gpce2010-tutorial.pdf\">Agile and Efficient Domain-Specific Languages using Multi-stage Programming in Java Mint</a> (PDF, <a href=\"http://www.cs.rice.edu/~mgricken/view-pdf.shtml?http://www.cs.rice.edu/~mgricken/research/mint/download/mint-gpce2010-tutorial.pdf\">view embedded</a>)</p>  <p>Mathias Ricken and Edwin Westbrook</p>  <p>A tutorial lecture to be presented at the</p>  <p><a href=\"http://program-transformation.org/GPCE10/Tutorial4AgileEfficientDSLs\">Ninth International Conference on Generative Programming and Component Engineering (GPCE&#8217;10)</a></p>  <p>October 10-13, 2010<br /> Eindhoven, The Netherlands</p>  <p>Abstract</p>  <p>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.</p>  <p>Author Biographies</p>  <p>Mathias Ricken is a doctoral candidate in the Programming Languages Team at Rice University and one of the principal developers of the DrJava integrated development environment. His research interests include concurrent programming, extending the Java language, and computer science education. He is the developer of the Concutest concurrent unit testing framework and has created various experimental extensions of Java to address, for instance, programming with meta-data. Currently, Mathias is contributing to Java Mint, a multi-stage extension of Java that allows safe and expressive statically typed program generation and specialization in an imperative language setting.</p>  <p>Edwin Westbrook is a post-doctoral researcher at Rice University. His primary interests are in developing techniques for implementing and verifying properties of domain-specific languages (DSLs). He has worked on a number of projects in this area, including: Cinic, a type theory for building machine-checked proofs of properties of DSLs using a new approach to higher-order abstract syntax; Java Mint, a multi-stage version of Java used for efficient implementations of DSLs; and Acumen, a DSL for designing cyber-physical systems.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2010/03/15/presentation-purdue-university-computer-science-colloquia-mint-a-multi-stage-extension-of-java/" title="Purdue University Computer Science Colloquia Mint: A Multi-stage Extension of Java (PowerPoint, PDF, view embedded) Mr. Mathias Ricken Rice University LWSN 3102 A/B Monday, March 15, 2010 3:30 p.m. &amp;#8211; 4:30 p.m. Complete Description: Abstract: Mul..." target="_self">Presentation: Purdue University Computer Science Colloquia-Mint: A Multi-stage Extension of Java</a><br />');
document.write('<span class="rss-date">March 15, 2010 04:40:00 pm</span><br />');
document.write('<p><a href=\"http://www.purdue.edu/\">Purdue University</a><br /> <a href=\"http://calendar.cs.purdue.edu/calendar/webevent.cgi?cmd=showevent&#038;id=4830\">Computer Science Colloquia</a><br /> <a href=\"http://www.cs.rice.edu/~mgricken/research/mint/download/Purdue-Ricken-Mint-2010-03-15.ppt\">Mint: A Multi-stage Extension of Java</a><br /> (PowerPoint, <a href=\"http://www.cs.rice.edu/~mgricken/research/mint/download/Purdue-Ricken-Mint-2010-03-15.pdf\">PDF</a>, <a href=\"http://www.cs.rice.edu/~mgricken/view-pdf.shtml?http://www.cs.rice.edu/~mgricken/research/mint/download/Purdue-Ricken-Mint-2010-03-15.ppt\">view embedded</a>)<br /> Mr. Mathias Ricken<br /> Rice University<br /> LWSN 3102 A/B<br /> Monday, March 15, 2010<br /> 3:30 p.m. &#8211; 4:30 p.m.<br /> <br /> Complete Description:<br /> Abstract:<br /> 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.<br /> <br /> Unfortunately, MSP is difficult to combine with imperative features found in most mainstream languages like Java. The central problem is &#8220;scope extrusion&#8221;, 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 &#8220;anti-quotes&#8221;) is &#8220;weakly separable&#8221;, i.e. the computational effects occurring inside an escape that are visible from the outside do not involve code.<br /> <br /> 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.<br /> <br /> 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/<br /> <br /> <br /> Bio:<br /> Mathias Ricken is a doctoral candidate in the Programming Languages Team at Rice University and one of the principal developers of the DrJava integrated development environment. His research interests include concurrent programming, extending the Java language, and computer science education. He is the developer of the Concutest concurrent unit testing framework and has created various experimental extensions of Java to address, for instance, programming with meta-data. Currently, Mathias is contributing to Mint, a multi-stage extension of Java that allows safe and expressive statically typed program generation and specialization in an imperative language setting.<br /> <br /> Faculty and students wishing to speak privately with Mr. Ricken should contact Jan Vitek at jv@cs.purdue.edu.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2010/03/12/presentation-test-first-java-concurrency-for-the-classroom/" title="Test-First Java Concurrency for the Classroom (PowerPoint, view embedded) Where: 41st Technical Symposium on Computer Science Education (SIGCSE 2010) When: March 2, 2010 Concurrent programming is becoming more important due to the growing dominance of mul..." target="_self">Presentation: Test-First Java Concurrency for the Classroom</a><br />');
document.write('<span class="rss-date">March 12, 2010 02:12:13 pm</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/concutest/download/SIGCSE2010-Ricken-Test-First-Java-Concurrency-for-the-Classroom-2010-03-12.ppt\">Test-First Java Concurrency for the Classroom</a><br /> (PowerPoint, <a href=\"http://www.cs.rice.edu/~mgricken/research/concutest/view-pdf.shtml?http://www.cs.rice.edu/~mgricken/research/concutest/download/SIGCSE2010-Ricken-Test-First-Java-Concurrency-for-the-Classroom-2010-03-12.ppt\">view embedded</a>)</p>  <p>Where: 41st Technical Symposium on Computer Science Education (<a href=\"http://sigcse.org/sigcse2010\">SIGCSE 2010</a>)<br /> When: March 2, 2010</p>  <p>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.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2010/02/25/presentation-testing-concurrent-programs-a-7-minute-jargon-free-introduction/" title="Testing Concurrent Programs, A 7-Minute Jargon-Free Introduction (PowerPoint, view embedded) Where: Rice University School of Engineering, Thesis Writing Seminar When: February 25, 2010 A 7-minute jargon-free introduction to the problems of testing concur..." target="_self">Presentation: Testing Concurrent Programs, A 7-Minute Jargon-Free Introduction</a><br />');
document.write('<span class="rss-date">February 25, 2010 06:25:57 pm</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/concutest/download/TWS-Ricken-Concutest-2010-02-25.ppt\">Testing Concurrent Programs, A 7-Minute Jargon-Free Introduction</a><br /> (PowerPoint, <a href=\"http://www.cs.rice.edu/~mgricken/research/concutest/view-pdf.shtml?http://www.cs.rice.edu/~mgricken/research/concutest/download/TWS-Ricken-Concutest-2010-02-25.ppt\">view embedded</a>)<br /></p>  <p>Where: Rice University School of Engineering, <a href=\"http://engr.rice.edu/content.aspx?id=2052\">Thesis Writing Seminar</a><br /> When: February 25, 2010</p>  <p>A 7-minute jargon-free introduction to the problems of testing concurrent programs, and a proposal for a solution, with non-computer science engineering graduate students as intended audience.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2010/02/08/presentation-mint-a-multi-stage-extension-of-java/" title="Mint: A Multi-stage Extension of Java (PowerPoint, PDF, view embedded) Video recording available on vimeo. Where: Rice University Computer Science Department, COMP 600 Graduate Seminar When: February 8, 2010 Multi-stage programming (MSP) provides a safe w..." target="_self">Presentation: Mint: A Multi-stage Extension of Java</a><br />');
document.write('<span class="rss-date">February 08, 2010 02:27:21 pm</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/mint/download/COMP600-Ricken-Mint-2010-02-08.ppt\">Mint: A Multi-stage Extension of Java</a><br /> (PowerPoint, <a href=\"http://www.cs.rice.edu/~mgricken/research/mint/download/COMP600-Ricken-Mint-2010-02-08.pdf\">PDF</a>, <a href=\"http://www.cs.rice.edu/~mgricken/view-pdf.shtml?http://www.cs.rice.edu/~mgricken/research/mint/download/COMP600-Ricken-Mint-2010-02-08.ppt\">view embedded</a>)<br /> <a href=\"http://vimeo.com/9390149\">Video recording</a> available on <a href=\"http://vimeo.com/9390149\">vimeo</a>.</p>  <p>Where: Rice University Computer Science Department, <a href=\"http://www.owlnet.rice.edu/~comp600/\">COMP 600 Graduate Seminar</a><br /> When: February 8, 2010</p>  <p>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.</p>  <p>Unfortunately, MSP is difficult to combine with imperative features found in most mainstream languages like Java. The central problem is &#8220;scope extrusion&#8221;, 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 &#8220;anti-quotes&#8221;) is &#8220;weakly separable&#8221;, i.e. the computational effects occurring inside an escape that are visible from the outside do not involve code.</p>  <p>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.</p>  <p>This talk is based on work done in collaboration with Edwin Westbrook, Jun Inoue, Yilong Yao, Tamer Abdelatif, and Walid Taha. A paper titled &#8220;Mint: Java Multi-stage Programming Using Weak Separability&#8221; has been accepted for publication in the Proceedings of the 2010 ACM SIGPLAN Conference on Programming Language Design and Implementation (<a href=\"http://www.cs.stanford.edu/pldi10/\">PLDI 2010</a>).</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2010/01/31/paper-mint-java-multi-stage-programming-using-weak-separability/" title="Mint: Java Multi-stage Programming Using Weak Separability 2010 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2010) Multi-stage programming (MSP) provides a disciplined approach to run-time code generation. In the purely f..." target="_self">Paper: Mint: Java Multi-stage Programming Using Weak Separability</a><br />');
document.write('<span class="rss-date">January 31, 2010 07:21:58 pm</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/mint/download/pldi2010-mint.pdf\">Mint: Java Multi-stage Programming Using Weak Separability</a></p>  <p>2010 ACM SIGPLAN Conference on Programming Language Design and Implementation (<a href=\"http://www.cs.stanford.edu/pldi10/pldi2010_home.html\">PLDI 2010</a>)</p>  <p>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 &#8220;anti quotes&#8221;) 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.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2009/10/24/paper-test-first-java-concurrency-for-the-classroom/" title="Test-First Java Concurrency for the Classroom 41st Technical Symposium on Computer Science Education (SIGCSE 2010) Concurrent programming is becoming more important due to the growing dominance of multi-core processors and the prevalence of graphical user..." target="_self">Paper: Test-First Java Concurrency for the Classroom</a><br />');
document.write('<span class="rss-date">October 24, 2009 03:47:27 pm</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/concutest/download/SIGCSE2010-Ricken-Test-First-Java-Concurrency-for-the-Classroom.pdf\">Test-First Java Concurrency for the Classroom</a></p>  <p>41st Technical Symposium on Computer Science Education (<a href=\"http://sigcse.org/sigcse2010\">SIGCSE 2010</a>)</p>  <p>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.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2009/08/29/presentation-concjunit-unit-testing-for-concurrent-programs-2/" title="ConcJUnit: Unit Testing for Concurrent Programs... &lt;a href=&quot;http://www.concurrentaffair.org/2009/08/29/presentation-concjunit-unit-testing-for-concurrent-programs-2/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/..." target="_self">Presentation: ConcJUnit: Unit Testing for Concurrent Programs</a><br />');
document.write('<span class="rss-date">August 29, 2009 01:06:07 am</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/concutest/download/PPPJ2009-Ricken-ConcJUnit-2009-08-28.ppt\">ConcJUnit: Unit Testing for Concurrent Programs</a></p>  <p>Where: The 7th International Conference on the Principles and Practice of Programming in Java (<a href=\"http://pppj09.cpsc.ucalgary.ca/\">PPPJ 2009</a>)<br /> When: August  28, 2009</p>  <p>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.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2009/08/24/presentation-concjunit-unit-testing-for-concurrent-programs/" title="ConcJUnit: Unit Testing for Concurrent Programs... &lt;a href=&quot;http://www.concurrentaffair.org/2009/08/24/presentation-concjunit-unit-testing-for-concurrent-programs/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/sp..." target="_self">Presentation: ConcJUnit: Unit Testing for Concurrent Programs</a><br />');
document.write('<span class="rss-date">August 24, 2009 01:41:38 pm</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/concutest/download/COMP600-Ricken-2009-08-24.ppt\">ConcJUnit: Unit Testing for Concurrent Programs</a></p>  <p>Where: Rice University Computer Science Department, COMP 600 Graduate Seminar<br /> When: August  24, 2009</p>  <p>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.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2009/07/14/tr09-02/" title="Multi-stage Programming for Mainstream Language... &lt;a href=&quot;http://www.concurrentaffair.org/2009/07/14/tr09-02/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;..." target="_self">Tech Report: Multi-stage Programming for Mainstream Languages (TR09-02)</a><br />');
document.write('<span class="rss-date">July 14, 2009 03:39:51 pm</span><br />');
document.write('<p><a href=\"http://compsci.rice.edu/TR/TR_Download.cfm?SDID=273\">Multi-stage Programming for Mainstream Languages (TR09-02)</a> (<a href=\"http://www.cs.rice.edu/~mgricken/research/mint/download/techreport.pdf\">local mirror</a>)</p>  <p>Technical Report TR09-02, Department of Computer Science, Rice University</p>  <p>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 &#8220;anti quotes&#8221;) 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.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2009/06/05/paper-concjunit-unit-testing-for-concurrent-programs/" title="ConcJUnit: Unit Testing for Concurrent Programs... &lt;a href=&quot;http://www.concurrentaffair.org/2009/06/05/paper-concjunit-unit-testing-for-concurrent-programs/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&..." target="_self">Paper: ConcJUnit: Unit Testing for Concurrent Programs</a><br />');
document.write('<span class="rss-date">June 05, 2009 03:33:08 pm</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/concutest/download/PPPJ2009-Ricken-ConcJUnit.pdf\">ConcJUnit: Unit Testing for Concurrent Programs</a></p>  <p>7th International Conference on the Principles and Practice of Programming in Java (<a href=\"http://pppj09.cpsc.ucalgary.ca/program.php\">PPPJ 2009</a>)</p>  <p>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.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2009/05/24/book-a-framework-for-concurrent-unit-testing-concutest/" title="A Framework for Testing Concurrent Programs: Co... &lt;a href=&quot;http://www.concurrentaffair.org/2009/05/24/book-a-framework-for-concurrent-unit-testing-concutest/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt..." target="_self">Book: A Framework for Concurrent Unit Testing: Concutest</a><br />');
document.write('<span class="rss-date">May 24, 2009 05:43:13 pm</span><br />');
document.write('<p><a href=\"http://www.amazon.com/Framework-Testing-Concurrent-Programs-Concutest/dp/3639150740/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1248734404&#038;sr=8-1\">A Framework for Testing Concurrent Programs: Concutest (Paperback)</a></p>  <p>Republished MS thesis. VDM Verlag</p>  <p>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.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2008/10/24/presentation-java-annotations-for-types-and-expressions/" title="Java Annotations for Types and Expressions &lt;a href=&quot;http://www.concurrentaffair.org/2008/10/24/presentation-java-annotations-for-types-and-expressions/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a..." target="_self">Presentation: Java Annotations for Types and Expressions</a><br />');
document.write('<span class="rss-date">October 24, 2008 11:00:54 am</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/xajavac/download/Java%20Annotations%20for%20Types%20and%20Expressions.ppt\">Java Annotations for Types and Expressions</a></p>  <p>Where: Rice University Computer Science Department, RAP Seminar<br /> When: October 24, 2008</p>  <p>As defined in Java 1.5, Java annotations can only be attached to very few targets: Classes, methods, method parameters, fields, and other annotations. The Java community intends to extend the list of targets and has issued Java Specification Request (JSR) 308, &#8220;Annotations on Types&#8221;. The current proposal for JSR 308 is considering allowing annotations on statements, but not on expressions.</p>  <p>In this talk, I discuss how the changes proposed by JSR 308 and its Checker Framework allow programmers to enhance Java&#8217;s type system and provide additional static guarantees. Additionally, I demonstrate that the same mechanism proposed for annotations on statements can be used to describe multi-stage programs in Java.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2008/10/16/poster-invariant-specification-and-multi-staging-using-java-annotations/" title="Invariant Specification and Multi-Staging using Java Annotations &lt;a href=&quot;http://www.concurrentaffair.org/2008/10/16/poster-invariant-specification-and-multi-staging-using-java-annotations/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&q..." target="_self">Poster: Invariant Specification and Multi-Staging using Java Annotations</a><br />');
document.write('<span class="rss-date">October 16, 2008 01:00:20 pm</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/xajavac/download/annotation-poster-2008.pdf\">Invariant Specification and Multi-Staging using Java Annotations</a></p>  <p>Where: <a href=\"http://compsci.rice.edu/news.cfm?doc_id=12717\">Rice University Computer Science Department, Corporate Affiliates Meeting 2008</a><br /> When: October 16, 2008</p>  <p>Java annotations allow programmers to attach metadata to programs. During normal execution, the annotations are ignored, but in contrast to comments in the source code, annotations can be manipulated programmatically at compile- or run-time. We propose two extensions &#8212; subtyping and expression annotations &#8212; for consideration in the Java specification request for annotations, and show how annotations can be used to express program invariants and multi-stage programs.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2008/09/22/presentation-java-annotations-for-invariant-specification/" title="Java Annotations for Invariant Specification &lt;a href=&quot;http://www.concurrentaffair.org/2008/09/22/presentation-java-annotations-for-invariant-specification/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&l..." target="_self">Presentation: Java Annotations for Invariant Specification</a><br />');
document.write('<span class="rss-date">September 22, 2008 11:00:13 am</span><br />');
document.write('<p><a href=\"http://www.cs.rice.edu/~mgricken/research/xajavac/download/Java%20Annotations%20for%20Invariant%20Specification.ppt\">Java Annotations for Invariant Specification</a></p>  <p>Where: Rice University Computer Science Department, RAP Seminar<br /> When: September 22, 2008</p>  <p>Java annotations allow programmers to attach metadata to programs. During normal execution, the annotations are ignored, but in contrast to comments in the source code, annotations can be manipulated programmatically at compile- or run-time.</p>  <p>In this talk, I provide a brief introduction to Java annotations and show how limited their use currently is. I then describe a framework for specifying program invariants using Java annotations, and how extending Java to support subtyping for annotations allows programmers to write the invariants in a succinct manner.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2007/10/30/thesis-a-framework-for-testing-concurrent-programs/" title="A Framework for Testing Concurrent Programs &lt;a href=&quot;http://www.concurrentaffair.org/2007/10/30/thesis-a-framework-for-testing-concurrent-programs/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;..." target="_self">Thesis: A Framework for Testing Concurrent Programs</a><br />');
document.write('<span class="rss-date">October 30, 2007 01:00:04 pm</span><br />');
document.write('<p><a href=\"http://www.concutest.org/download/MSThesis-Ricken.pdf\">A Framework for Testing Concurrent Programs</a></p>  <p><center>Rice University</p>  <p>A Framework for Testing Concurrent Programs<br /> by<br /> Mathias Guenter Ricken</p>  <p>A thesis submitted<br /> in partial fulfillment of the<br /> requirements for the degree</p>  <p>Master of Science</center></p>  <p>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.</p>  <p>To facilitate the development of concurrent programs, we are developing:</p>  <ol>     <li>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;</li>     <li>A lightweight Java annotation language that can be used to specify and check the threading invariants of both existing and new code;</li>     <li>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.</li> </ol> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2007/10/04/presentation-testing-concurrent-programs/" title="Testing Concurrent Programs &lt;a href=&quot;http://www.concurrentaffair.org/2007/10/04/presentation-testing-concurrent-programs/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;..." target="_self">Presentation: Testing Concurrent Programs</a><br />');
document.write('<span class="rss-date">October 04, 2007 12:00:00 pm</span><br />');
document.write('<p><a href=\"http://www.concutest.org/download/RCSC-20071004/RCSC-20071004-Ricken.ppt\">Testing Concurrent Programs</a></p>  <p>Where: Rice University Computer Science Department, Rice Computer Science Club<br /> When: October 4, 2007</p>  <p>A talk directed mostly at undergraduate students.</p>  <p><a href=\"http://www.concutest.org/download/RCSC-20071004/listings\">Programming examples</a> from the presentation.</p> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2007/08/27/presentation-a-framework-for-testing-concurrent-programs/" title="A Framework for Testing Concurrent Programs &lt;a href=&quot;http://www.concurrentaffair.org/2007/08/27/presentation-a-framework-for-testing-concurrent-programs/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;..." target="_self">Presentation: A Framework for Testing Concurrent Programs</a><br />');
document.write('<span class="rss-date">August 27, 2007 12:00:53 pm</span><br />');
document.write('<p><a href=\"http://www.concutest.org/download/COMP600-Ricken.ppt\">A Framework for Testing Concurrent Programs</a></p>  <p>Where: Rice University Computer Science Department, PhD Student Lunch Seminar<br /> When: August 27, 2007</p>  <p>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 are developing:</p>  <ol>     <li>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;</li>     <li>A lightweight Java annotation language that can be used to specify and check the threading invariants of both existing and new code;</li>     <li>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.</li> </ol> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2007/06/14/defense-a-framework-for-testing-concurrent-programs/" title="A Framework for Testing Concurrent Programs &lt;a href=&quot;http://www.concurrentaffair.org/2007/06/14/defense-a-framework-for-testing-concurrent-programs/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt..." target="_self">Defense: A Framework for Testing Concurrent Programs</a><br />');
document.write('<span class="rss-date">June 14, 2007 01:00:05 pm</span><br />');
document.write('<p><a href=\"http://www.concutest.org/download/MSThesis-Ricken.ppt\">A Framework for Testing Concurrent Programs</a></p>  <p><center>Rice University<br /> The Department of Computer Sciece<br /> <br /> presents<br /> <br /> Mathias Guenter Ricken<br /> Master of Science Thesis Defense<br /> <br /> A Framework for Testing Concurrent Programs<br /></center></p>  <p>When: July 14, 2007</p>  <p>ABSTRACT</p>  <p>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.</p>  <p>To facilitate the development of concurrent programs, we are developing:</p>  <ol>     <li>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.</li>     <li>A lightweight Java annotation language that can be used to specify and check the threading invariants of both existing and new code.</li>     <li>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.</li> </ol> ');
document.write('</li>');
document.write('<li class="rss-item"><a class="rss-item" href="http://www.concurrentaffair.org/2006/10/06/poster-practical-tools-for-testing-concurrent-programs/" title="Practical Tools for Testing Concurrent Programs &lt;a href=&quot;http://www.concurrentaffair.org/2006/10/06/poster-practical-tools-for-testing-concurrent-programs/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;&amp;#8594;&lt;/span&gt;&l..." target="_self">Poster: Practical Tools for Testing Concurrent Programs</a><br />');
document.write('<span class="rss-date">October 06, 2006 02:30:52 pm</span><br />');
document.write('<p><a href=\"http://www.concutest.org/download/concutest-poster-2006.pdf\">Practical Tools for Testing Concurrent Programs</a></p>  <p>Where: <a href=\"http://cohesion.rice.edu/engineering/computerscience/research.cfm?doc_id=9581\">Rice University Computer Science Department, Corporate Affiliates Meeting 2006</a><br /> When: October 5, 2006</p>  <p>In our experience with developing production programs in Java, unit testing has proven effective in assuring the reliability of code with a single thread of control. Unfortunately, unit testing has proved much less effective in assuring the reliability of code with multiple threads of control, often simply because the JUnit testing framework silently ignores failures in auxiliary threads. Java libraries and user programs frequently make assumptions about the threading context in which they execute, but these assumptions are rarely enforced by the actual code and typically only appear in program documentation.  Since thread scheduling is non-deterministic, a unit test can succeed on one run and fail on the next, or repeatedly succeed on one platform and occasionally fail on another.</p>  <p>To improve test-driven development for concurrent programs, we are developing</p>  <ol>     <li>an extension of the JUnit framework, actively supporting the developer by treating tests that could silently ignore failures in auxiliary threads as test errors;</li>     <li>a lightweight annotation language, which can be used to specify and check the threading properties of both existing and new code; and</li>     <li>a testing framework that can execute unit tests according to a specified set of recorded or generated schedules, elevating the unit testing of concurrent programs to a rigorous, deterministic process.</li> </ol> ');
document.write('</li>');
document.write('</ul></div>');
