<?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/"
	>

<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>Blog about Mathias' work and play.</description>
	<pubDate>Sat, 27 Jun 2009 07:47:01 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Presentation: Java Annotations for Types and Expressions</title>
		<link>http://www.concurrentaffair.org/2008/10/24/presentation-java-annotations-for-types-and-expressions/</link>
		<comments>http://www.concurrentaffair.org/2008/10/24/presentation-java-annotations-for-types-and-expressions/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 16:00:54 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=692</guid>
		<description><![CDATA[<p>Java Annotations for Types and Expressions</p>
]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/10/24/presentation-java-annotations-for-types-and-expressions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Poster: Invariant Specification and Multi-Staging using Java Annotations</title>
		<link>http://www.concurrentaffair.org/2008/10/16/poster-invariant-specification-and-multi-staging-using-java-annotations/</link>
		<comments>http://www.concurrentaffair.org/2008/10/16/poster-invariant-specification-and-multi-staging-using-java-annotations/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 18:00:20 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=747</guid>
		<description><![CDATA[<p>Invariant Specification and Multi-Staging using Java Annotations</p>
]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/10/16/poster-invariant-specification-and-multi-staging-using-java-annotations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Presentation: Java Annotations for Invariant Specification</title>
		<link>http://www.concurrentaffair.org/2008/09/22/presentation-java-annotations-for-invariant-specification/</link>
		<comments>http://www.concurrentaffair.org/2008/09/22/presentation-java-annotations-for-invariant-specification/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 16:00:13 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=689</guid>
		<description><![CDATA[<p>Java Annotations for Invariant Specification</p>
]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/09/22/presentation-java-annotations-for-invariant-specification/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Thesis: A Framework for Testing Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2007/10/30/thesis-a-framework-for-testing-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2007/10/30/thesis-a-framework-for-testing-concurrent-programs/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 18:00:04 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=738</guid>
		<description><![CDATA[<p>A Framework for Testing Concurrent Programs</p>
]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2007/10/30/thesis-a-framework-for-testing-concurrent-programs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Presentation: Testing Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2007/10/04/presentation-testing-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2007/10/04/presentation-testing-concurrent-programs/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 17:00:00 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=700</guid>
		<description><![CDATA[<p>Testing Concurrent Programs</p>
]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2007/10/04/presentation-testing-concurrent-programs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Presentation: A Framework for Testing Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2007/08/27/presentation-a-framework-for-testing-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2007/08/27/presentation-a-framework-for-testing-concurrent-programs/#comments</comments>
		<pubDate>Mon, 27 Aug 2007 17:00:53 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=702</guid>
		<description><![CDATA[<p>A Framework for Testing Concurrent Programs</p>
]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2007/08/27/presentation-a-framework-for-testing-concurrent-programs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Defense: A Framework for Testing Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2007/06/14/defense-a-framework-for-testing-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2007/06/14/defense-a-framework-for-testing-concurrent-programs/#comments</comments>
		<pubDate>Thu, 14 Jun 2007 18:00:05 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=722</guid>
		<description><![CDATA[<p>A Framework for Testing Concurrent Programs</p>
]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2007/06/14/defense-a-framework-for-testing-concurrent-programs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Poster: Practical Tools for Testing Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2006/10/06/poster-practical-tools-for-testing-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2006/10/06/poster-practical-tools-for-testing-concurrent-programs/#comments</comments>
		<pubDate>Fri, 06 Oct 2006 19:30:52 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=753</guid>
		<description><![CDATA[<p>Practical Tools for Testing Concurrent Programs</p>
]]></description>
			<content:encoded><![CDATA[<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>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2006/10/06/poster-practical-tools-for-testing-concurrent-programs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paper: Programming for Change</title>
		<link>http://www.concurrentaffair.org/2006/06/30/paper-programming-for-change/</link>
		<comments>http://www.concurrentaffair.org/2006/06/30/paper-programming-for-change/#comments</comments>
		<pubDate>Sat, 01 Jul 2006 04:59:11 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=743</guid>
		<description><![CDATA[<p>Programming for Change - Nifty Assignment</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://cnx.org/content/m16219/latest/">Programming for Change - Nifty Assignment</a></p>

<p>OOPSLA 2006 Educators Symposium</p>

<p>The development of any piece of software begins with a set of specifications describing in some detail the problems to be solved. Almost invariably, the specifications change during the development of the software. Trying to anticipate all possible changes and write a program that does everything is a futile undertaking. However, it is not unreasonable to expect that programs be written in such a way that an &#8220;epsilon&#8221; (read &#8220;small&#8221;) change in the specifications will only necessitate a &#8220;delta&#8221; (read &#8220;manageable&#8221;) change in code.</p>

<p>Programming for change is a continual process in which software is designed over many iterations to capture the problem&#8217;s essence and express. At the heart of this process is the effort to identify those elements that can vary (variants) and delineate them from those that do not — the invariants. A properly designed software system should strive to decouple the variants from the invariants in order to facilitate the re-use of the invariants and allow modifications to the variants with minimal perturbation to the existing code.</p>

<p>To illustrate the importance of programming for change to students, we guide them through the development of a program that converts temperature measurements. The assignment consists of a series of small exercises, each of which imposes a small change in the requirements and forces appropriate modifications of the code. To promote code re-use, we apply the Janus Principle and require that the programs must be written in a way that supports multiple distinct user interfaces. For certain specification changes, we ask students to identify the variants and the invariants and make appropriate modifications to the code. In several situations, we require the students to modify their code in more than one way and discuss the pros and cons.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2006/06/30/paper-programming-for-change/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Workshop: Object-Oriented Design Festival</title>
		<link>http://www.concurrentaffair.org/2006/03/01/workshop-object-oriented-design-festival/</link>
		<comments>http://www.concurrentaffair.org/2006/03/01/workshop-object-oriented-design-festival/#comments</comments>
		<pubDate>Thu, 02 Mar 2006 00:00:23 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=741</guid>
		<description><![CDATA[<p>Object-Oriented Design Festival</p>
]]></description>
			<content:encoded><![CDATA[<p>Object-Oriented Design Festival</p>

<p>SIGCSE 2006</p>

<p>Object-oriented (OO) programming begins with analysis and design that produce a model describing the objects in the problem domain,
their relationships, creation and interactions. The workshop covers fundamentals of OO analysis and design such as abstraction, separation of variants from invariabb nts and decoupling of system components, via appropriate applications of composition, inheritance, polymorphism, and design patterns. The workshop will progress from a small design example illustrating the principles to a larger design problem to be solved by small teams of participants. Their solutions will be discussed in terms of design goals and compared against a solution provided by the presenters.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2006/03/01/workshop-object-oriented-design-festival/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Poster: Unit Testing for Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2005/09/20/poster-unit-testing-for-concurrent-programs/</link>
		<comments>http://www.concurrentaffair.org/2005/09/20/poster-unit-testing-for-concurrent-programs/#comments</comments>
		<pubDate>Tue, 20 Sep 2005 20:30:14 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=756</guid>
		<description><![CDATA[<p>Unit Testing for Concurrent Programs</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.concutest.org/download/concutest-poster-2005.pdf">Unit Testing for Concurrent Programs</a></p>

<p>Where: <a href="http://compsci.rice.edu/news.cfm?doc_id=8006">Rice University Computer Science Department, Corporate Affiliates Meeting 2005</a><br />
When: September 20, 2005 and December 5, 2005</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2005/09/20/poster-unit-testing-for-concurrent-programs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Presentation: Design Patterns for Parsing</title>
		<link>http://www.concurrentaffair.org/2005/02/27/presentation-design-patterns-for-parsing/</link>
		<comments>http://www.concurrentaffair.org/2005/02/27/presentation-design-patterns-for-parsing/#comments</comments>
		<pubDate>Sun, 27 Feb 2005 16:00:47 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=704</guid>
		<description><![CDATA[<p>Design Patterns for Parsing</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/dp4rdp/dp4rdp.ppt">Design Patterns for Parsing</a></p>

<p>Where: SIGCSE 2005<br />
When: February 27, 2005</p>

<p>We provide a systematic transformation of an LL(1) grammar to an object model that consists of</p>

<ul>
    <li>an object structure representing the non-terminal symbols and their corresponding grammar production rules,</li>
    <li>a union of classes representing the terminal symbols (tokens).</li>
</ul>

<p>We present a variant form of the visitor pattern and apply it to the above union of token classes to model a predictive recursive descent parser on the given grammar. Parsing a non-terminal is represented by a visitor to the tokens. For non-terminals that have more than one production rule, the corresponding visitors are chained together according to the chain of responsibility pattern in order to be processed correctly by a valid token. The abstract factory pattern, where each concrete factory corresponds to a non-terminal symbol, is used to manufacture appropriate parsing visitors.</p>

<p>Our object-oriented formulation for predictive recursive descent parsing eliminates the traditional construction of the predictive parsing table and yields a parser that is declarative and has minimal conditionals. It not only serves to teach standard techniques in parsing but also as a non-trivial exercise of object modeling for objects-first introductory courses.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2005/02/27/presentation-design-patterns-for-parsing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paper: Automatic Ad Blocking: Improving AdBlock for the Mozilla Platform</title>
		<link>http://www.concurrentaffair.org/2004/12/07/paper-automatic-ad-blocking-improving-adblock-for-the-mozilla-platform/</link>
		<comments>http://www.concurrentaffair.org/2004/12/07/paper-automatic-ad-blocking-improving-adblock-for-the-mozilla-platform/#comments</comments>
		<pubDate>Tue, 07 Dec 2004 17:00:37 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=768</guid>
		<description><![CDATA[<p>Automatic Ad Blocking: Improving AdBlock for the Mozilla Platform</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.superscalar.org/writing/Automatic%20Ad%20Blocking.pdf">Automatic Ad Blocking: Improving AdBlock for the Mozilla Platform</a></p>

<p>With: Justin Crites<br />
Where: Rice University, COMP 527 Computer Systems Security<br />
When: December 7, 2004</p>

<p>Advertising on the world wide web is increasingly becoming problematic.  In addition to merely being a nuisance, advertisements may also pose a threat to user security.  Blocking web advertisements can thus substantially improve the user’s browsing experience.</p>

<p>AdBlock is an open-source plugin for Mozilla browsers that uses regular expressions, an advanced concept unfamiliar to novice users, to block a limited number of HTML elements.  This paper describes some of AdBlock’s shortcomings and the remedies we implemented: automatically generating regular expressions, allowing for web updates, and vastly extending the set of blockable elements.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2004/12/07/paper-automatic-ad-blocking-improving-adblock-for-the-mozilla-platform/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paper: Design Patterns for Parsing</title>
		<link>http://www.concurrentaffair.org/2004/11/09/paper-design-patterns-for-parsing/</link>
		<comments>http://www.concurrentaffair.org/2004/11/09/paper-design-patterns-for-parsing/#comments</comments>
		<pubDate>Tue, 09 Nov 2004 17:15:44 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=734</guid>
		<description><![CDATA[<p>Design Patterns for Parsing</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/dp4rdp/p293-nguyen.pdf">Design Patterns for Parsing</a></p>

<p>SIGCSE 2005</p>

<p>We provide a systematic transformation of an LL(1) grammar to an object model that consists of</p>

<ul>
    <li>an object structure representing the non-terminal symbols and their corresponding grammar production rules,</li>
    <li>a union of classes representing the terminal symbols (tokens).</li>
</ul>

<p>We present a variant form of the visitor pattern and apply it to the above union of token classes to model a predictive recursive descent parser on the given grammar.  Parsing a non-terminal is represented by a visitor to the tokens.  For non-terminals that have more than one production rule, the corresponding visitors are chained together according to the chain of responsibility pattern in order to be processed correctly by a valid token.  The abstract factory pattern, where each concrete factory corresponds to a non-terminal symbol, is used to manufacture appropriate parsing visitors.</p>

<p>Our object-oriented formulation for predictive recursive descent parsing eliminates the traditional construction of the predictive parsing table and yields a parser that is declarative and has minimal conditionals.  It not only serves to teach standard techniques in parsing but also as a non-trivial exercise of object modeling for objects-first introductory courses.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2004/11/09/paper-design-patterns-for-parsing/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Presentation: Marine Biology Simulation - Nifty Assignment</title>
		<link>http://www.concurrentaffair.org/2004/10/25/presentation-marine-biology-simulation-nifty-assignment/</link>
		<comments>http://www.concurrentaffair.org/2004/10/25/presentation-marine-biology-simulation-nifty-assignment/#comments</comments>
		<pubDate>Mon, 25 Oct 2004 06:30:08 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=708</guid>
		<description><![CDATA[<p>Marine Biology Simulation - Nifty Assignment</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/a4obj1st/OOPSLA04%20Presentation.ppt">Marine Biology Simulation - Nifty Assignment</a></p>

<p>Where: OOPSLA 2004 Educators Symposium<br />
When: October 25, 2004</p>

<p>The Marine Biology Simulation is designed as a final project in an objects-first CS2 course.  It provides an entertaining setting that serves as compelling example of the powers of object-oriented design and programming.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2004/10/25/presentation-marine-biology-simulation-nifty-assignment/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Poster: Unit Testing for Concurrent Programs</title>
		<link>http://www.concurrentaffair.org/2004/10/18/poster-unit-testing-for-concurrent-programs-2/</link>
		<comments>http://www.concurrentaffair.org/2004/10/18/poster-unit-testing-for-concurrent-programs-2/#comments</comments>
		<pubDate>Mon, 18 Oct 2004 20:00:54 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=758</guid>
		<description><![CDATA[<p>Unit Testing for Concurrent Programs</p>

<p>Where: ...</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.concutest.org/download/concutest-poster.pdf">Unit Testing for Concurrent Programs</a></p>

<p>Where: <a href="http://cohesion.rice.edu/engineering/computerscience/news.cfm?doc_id=5374">Rice University Computer Science Department, Corporate Affiliates Meeting 2004</a><br />
When: October 18, 2004</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2004/10/18/poster-unit-testing-for-concurrent-programs-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paper: Assignments for an Objects-First Introductory Computer Science Curriculum</title>
		<link>http://www.concurrentaffair.org/2004/09/10/paper-assignments-for-an-objects-first-introductory-computer-science-curriculum/</link>
		<comments>http://www.concurrentaffair.org/2004/09/10/paper-assignments-for-an-objects-first-introductory-computer-science-curriculum/#comments</comments>
		<pubDate>Sat, 11 Sep 2004 04:59:08 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=727</guid>
		<description><![CDATA[<p>Assignments for an Objects-First Introductory Computer Science Curriculum</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/a4obj1st/a4obj1st.pdf">Assignments for an Objects-First Introductory Computer Science Curriculum</a></p>

<p>Designing an effective curriculum to teach programming and software engineering to beginning students is challenging.  An objects-first course prepares students in an excellent way for the requirements in industry and academia by focusing on program design, thereby enabling students to write correct, robust, flexible, and extensible software.  This paper outlines the effects of an object-oriented approach on software quality and describes five assignments that can be used as teaching tools in an objects-first course to evaluate and reinforce the students’ understanding.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2004/09/10/paper-assignments-for-an-objects-first-introductory-computer-science-curriculum/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paper: Abstract Factories and the Shape Calculator - Nifty Assignment</title>
		<link>http://www.concurrentaffair.org/2004/08/31/paper-abstract-factories-and-the-shape-calculator-nifty-assignment/</link>
		<comments>http://www.concurrentaffair.org/2004/08/31/paper-abstract-factories-and-the-shape-calculator-nifty-assignment/#comments</comments>
		<pubDate>Tue, 31 Aug 2004 12:49:52 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=729</guid>
		<description><![CDATA[<p>Abstract Factories and the Shape Calculator - Nifty Assignment</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/a4obj1st/ed-s07-cheng.pdf">Abstract Factories and the Shape Calculator - Nifty Assignment</a></p>

<p>OOPSLA 2004 Educators Symposium</p>

<p>The Shape Calculator is an assignment targeted at CS1 students in an objects-first curriculum.  It can serve as a powerful yet entertaining example of the advantages of object-orientation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2004/08/31/paper-abstract-factories-and-the-shape-calculator-nifty-assignment/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Paper: Marine Biology Simulation - Nifty Assignment</title>
		<link>http://www.concurrentaffair.org/2004/08/31/paper-marine-biology-simulation-nifty-assignment/</link>
		<comments>http://www.concurrentaffair.org/2004/08/31/paper-marine-biology-simulation-nifty-assignment/#comments</comments>
		<pubDate>Tue, 31 Aug 2004 12:42:39 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=731</guid>
		<description><![CDATA[<p>Marine Biology Simulation - Nifty Assignment</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/a4obj1st/ed-s10-cheng.pdf">Marine Biology Simulation - Nifty Assignment</a></p>

<p>OOPSLA 2004 Educators Symposium</p>

<p>The Marine Biology Simulation is designed as a final project in an objects-first CS2 course.  It provides an entertaining setting that serves as compelling example of the powers of object-oriented design and programming.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2004/08/31/paper-marine-biology-simulation-nifty-assignment/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Presentation: TeachJava - Rice Marine Biology Simulation - Milestone 2</title>
		<link>http://www.concurrentaffair.org/2004/06/25/presentation-teachjava-rice-marine-biology-simulation-milestone-2/</link>
		<comments>http://www.concurrentaffair.org/2004/06/25/presentation-teachjava-rice-marine-biology-simulation-milestone-2/#comments</comments>
		<pubDate>Fri, 25 Jun 2004 18:00:25 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
		
		<category><![CDATA[Publications]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=719</guid>
		<description><![CDATA[<p>TeachJava - Rice Marine Biology Simulation - Milestone 2</p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cs.rice.edu/~mgricken/research/a4obj1st/tchjava/TeachJava%20Presentation%20-%20Assignment%202%20-%20Mathias%20Ricken%20-%20public.ppt">TeachJava - Rice Marine Biology Simulation - Milestone 2</a></p>

<p>Where: Rice University Computer Science Department, TeachJava<br />
When: June 25, 2004 and July 1, 2005</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2004/06/25/presentation-teachjava-rice-marine-biology-simulation-milestone-2/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
