<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>A Concurrent Affair &#187; Publications</title>
	<atom:link href="http://www.concurrentaffair.org/category/publications/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.concurrentaffair.org</link>
	<description>a blog about Mathias&#039; work and play.</description>
	<lastBuildDate>Fri, 20 Jan 2012 23:04:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Demonstration: DrHJ &#8211; the cure to your Multicore Programming Woes</title>
		<link>http://www.concurrentaffair.org/2011/07/17/demonstration-drhj-the-cure-to-your-multicore-programming-woes/</link>
		<comments>http://www.concurrentaffair.org/2011/07/17/demonstration-drhj-the-cure-to-your-multicore-programming-woes/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 01:10:46 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2595</guid>
		<description><![CDATA[DrHJ &#8211; the cure to your Multicore Programming Woes SPLASH 2011 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 &#8230; <a href="http://www.concurrentaffair.org/2011/07/17/demonstration-drhj-the-cure-to-your-multicore-programming-woes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/drjava/download/drhj-splash2011.pdf">DrHJ &#8211; the cure to your Multicore Programming Woes</a></p>

<p><a href="http://splashcon.org/2011/">SPLASH 2011</a></p>

<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2011/07/17/demonstration-drhj-the-cure-to-your-multicore-programming-woes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paper: DrHJ &#8211; a lightweight pedagogic IDE for Habanero Java</title>
		<link>http://www.concurrentaffair.org/2011/07/11/paper-drhj-pppj2011/</link>
		<comments>http://www.concurrentaffair.org/2011/07/11/paper-drhj-pppj2011/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 15:18:27 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2589</guid>
		<description><![CDATA[DrHJ &#8211; a lightweight pedagogic IDE for Habanero Java 9th International Conference on the Principles and Practice of Programming in Java (PPPJ 2011) The Java language and runtime environment has had a profound worldwide impact on computer software since its &#8230; <a href="http://www.concurrentaffair.org/2011/07/11/paper-drhj-pppj2011/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/drjava/download/drhj-pppj2011.pdf">DrHJ &#8211; a lightweight pedagogic IDE for Habanero Java</a></p>

<p>9th International Conference on the Principles and Practice of Programming in Java (<a href="http://pppj2011.imm.dtu.dk/">PPPJ 2011</a>)</p>

<p>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.</p>

<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2011/07/11/paper-drhj-pppj2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhD Thesis: A Framework for Testing Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2011/04/20/phd-thesis-a-framework-for-testing-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2011/04/20/phd-thesis-a-framework-for-testing-concurrent-programs/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 06:00:48 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2542</guid>
		<description><![CDATA[A Framework for Testing Concurrent Programs Rice University A Framework for Testing Concurrent Programs by Mathias Guenter Ricken A thesis submitted in partial fulfillment of the requirements for the degree Doctor of Philosophy This study proposes a new framework that &#8230; <a href="http://www.concurrentaffair.org/2011/04/20/phd-thesis-a-framework-for-testing-concurrent-programs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.concutest.org/download/PhDThesis-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>Doctor of Philosophy</center></p>

<p>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.</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2011/04/20/phd-thesis-a-framework-for-testing-concurrent-programs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhD Defense: A Framework for Testing Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2011/01/10/phd-defense-a-framework-for-testing-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2011/01/10/phd-defense-a-framework-for-testing-concurrent-programs/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 21:03:20 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2454</guid>
		<description><![CDATA[A Framework for Testing Concurrent Programs (Presentation, PowerPoint, PDF) Rice University Department of Computer Science Presents Mathias Ricken Ph.D. Thesis Defense Title: A Framework for Testing Concurrent Programs Date: January 10, 2011 Time: 9 AM Location: Duncan Hall 3076 Abstract: &#8230; <a href="http://www.concurrentaffair.org/2011/01/10/phd-defense-a-framework-for-testing-concurrent-programs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.concutest.org/download/PhDThesis-Ricken-2011-01-10.ppt">A Framework for Testing Concurrent Programs</a><br />
(Presentation, PowerPoint, <a href="http://www.concutest.org/download/PhDThesis-Ricken-2011-01-10.pdf">PDF</a>)</p>

<p><center>Rice University<br />
Department of Computer Science<br />
<br />
Presents<br />
<br />
Mathias Ricken<br />
<br />
Ph.D. Thesis Defense<br />
<br />
Title: A Framework for Testing Concurrent Programs<br />
<br />
Date: January 10, 2011 <br />
Time: 9 AM<br />
Location: Duncan Hall 3076<br /></center>
<br />
Abstract:<br />
<br />
<br /></p>

<p>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 and operating
systems 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.</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2011/01/10/phd-defense-a-framework-for-testing-concurrent-programs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhD Proposal: A Framework for Testing Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2010/12/03/phd-proposal-a-framework-for-testing-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2010/12/03/phd-proposal-a-framework-for-testing-concurrent-programs/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 19:27:25 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2426</guid>
		<description><![CDATA[A Framework for Testing Concurrent Programs (Presentation, PowerPoint,PDF) Rice University Department of Computer Science Presents Mathias Ricken Ph.D. Thesis Proposal Title: A Framework for Testing Concurrent Programs Date: December 2, 2010 Time: 9 AM Location: Duncan Hall 3076 Abstract: This &#8230; <a href="http://www.concurrentaffair.org/2010/12/03/phd-proposal-a-framework-for-testing-concurrent-programs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.concutest.org/download/PhDProposal-Ricken-2010-12-02.ppt">A Framework for Testing Concurrent Programs</a><br />
(Presentation, PowerPoint,<a href="http://www.concutest.org/download/PhDProposal-Ricken-2010-12-02.pdf">PDF</a>)</p>

<p><center>Rice University<br />
Department of Computer Science<br />
<br />
Presents<br />
<br />
Mathias Ricken<br />
<br />
Ph.D. Thesis Proposal<br />
<br />
Title: A Framework for Testing Concurrent Programs<br />
<br />
Date: December 2, 2010 <br />
Time: 9 AM<br />
Location: Duncan Hall 3076<br /></center>
<br />
Abstract:<br />
<br />
<br /></p>

<p>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 and operating
systems 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.</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>

<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/12/03/phd-proposal-a-framework-for-testing-concurrent-programs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial Lecture: Agile and Efficient Domain-Specific Languages using Multi-stage Programming in Java Mint</title>
		<link>http://www.concurrentaffair.org/2010/10/10/tutorial-lecture-agile-and-efficient-domain-specific-languages-using-multi-stage-programming-in-java-mint/</link>
		<comments>http://www.concurrentaffair.org/2010/10/10/tutorial-lecture-agile-and-efficient-domain-specific-languages-using-multi-stage-programming-in-java-mint/#comments</comments>
		<pubDate>Sun, 10 Oct 2010 13:00:52 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2115</guid>
		<description><![CDATA[Agile and Efficient Domain-Specific Languages using Multi-stage Programming in Java Mint (PowerPoint, PDF, view embedded) Tutorial Proposal (PDF, view embedded) Source code (ZIP file) Mathias Ricken, Edwin Westbrook and Walid Taha A tutorial lecture presented at the Ninth International Conference &#8230; <a href="http://www.concurrentaffair.org/2010/10/10/tutorial-lecture-agile-and-efficient-domain-specific-languages-using-multi-stage-programming-in-java-mint/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/mint/download/Mint-GPCE-tutorial-presentation-20101010.pdf">Agile and Efficient Domain-Specific Languages using Multi-stage Programming in Java Mint</a> (PowerPoint, <a href="http://www.cs.rice.edu/~mgricken/research/mint/download/Mint-GPCE-tutorial-presentation-20101010.pdf">PDF</a>, <a href="http://www.cs.rice.edu/~mgricken/view-pdf.shtml?http://www.cs.rice.edu/~mgricken/research/mint/download/Mint-GPCE-tutorial-presentation-20101010.pdf">view embedded</a>)</p>

<p><a href="http://www.cs.rice.edu/~mgricken/research/mint/download/mint-gpce2010-tutorial.pdf">Tutorial Proposal</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>)<br />
<a href="http://www.cs.rice.edu/~mgricken/research/mint/download/mint-gpce2010-tutorial-source.zip">Source code</a> (ZIP file)</p>

<p>Mathias Ricken, Edwin Westbrook and Walid Taha</p>

<p>A tutorial lecture 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>Presenter 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>

<p>Walid Taha is an professor at Halmstad University. His current interest is in modeling and simulation of cyberphysical systems. He was the principal investigator on a number of research awards and contracts from the National Science Foundation (NSF), Semi-conductor Research Consortium (SRC), and Texas Advanced Technology Program (ATP). He received an NSF CAREER award to develop Java Mint. He is the principle designer Java Mint, Acumen, MetaOCaml, and the Verilog Preprocessor. He founded the ACM Conference on Generative Programming and Component Engineering (GPCE), the IFIP Working Group on Program Generation (WG 2.11), and the Middle Earth Programming Languages Seminar (MEPLS). In 2009, he chaired the IFIP Working Conference on Domain Specific Languages (DSLs).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/10/10/tutorial-lecture-agile-and-efficient-domain-specific-languages-using-multi-stage-programming-in-java-mint/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Poster: Java Programming Language Team</title>
		<link>http://www.concurrentaffair.org/2010/10/07/poster-java-programming-language-team/</link>
		<comments>http://www.concurrentaffair.org/2010/10/07/poster-java-programming-language-team/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 19:50:13 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2298</guid>
		<description><![CDATA[Research Summary: Java Programming Language Team Where: Rice University Undergraduate-Graduate Research Mixer 2010 When: October 7, 2010 This poster shows a summary of my work in the Java Programming Languages Team in the Department of Computer Science at Rice University. &#8230; <a href="http://www.concurrentaffair.org/2010/10/07/poster-java-programming-language-team/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/download/rice-research-mixer-2010-ricken-poster.pdf">Research Summary: Java Programming Language Team</a></p>

<p>Where: Rice University Undergraduate-Graduate Research Mixer 2010<br />
When: October 7, 2010</p>

<p>This poster shows a summary of my work in the Java Programming Languages Team in the Department of Computer Science at Rice University. Generally, my efforts can be grouped into the four categories of (1) testing concurrent programs, (2) multi-stage programming, (3) computer science education, and (4) developing DrJava. The poster also shows how these four areas are interconnected.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/10/07/poster-java-programming-language-team/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Presentations: Agile and Efficient Domain-Speciﬁc Languages using Multi-stage Programming in Java Mint (Practice Talk 2)</title>
		<link>http://www.concurrentaffair.org/2010/09/27/presentations-agile-and-efficient-domain-speci%ef%ac%81c-languages-using-multi-stage-programming-in-java-mint-practice-talk-2/</link>
		<comments>http://www.concurrentaffair.org/2010/09/27/presentations-agile-and-efficient-domain-speci%ef%ac%81c-languages-using-multi-stage-programming-in-java-mint-practice-talk-2/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 15:43:59 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2266</guid>
		<description><![CDATA[Agile and Efﬁcient Domain-Speciﬁc Languages using Multi-stage Programming in Java Mint (PowerPoint, PDF, view embedded) Mathias Ricken, Edwin Westbrook and Walid Taha Where: Rice University Computer Science Department, Habanero Research Group Meeting When: September 24, 2010 Domain-specific languages (DSLs) are &#8230; <a href="http://www.concurrentaffair.org/2010/09/27/presentations-agile-and-efficient-domain-speci%ef%ac%81c-languages-using-multi-stage-programming-in-java-mint-practice-talk-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/mint/download/Mint-GPCE-tutorial-habanero-20100924.ppt">Agile and Efﬁcient Domain-Speciﬁc Languages using Multi-stage
Programming in Java Mint</a><br />
(PowerPoint, <a href="http://www.cs.rice.edu/~mgricken/research/mint/download/Mint-GPCE-tutorial-habanero-20100924.pdf">PDF</a>, <a href="http://www.cs.rice.edu/~mgricken/view-pdf.shtml?http://www.cs.rice.edu/~mgricken/research/mint/download/Mint-GPCE-tutorial-habanero-20100924.pdf">view embedded</a>)</p>

<p>Mathias Ricken, Edwin Westbrook and Walid Taha</p>

<p>Where: Rice University Computer Science Department, <a href="http://habanero.rice.edu/">Habanero Research Group Meeting</a><br />
When: September 24, 2010</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>It is an early practice talk for a <a href="http://program-transformation.org/GPCE10/Tutorial4AgileEfficientDSLs">tutorial to be held at GPCE&#8217;10</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/09/27/presentations-agile-and-efficient-domain-speci%ef%ac%81c-languages-using-multi-stage-programming-in-java-mint-practice-talk-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentations: Agile and Efficient Domain-Speciﬁc Languages using Multi-stage Programming in Java Mint (Practice Talk)</title>
		<link>http://www.concurrentaffair.org/2010/09/27/presentation-agile-and-efficient-domain-speci%ef%ac%81c-languages-using-multi-stage-programming-in-java-mint-practice-talk/</link>
		<comments>http://www.concurrentaffair.org/2010/09/27/presentation-agile-and-efficient-domain-speci%ef%ac%81c-languages-using-multi-stage-programming-in-java-mint-practice-talk/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 15:38:02 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2259</guid>
		<description><![CDATA[Agile and Efﬁcient Domain-Speciﬁc Languages using Multi-stage Programming in Java Mint (PowerPoint, PDF, view embedded) Video recording available on vimeo. Mathias Ricken, Edwin Westbrook and Walid Taha Where: Rice University Computer Science Department, COMP 600 Graduate Seminar When: September 20, &#8230; <a href="http://www.concurrentaffair.org/2010/09/27/presentation-agile-and-efficient-domain-speci%ef%ac%81c-languages-using-multi-stage-programming-in-java-mint-practice-talk/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/mint/download/Mint-GPCE-tutorial-COMP600-20100920.ppt">Agile and Efﬁcient Domain-Speciﬁc Languages using Multi-stage
Programming in Java Mint</a><br />
(PowerPoint, <a href="http://www.cs.rice.edu/~mgricken/research/mint/download/Mint-GPCE-tutorial-COMP600-20100920.pdf">PDF</a>, <a href="http://www.cs.rice.edu/~mgricken/view-pdf.shtml?http://www.cs.rice.edu/~mgricken/research/mint/download/Mint-GPCE-tutorial-COMP600-20100920.pdf">view embedded</a>)
<span style="visibility:hidden"><br /><a href="http://vimeo.com/15315176">Video recording</a> available on <a href="http://vimeo.com/15315176">vimeo</a>.</span></p>

<p>Mathias Ricken, Edwin Westbrook and Walid Taha</p>

<p>Where: Rice University Computer Science Department, <a href="http://www.clear.rice.edu/comp600/">COMP 600 Graduate Seminar</a><br />
When: September 20, 2010</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>It is an early practice talk for a <a href="http://program-transformation.org/GPCE10/Tutorial4AgileEfficientDSLs">tutorial to be held at GPCE&#8217;10</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/09/27/presentation-agile-and-efficient-domain-speci%ef%ac%81c-languages-using-multi-stage-programming-in-java-mint-practice-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation: Purdue University Computer Science Colloquia-Mint: A Multi-stage Extension of Java</title>
		<link>http://www.concurrentaffair.org/2010/03/15/presentation-purdue-university-computer-science-colloquia-mint-a-multi-stage-extension-of-java/</link>
		<comments>http://www.concurrentaffair.org/2010/03/15/presentation-purdue-university-computer-science-colloquia-mint-a-multi-stage-extension-of-java/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 21:40:00 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=1711</guid>
		<description><![CDATA[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. &#8211; 4:30 p.m. Complete Description: Abstract: Multi-stage programming (MSP) provides a &#8230; <a href="http://www.concurrentaffair.org/2010/03/15/presentation-purdue-university-computer-science-colloquia-mint-a-multi-stage-extension-of-java/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/03/15/presentation-purdue-university-computer-science-colloquia-mint-a-multi-stage-extension-of-java/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Presentation: Test-First Java Concurrency for the Classroom</title>
		<link>http://www.concurrentaffair.org/2010/03/12/presentation-test-first-java-concurrency-for-the-classroom/</link>
		<comments>http://www.concurrentaffair.org/2010/03/12/presentation-test-first-java-concurrency-for-the-classroom/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 20:12:13 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=1704</guid>
		<description><![CDATA[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 multi-core processors and the prevalence &#8230; <a href="http://www.concurrentaffair.org/2010/03/12/presentation-test-first-java-concurrency-for-the-classroom/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/03/12/presentation-test-first-java-concurrency-for-the-classroom/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Presentation: Testing Concurrent Programs, A 7-Minute Jargon-Free Introduction</title>
		<link>http://www.concurrentaffair.org/2010/02/25/presentation-testing-concurrent-programs-a-7-minute-jargon-free-introduction/</link>
		<comments>http://www.concurrentaffair.org/2010/02/25/presentation-testing-concurrent-programs-a-7-minute-jargon-free-introduction/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 00:25:57 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=1677</guid>
		<description><![CDATA[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 concurrent programs, and a proposal for a solution, &#8230; <a href="http://www.concurrentaffair.org/2010/02/25/presentation-testing-concurrent-programs-a-7-minute-jargon-free-introduction/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/02/25/presentation-testing-concurrent-programs-a-7-minute-jargon-free-introduction/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Presentation: Mint: A Multi-stage Extension of Java</title>
		<link>http://www.concurrentaffair.org/2010/02/08/presentation-mint-a-multi-stage-extension-of-java/</link>
		<comments>http://www.concurrentaffair.org/2010/02/08/presentation-mint-a-multi-stage-extension-of-java/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 20:27:21 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Mint]]></category>
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=1546</guid>
		<description><![CDATA[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 way of generating code at &#8230; <a href="http://www.concurrentaffair.org/2010/02/08/presentation-mint-a-multi-stage-extension-of-java/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/02/08/presentation-mint-a-multi-stage-extension-of-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Paper: Mint: Java Multi-stage Programming Using Weak Separability</title>
		<link>http://www.concurrentaffair.org/2010/01/31/paper-mint-java-multi-stage-programming-using-weak-separability/</link>
		<comments>http://www.concurrentaffair.org/2010/01/31/paper-mint-java-multi-stage-programming-using-weak-separability/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 01:21:58 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Mint]]></category>
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=1523</guid>
		<description><![CDATA[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 functional setting, it has been shown how &#8230; <a href="http://www.concurrentaffair.org/2010/01/31/paper-mint-java-multi-stage-programming-using-weak-separability/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/01/31/paper-mint-java-multi-stage-programming-using-weak-separability/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Paper: Test-First Java Concurrency for the Classroom</title>
		<link>http://www.concurrentaffair.org/2009/10/24/paper-test-first-java-concurrency-for-the-classroom/</link>
		<comments>http://www.concurrentaffair.org/2009/10/24/paper-test-first-java-concurrency-for-the-classroom/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 20:47:27 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Concurrent Unit Testing]]></category>
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=1273</guid>
		<description><![CDATA[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 interfaces (GUIs). To prepare students &#8230; <a href="http://www.concurrentaffair.org/2009/10/24/paper-test-first-java-concurrency-for-the-classroom/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2009/10/24/paper-test-first-java-concurrency-for-the-classroom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation: ConcJUnit: Unit Testing for Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2009/08/29/presentation-concjunit-unit-testing-for-concurrent-programs-2/</link>
		<comments>http://www.concurrentaffair.org/2009/08/29/presentation-concjunit-unit-testing-for-concurrent-programs-2/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 06:06:07 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Concurrent Unit Testing]]></category>
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=994</guid>
		<description><![CDATA[ConcJUnit: Unit Testing for Concurrent Programs... <a href="http://www.concurrentaffair.org/2009/08/29/presentation-concjunit-unit-testing-for-concurrent-programs-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2009/08/29/presentation-concjunit-unit-testing-for-concurrent-programs-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Presentation: ConcJUnit: Unit Testing for Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2009/08/24/presentation-concjunit-unit-testing-for-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2009/08/24/presentation-concjunit-unit-testing-for-concurrent-programs/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 18:41:38 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Concurrent Unit Testing]]></category>
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=989</guid>
		<description><![CDATA[ConcJUnit: Unit Testing for Concurrent Programs... <a href="http://www.concurrentaffair.org/2009/08/24/presentation-concjunit-unit-testing-for-concurrent-programs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2009/08/24/presentation-concjunit-unit-testing-for-concurrent-programs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tech Report: Multi-stage Programming for Mainstream Languages (TR09-02)</title>
		<link>http://www.concurrentaffair.org/2009/07/14/tr09-02/</link>
		<comments>http://www.concurrentaffair.org/2009/07/14/tr09-02/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 20:39:51 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Mint]]></category>
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=923</guid>
		<description><![CDATA[Multi-stage Programming for Mainstream Language... <a href="http://www.concurrentaffair.org/2009/07/14/tr09-02/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2009/07/14/tr09-02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paper: ConcJUnit: Unit Testing for Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2009/06/05/paper-concjunit-unit-testing-for-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2009/06/05/paper-concjunit-unit-testing-for-concurrent-programs/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 20:33:08 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=918</guid>
		<description><![CDATA[ConcJUnit: Unit Testing for Concurrent Programs... <a href="http://www.concurrentaffair.org/2009/06/05/paper-concjunit-unit-testing-for-concurrent-programs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2009/06/05/paper-concjunit-unit-testing-for-concurrent-programs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Book: A Framework for Concurrent Unit Testing: Concutest</title>
		<link>http://www.concurrentaffair.org/2009/05/24/book-a-framework-for-concurrent-unit-testing-concutest/</link>
		<comments>http://www.concurrentaffair.org/2009/05/24/book-a-framework-for-concurrent-unit-testing-concutest/#comments</comments>
		<pubDate>Sun, 24 May 2009 22:43:13 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Concurrent Unit Testing]]></category>
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=935</guid>
		<description><![CDATA[A Framework for Testing Concurrent Programs: Co... <a href="http://www.concurrentaffair.org/2009/05/24/book-a-framework-for-concurrent-unit-testing-concutest/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2009/05/24/book-a-framework-for-concurrent-unit-testing-concutest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

