<?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; COMP202</title>
	<atom:link href="http://www.concurrentaffair.org/category/teaching/comp202/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.concurrentaffair.org</link>
	<description>a blog about Mathias&#039; work and play.</description>
	<lastBuildDate>Tue, 07 Feb 2012 07:11:31 +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>COMP 202 Links for Previous Semesters</title>
		<link>http://www.concurrentaffair.org/2010/08/05/comp-202-links-for-previous-semesters/</link>
		<comments>http://www.concurrentaffair.org/2010/08/05/comp-202-links-for-previous-semesters/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 19:41:29 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[COMP202]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=2085</guid>
		<description><![CDATA[Dung Nguyen noticed that the links for previous semesters that I have on my Fall 2008 COMP 202 page all lead back to my own page. I looked at the HTML source, and I do redirect to Owlnet, where the &#8230; <a href="http://www.concurrentaffair.org/2010/08/05/comp-202-links-for-previous-semesters/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dung Nguyen noticed that the links for previous semesters that I have on my <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/resources.shtml">Fall 2008 COMP 202 page</a> all lead back to my own page.</p>

<p>I looked at the HTML source, and I do redirect to Owlnet, where the COMP 202 page used to be. For Fall 2007, for example, I link to <a href="http://www.owlnet.rice.edu/~comp202/04-fall">http://www.owlnet.rice.edu/~comp202/04-fall</a>. Something must have happened to the website on Owlnet. I tried to log in, but the SSH password that I have for comp202 does not work anymore. Neither did my comp212 password.</p>

<p>When I logged in with mgricken, though, I was able to see that the comp202 page has been redirected to <a href="http://www.clear.rice.edu/">CLEAR</a> at <a href="http://www.clear.rice.edu/comp202">http://www.clear.rice.edu/comp202</a> regardless of what actual page was being requested from Owlnet. For example, <a href="http://www.owlnet.rice.edu/~comp202">http://www.owlnet.rice.edu/~comp202</a> was being redirected to <a href="http://www.clear.rice.edu/comp202">http://www.clear.rice.edu/comp202</a>, which is what I wanted, but <a href="http://www.owlnet.rice.edu/~comp202/04-fall">http://www.owlnet.rice.edu/~comp202/04-fall</a> was being redirected to the same place.</p>

<p>Once I had figured out how to log into CLEAR, I could see that the CLEAR page at <a href="http://www.clear.rice.edu/comp202">http://www.clear.rice.edu/comp202</a> redirects to <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall">my page</a>&#8230; And that&#8217;s why all roads lead to me :-)</p>

<p>As a simple fix, I just changed my links to point to the right pages on CLEAR, e.g. to <a href="http://www.clear.rice.edu/comp202/04-fall">http://www.clear.rice.edu/comp202/04-fall</a>.</p>

<p>I think we should also edit the redirection, which IT must have put in place without talking to us, and make it work as it should. If we don&#8217;t, then links that we may have elsewhere and that point to Owlnet don&#8217;t working either.</p>

<p>The web is a rather transient place. There really is no point to put up an <a href="http://www.cs.utah.edu/~gk/atwork/">&#8220;under construction&#8221; sign</a>, because any website always is under construction.</p>

<p><strong>Update</strong></p>

<p>Changing the <a href="http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirectmatch"><tt>.htaccess</tt></a> file to</p>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RedirectMatch ^/~comp202/(.*)$ http://www.clear.rice.edu/comp202/$1</div></td></tr></tbody></table></div>

<p>should do the trick.</p>

<p><strong>Update</strong></p>

<p>IT set up the redirection according to my suggestion now. Requests for Owlnet pages are now redirected to the corresponding CLEAR page. Try it:</p>

<p><a href="http://www.owlnet.rice.edu/~comp202/06-fall">http://www.owlnet.rice.edu/~comp202/06-fall</a> now redirects properly to <a href="http://www.clear.rice.edu/comp202/06-fall/">http://www.clear.rice.edu/comp202/06-fall/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2010/08/05/comp-202-links-for-previous-semesters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Merry Christmas</title>
		<link>http://www.concurrentaffair.org/2008/12/23/merry-christmas/</link>
		<comments>http://www.concurrentaffair.org/2008/12/23/merry-christmas/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 17:25:21 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[COMP202]]></category>
		<category><![CDATA[COMP402]]></category>
		<category><![CDATA[DrJava]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=848</guid>
		<description><![CDATA[This semester is now over, I have submitted the... <a href="http://www.concurrentaffair.org/2008/12/23/merry-christmas/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This semester is now over, I have submitted the final grades for the <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/">COMP 202</a> class that I taught this semester. I&#8217;m sure I&#8217;ll always fondly look back to this opportunity. Now I&#8217;m waiting for <em>my</em> grades, of course: for the instructor evaluations.</p>

<p>We had an <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/hw/games/tournament/">Othello tournament</a> again, and it was great fun. Some of the games were really close, even though one strategy won all games.</p>

<p>Now I&#8217;m working on the lecture schedule and the homework for the <a href="http://www.cs.rice.edu/~mgricken/teaching/402/09-spring/">COMP 402 &#8211; Production Programming</a> class for next semester.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/12/23/merry-christmas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ANTLRWorks and OpenJDK Compiler Grammar</title>
		<link>http://www.concurrentaffair.org/2008/11/18/antlrworks-and-openjdk-compiler-grammar/</link>
		<comments>http://www.concurrentaffair.org/2008/11/18/antlrworks-and-openjdk-compiler-grammar/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 05:19:18 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[COMP202]]></category>
		<category><![CDATA[DrJava]]></category>
		<category><![CDATA[Pictures]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[xajavac]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=840</guid>
		<description><![CDATA[Now that my qualifying exam is behind me, I've ... <a href="http://www.concurrentaffair.org/2008/11/18/antlrworks-and-openjdk-compiler-grammar/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Now that my qualifying exam is behind me, I&#8217;ve got more time to focus on other things. I have to admit that the exam pretty much occupied all of my thoughts and hogged lots of time, to the degree that I didn&#8217;t prepare as well as I used to for my COMP 202 class. I think that has changed again now.</p>

<p>I&#8217;m also starting to look at the Java multi-stage programming project again, and I discovered that the <a href="http://openjdk.java.net/">OpenJDK</a> people have added a <a href="http://openjdk.java.net/projects/compiler-grammar/">Compiler Grammar</a> project. This project is trying to replace the hand-coded parser for javac by a parser generated from an <a href="http://www.antlr.org/">ANTLR</a> grammar file. I haven&#8217;t fully checked how far this has progressed, but it is interesting. Modifying the grammar to allow annotations on statements and expressions should be easier than rewriting the interpreter by hand. It seems like there is a Java 5 grammar that integrates into javac, but of course there is no <a href="http://groups.csail.mit.edu/pag/jsr308/">JSR 308</a> grammar, so I&#8217;d have to develop that first.</p>

<p>When I looked at ANTLR and the Compiler Grammar project, I also noticed an interesting IDE that has been built to make developing grammars easier: <a href="http://www.antlr.org/works/index.html">ANTLRWorks</a>. It integrates a several checking tools and a debugger and looks tremendously helpful. For example, it can explain how a grammar is ambiguous. In my case, an annotation on a parenthetical expression could be parsed in two different ways, so I&#8217;ll have to be careful there.</p>

<div id="attachment_841" class="wp-caption alignnone" style="width: 310px"><a href="http://www.concurrentaffair.org/wp-content/uploads/2008/11/ambiguouspath.jpg"><img src="http://www.concurrentaffair.org/wp-content/uploads/2008/11/ambiguouspath-300x210.jpg" alt="ANTLR Ambiguous Path Visualization" title="ambiguouspath" width="300" height="210" class="size-medium wp-image-841" /></a><p class="wp-caption-text">ANTLR Ambiguous Path Visualization</p></div>

<p>On MacOS, I&#8217;m still struggling a bit to get the Compiler Grammar project and ANTLRWorks running. It seems like Compiler Grammar needs <a href="http://landonf.bikemonkey.org/static/soylatte/">SoyLatte</a> to work, and I have managed to build the Compiler Grammar javac from the command line, but when I try to run it inside ANTLRWorks, then it seems like it is using the default Apple Java version 1.6.0-dp, which doesn&#8217;t work. Maybe I&#8217;ll take a look at it on Windows first.</p>

<p>I also need to start thinking about the COMP 202 final exam, and about a lecture schedule and programming tasks for COMP 402 next semester.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/11/18/antlrworks-and-openjdk-compiler-grammar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SourceForge Subversion Problems</title>
		<link>http://www.concurrentaffair.org/2008/11/07/sourceforge-subversion-problems/</link>
		<comments>http://www.concurrentaffair.org/2008/11/07/sourceforge-subversion-problems/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 18:32:28 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[COMP202]]></category>
		<category><![CDATA[DrJava]]></category>
		<category><![CDATA[Pictures]]></category>
		<category><![CDATA[Ramblings]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=821</guid>
		<description><![CDATA[Corky and I are having problems on the CSnet ma... <a href="http://www.concurrentaffair.org/2008/11/07/sourceforge-subversion-problems/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Corky and I are having problems on the CSnet machines when we are trying to check source out from Subversion:</p>

<p><pre>% svn co https://drjava.svn.sourceforge.net/svnroot/drjava/trunk/drjava
svn: PROPFIND request failed on '/svnroot/drjava/!svn/vcc/default'
svn: PROPFIND of '/svnroot/drjava/!svn/vcc/default': SSL negotiation failed:
SSL error: decryption failed or bad record mac (https://drjava.svn.sourceforge.net)</pre></p>

<p>Has anyone else encountered this? I can&#8217;t find any useful search results. However, when I do a checkout with http instead of https, it works (although I haven&#8217;t attempted to commit anything):</p>

<p><pre>% svn co http://drjava.svn.sourceforge.net/svnroot/drjava/trunk/drjava
A    drjava/strip-license
A    drjava/LICENSE
...</pre></p>

<p>Any advice is appreciated. I&#8217;m starting to think this is a SourceForge issue again, because I have been finding a <a href="https://sourceforge.net/tracker2/index.php?func=detail&#038;aid=2234027&#038;group_id=1&#038;atid=200001">handful of</a> <a href="https://sourceforge.net/tracker2/index.php?func=detail&#038;aid=2233259&#038;group_id=1&#038;atid=200001">SSL issues</a>.</p>

<p>Judging by my experience in the last few months and all the support requests (&#8220;We&#8217;ve been making some changes, try again &#42;request closed&#42;&#8221;), SourceForge has turned into a steaming bucket of excrement. Someone please flush.</p>

<p>I do have some new pictures from today&#8217;s lecture about <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/lectures/parsing2/">parsing and the extended visitor pattern</a>, though. Explaining the extended visitor pattern with all the type parameters is more difficult than I thought. I&#8217;ve decided to spend another day on it.</p>


<a href='http://www.concurrentaffair.org/2008/11/07/sourceforge-subversion-problems/2008-11-07-lec29-01/' title='2008-11-07-lec29-01'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2008/11/2008-11-07-lec29-01-150x150.jpg" class="attachment-thumbnail" alt="2008-11-07-lec29-01" title="2008-11-07-lec29-01" /></a>
<a href='http://www.concurrentaffair.org/2008/11/07/sourceforge-subversion-problems/2008-11-07-lec29-02/' title='2008-11-07-lec29-02'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2008/11/2008-11-07-lec29-02-150x150.jpg" class="attachment-thumbnail" alt="2008-11-07-lec29-02" title="2008-11-07-lec29-02" /></a>
<a href='http://www.concurrentaffair.org/2008/11/07/sourceforge-subversion-problems/2008-11-07-lec29-03/' title='2008-11-07-lec29-03'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2008/11/2008-11-07-lec29-03-150x150.jpg" class="attachment-thumbnail" alt="2008-11-07-lec29-03" title="2008-11-07-lec29-03" /></a>
<a href='http://www.concurrentaffair.org/2008/11/07/sourceforge-subversion-problems/2008-11-07-lec29-04/' title='2008-11-07-lec29-04'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2008/11/2008-11-07-lec29-04-150x150.jpg" class="attachment-thumbnail" alt="2008-11-07-lec29-04" title="2008-11-07-lec29-04" /></a>
<a href='http://www.concurrentaffair.org/2008/11/07/sourceforge-subversion-problems/2008-11-07-lec29-06/' title='2008-11-07-lec29-06'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2008/11/2008-11-07-lec29-06-150x150.jpg" class="attachment-thumbnail" alt="2008-11-07-lec29-06" title="2008-11-07-lec29-06" /></a>


<p><b>Update</b></p>

<p>It turned out that an upgrade to the latest OpenSSL and Subversion software on our side took care of the problem. I figured that would be a more sensible first attempt, rather than <em>downgrading</em> to an ancient version of OpenSSL, which is what SourceForge recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/11/07/sourceforge-subversion-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Academia.edu and Publications Category</title>
		<link>http://www.concurrentaffair.org/2008/11/03/academiaedu-and-publications-category/</link>
		<comments>http://www.concurrentaffair.org/2008/11/03/academiaedu-and-publications-category/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 06:10:59 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[COMP202]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=771</guid>
		<description><![CDATA[A few days ago, I got an email from Academia.ed... <a href="http://www.concurrentaffair.org/2008/11/03/academiaedu-and-publications-category/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A few days ago, I got an email from <a href="http://rice.academia.edu/MathiasGuenterRicken">Academia.edu</a>, which seems to be something like Facebook for people in academia. It&#8217;s a tree of universities, departments, faculty members and students. I originally wasn&#8217;t too interested in it, but decided to fill out <a href="http://rice.academia.edu/MathiasGuenterRicken">my profile</a> anyway.</p>

<p>There are profile pages that allow you to upload <a href="http://rice.academia.edu/MathiasGuenterRicken/Papers">papers</a>, <a href="http://rice.academia.edu/MathiasGuenterRicken/Talks">presentations</a>, declare research interests and describe your <a href="http://rice.academia.edu/MathiasGuenterRicken/Teaching">teaching experience</a>, so I did that. The documents are uploaded as &#8220;iPaper&#8221;, and honestly, the preview still needs improvement. Right now, this part of the website is a bit annoying, as are most parts that use the AJAX &#8220;Web 2.0&#8243; style of editing (not reloading the entire page).</p>

<p>So, right now I wouldn&#8217;t use <a href="http://rice.academia.edu/MathiasGuenterRicken">Academia.edu</a> to find material or people, but apparently it has a really high Google PageRank, and therefore a lot of weight for links. It seems like it has given <a href="http://www.cs.rice.edu/~mgricken/">my own website</a> a considerable bump. I think it can be quite beneficial simply from the point of view of publicity.</p>

<p>The website also has an interesting feature that records what Google search terms lead web surfers to your Academia.edu profile. Here are the keywords that lead people to me &#8212; the actual things that they typed into Google:</p>

<ul>
    <li>converting to a new temperature scale</li>
    <li>junit concurrent test</li>
    <li>conclusion on marine biology</li>
    <li>how to calculate the complexity of a given code using big o notation with exercise and solutions</li>
    <li>design pattern parser</li>
    <li>change in temperature calculations</li>
    <li>In java, show an example of a conversion from celsius to Fahrenheit temperature</li>
    <li>parsing design pattern </li>
</ul>

<p>Apparently, temperature conversion is a very popular assignment, and my <a href="http://www.cs.rice.edu/~mgricken/research/tempcalc/index.shtml">Temperature Calculator</a> comes up quite often. I&#8217;m also amused by the fact that people type whole questions or requests into Google. &#8220;Google, please tell me why they do that. Thanks, bye.&#8221;</p>

<p>Additionally, Academia.edu has inspired me to collect all my papers, presentations and posters in one place, and I&#8217;ve created the <a href="http://www.concurrentaffair.org/category/publications/">Publications</a> category. In that category, I have inserted my publications, both refereed and unrefereed, on the day they were made available. Because of that, the calendar of my blog now stretches back to 2003.</p>

<p>I decided to use a category on this blog mainly because now there is an <a href="http://www.concurrentaffair.org/category/publications/feed/">RSS feed for my publications</a>, and interested readers can easily subscribe and be notified of new material. On my <a href="http://www.cs.rice.edu/~mgricken/">non-blog work website</a>, I have also added a <a href="http://www.cs.rice.edu/~mgricken/pubs.shtml">publications page</a>, both <a href="http://www.cs.rice.edu/~mgricken/pubs.expanded.shtml">with long descriptions</a> and <a href="http://www.cs.rice.edu/~mgricken/pubs.shtml">without</a>.</p>

<p>Finally, I&#8217;ve added an extra credit part to the <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/">COMP 202</a> schedule, worth 20 points which will be counted towards the midterm. It&#8217;s hard to believe that only five weeks are left in the semester. Two thirds are done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/11/03/academiaedu-and-publications-category/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symphony and Exams</title>
		<link>http://www.concurrentaffair.org/2008/10/20/symphony-and-exams/</link>
		<comments>http://www.concurrentaffair.org/2008/10/20/symphony-and-exams/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 20:18:51 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[COMP202]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Teaching]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=645</guid>
		<description><![CDATA[Yesterday, I finally went to the first symphony... <a href="http://www.concurrentaffair.org/2008/10/20/symphony-and-exams/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I finally went to the first symphony concert of my subscription. Originally, I was supposed to have gone to a concert over a month ago already, but it was the night that hurricane Ike hit, so I rescheduled it. The new concert was yesterday afternoon, Beethoven 2 and Tchaikovsky&#8217;s Rococo.</p>

<p>Beethoven, of course, was fantastic. The cello solist, 25-year-old Alisa Wellerstein, was also very good, although I typically enjoy the entire orchestra more than solists. Therefore, I didn&#8217;t like Tchaikovsky as much as Beethoven&#8217;s 2nd Symphony. The first of the smaller pieces, &#8220;Adagio con Variationi&#8221; for cello and orchestra by Respighi was just amazing. Instantly I knew again why I am going to symphony concerts. Here, the interplay between the cello solo and the orchestra was perfect. Finally, Debussy&#8217;s &#8220;La Mer&#8221; was impressive as well.</p>

<p>In a few minutes I will hand out and proctor the COMP 202 midterm. Early today a student told me that he is sick and may not be able to take the exam. I said I will write a make-up exam and schedule a new time for him to take it. I spent the early afternoon writing a second midterm, but now it appears he feels better. If he does take the exam and I end up not needing the make-up exam<sup><a href="#footnote-1-645" id="footnote-link-1-645" title="See the footnote.">1</a></sup>, I will probably just use the questions for the final.</p>

<p>On Wednesday I&#8217;ll be pulling double duty when it comes to teaching, as Corky has asked me to sub in for him in his COMP 311 class.</p>
<br />Footnotes:<br /><ol class="footnotes"><li id="footnote-1-645"> He ended up not taking the exam, so I need the make-up exam.   [<a href="#footnote-link-1-645">back</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/10/20/symphony-and-exams/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two Weeks, Gone With The Wind</title>
		<link>http://www.concurrentaffair.org/2008/09/17/two-weeks-gone-with-the-wind/</link>
		<comments>http://www.concurrentaffair.org/2008/09/17/two-weeks-gone-with-the-wind/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 02:08:51 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=589</guid>
		<description><![CDATA[It's hard to believe that two weeks have truly ... <a href="http://www.concurrentaffair.org/2008/09/17/two-weeks-gone-with-the-wind/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s hard to believe that two weeks have truly passed since I last wrote. That&#8217;s two weekends, four lectures and one lab I&#8217;ve given, a small conference, and one big storm.</p>

<p>On Friday, September 5, I talked about generics and wildcards in my COMP 202 lecture. In the end, I unfortunately had a problem describing lower-bound wildcards. I couldn&#8217;t show the contravariant relationship. I corrected that on Monday. I noticed that there&#8217;s a big difference between being able to use wildcards and being able to clearly explain them.</p>

<p>Right after the COMP 617 seminar, Walid, Hashim, Jun, Cherif, Angela and I left for Abilene, TX to attend the <a href="http://itc.acu.edu/mepls/">Middle Earth Programming Languages Seminar</a>. Walid did most of the seven-hour drive in both directions, but I somehow ended up doing most of the navigating, even though I was sitting in the left third-row seat. That sometimes made it hard to hear. Next time, if I navigate, I&#8217;ll want to sit closer. I also had some trouble with my allergies and my contacts during the trip &#8212; my eyes were getting really dry towards the end of the trip, but all in all the trip was fun. On Friday night, we watched a production of <a href="http://www.acu.edu/academics/cas/theatre/productions/season0809/moonlight.html">&#8220;Moonlight and Magnolias&#8221;</a> at Abilene Christian University, and it was simply amazing. That&#8217;s one of the reasons why &#8220;Gone With The Wind&#8221; is in the title of this post.</p>

<p>The trip, and returning just before midnight on Saturday, did take a bit of energy out of me, though, so I had a hard time to get my part of COMP 202 homework #1 graded. Fortunately, the grading went well, thanks to our TA. On Monday, I corrected my mistake about wildcards from Friday, and then started talking about generic lists and algorithms on them.</p>

<p>We also had a lab on Monday so we could help the students with the GUI side of the Hangman game. Our TA was there, but I was a little disappointed about his knowledge of the assignment and Java. Dr. Wong and I plan to get him more involved and ultimately responsible for teaching the labs (as it should be), but this will be difficult.</p>

<p>On Wednesday, we finished talking about lists, and then started using some operations, like getting the first, removing the first, removing the rest, and removing the last <em>x</em> elements of a list to discuss how expensive these operations were. I didn&#8217;t quite introduce big-oh notation yet, but we generalized the number of operations to lists of length <em>n</em>. We still had a bit of an argument about <em>which</em> operations should count, so our counts were usually <em>n</em>, <em>2n</em>, <em>3n</em>, etc. It was a good discussion. Sadly, the video camera ran out of battery on this day.</p>

<p>On Friday I wanted to formalize this and introduce big-oh notation fully, but on Friday and Monday classes were canceled because of hurricane Ike &#8212; the other reason why &#8220;Gone With The Wind&#8221; is in the title, but more about that later. That made us lose two lectures and got the schedule in a bit of trouble. Today, I moved the exam and homework assignments around a bit. The university ruled that no assignments should be due this week, so I had to move homework #2 to next Monday. But in order to keep lectures and assignments together, I had to move them anyway.</p>

<p>In class today, only half of the students were there; I assume the others evacuated and hope they will be back soon. We finished talking about big-oh notation, and we cleared up why the constant factor in counting didn&#8217;t matter.</p>

<p>These entire two week seem like a blur, though, thanks to hurricane Ike. Starting late last Wednesday. we pretty much knew that this would be a close one. I went out to buy some more supplies on Wednesday night already. Some time on Thursday, a notice went out that classes are cancelled on Friday. After work on Thursday and early on Friday, I prepared my apartment for the storm: I taped cardboard covered in plastic bags to my windows again, a ghetto replacement for plywood. I know it couldn&#8217;t protect the window, but it should keep shards of glass out and give me a few more minutes to save valuable items. Then came the big wait.</p>

<p>The wind started getting pretty bad around 11 PM on Friday, but I went to bed at 2 AM, around the time &#8220;the Eyke&#8221; (the eye of Ike, as one newscaster accidentally called it) made landfall just east of Galveston, as a strong category 2 hurricane, just a couple of miles short of category 3. I woke up again at 2:30 AM when my UPSes started beeping. I had lost power. I quickly saved and and copied some files, then shut everything down. It was incredibly dark.</p>

<p>I woke up several times between 4 AM and 7 AM, when either bigger branches hit my apartment walls and windows, or when it sounded like there was hail. The hail probably scared me the most, because one of the meteorologists had said hail might indicate that there is a tornado nearby. A couple of times I was close to grabbing some blankets and moving into my bathroom, but I ended up sleeping through the entire hurricane in my bed.</p>

<p>When it had stopped raining hard in the early afternoon, I went outside and surveyed the damage. My apartment was not damaged, but there were lots of trees turned over. Some had fallen against other apartments or on cars. The fences around my apartment complex were gone. The Braes Bayou was a raging stream. I had expected something like I had seen after hurricane Rita, but this was much, much worse. Rita was nothing against this. And my power was still off. Rita just made it flicker.</p>

<p>Fortunately, I got my power and water back relatively quickly. There were still about 2 million people as of this morning who are without power. Biking or driving through Houston feels strange, because just one street separates apparent normality from chaos without power, water, gas, traffic lights, ATMs &#8212; everything we take for granted. It will take weeks before all Houstonians have their utilities restored, and probably months until the scars Ike made have been undone.</p>


<a href='http://www.concurrentaffair.org/2008/09/17/two-weeks-gone-with-the-wind/2008-09-13-073_resize/' title='2008-09-13-073_resize'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2008/09/2008-09-13-073_resize-150x150.jpg" class="attachment-thumbnail" alt="Huge tree broken." title="2008-09-13-073_resize" /></a>
<a href='http://www.concurrentaffair.org/2008/09/17/two-weeks-gone-with-the-wind/2008-09-13-013_resize/' title='2008-09-13-013_resize'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2008/09/2008-09-13-013_resize-150x150.jpg" class="attachment-thumbnail" alt="Trees fallen over." title="2008-09-13-013_resize" /></a>
<a href='http://www.concurrentaffair.org/2008/09/17/two-weeks-gone-with-the-wind/2008-09-13-021_resize/' title='2008-09-13-021_resize'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2008/09/2008-09-13-021_resize-150x150.jpg" class="attachment-thumbnail" alt="Fence destroyed." title="2008-09-13-021_resize" /></a>
<a href='http://www.concurrentaffair.org/2008/09/17/two-weeks-gone-with-the-wind/2008-09-13-034_resize/' title='2008-09-13-034_resize'><img width="150" height="150" src="http://www.concurrentaffair.org/wp-content/uploads/2008/09/2008-09-13-034_resize-150x150.jpg" class="attachment-thumbnail" alt="Tree snapped in half." title="2008-09-13-034_resize" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/09/17/two-weeks-gone-with-the-wind/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lecture 4 Review</title>
		<link>http://www.concurrentaffair.org/2008/09/03/lecture-4-review/</link>
		<comments>http://www.concurrentaffair.org/2008/09/03/lecture-4-review/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 17:48:35 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=587</guid>
		<description><![CDATA[Today we started our discussion of Java generic... <a href="http://www.concurrentaffair.org/2008/09/03/lecture-4-review/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today we started our discussion of Java generics. I motivated generics by showing Friday&#8217;s source code, which used <code class="codecolorer text mac-classic"><span class="text">Object... p</span></code> varargs, and where <code class="codecolorer text mac-classic"><span class="text">p[0]</span></code> had to be an <code class="codecolorer text mac-classic"><span class="text">IListFactory</span></code> and <code class="codecolorer text mac-classic"><span class="text">p[1]</span></code> an <code class="codecolorer text mac-classic"><span class="text">IList</span></code>. Confusing the indices or passing the wrong value would lead to a <code class="codecolorer text mac-classic"><span class="text">ClassCastException</span></code>.</p>

<p>We then looked at how to make a <code class="codecolorer text mac-classic"><span class="text">Box&lt;E&gt;</span></code>, a wrapper that could contain any kind of value, but you had to specify its type. Later we worked out on the board what a generic <code class="codecolorer text mac-classic"><span class="text">ILambda</span></code> would look like, including an <code class="codecolorer text mac-classic"><span class="text">Equals</span></code> example that compared two <code class="codecolorer text mac-classic"><span class="text">Integer</span></code> values. Then we made another <code class="codecolorer text mac-classic"><span class="text">Equals&lt;P&gt;</span></code> that could compare any two values of the same type, so we specified one of the type variables of <code class="codecolorer text mac-classic"><span class="text">ILambda&lt;R,P&gt;</span></code>, but left the other one open.</p>

<p>The last thing I mentioned was that <code class="codecolorer text mac-classic"><span class="text">SpecialBox&lt;Integer&gt;</span></code> was a subclass of <code class="codecolorer text mac-classic"><span class="text">Box&lt;Integer&gt;</span></code> when <code class="codecolorer text mac-classic"><span class="text">SpecialBox&lt;E&gt; extends Box&lt;E&gt;</span></code>, but I&#8217;ll have to revisit that again, because the important thing is that <code class="codecolorer text mac-classic"><span class="text">Box&lt;Integer&gt;</span></code> is not a subtype of <code class="codecolorer text mac-classic"><span class="text">Box&lt;Object&gt;</span></code> even though <code class="codecolorer text mac-classic"><span class="text">Integer</span></code> is a subtype of <code class="codecolorer text mac-classic"><span class="text">Object</span></code>.</p>

<p>We also ran into an interesting problem with boxing when we write <code class="codecolorer text mac-classic"><span class="text">Equals</span></code>: <code class="codecolorer text mac-classic"><span class="text">p[0]</span></code> and <code class="codecolorer text mac-classic"><span class="text">p[1]</span></code> are <code class="codecolorer text mac-classic"><span class="text">Integers</span></code>, so <code class="codecolorer text mac-classic"><span class="text">p[0]==p[1]</span></code> does an identity comparison, not an integer equality test, so we had to do <code class="codecolorer text mac-classic"><span class="text">p[0].equals(p[1])</span></code>, but that lead well to the exercise <code class="codecolorer text mac-classic"><span class="text">Equals&lt;P&gt;</span></code>.</p>

<p>I also wasn&#8217;t sure about whether primitive types could be used in generics; I correctly said no, but I wasn&#8217;t sure, so I&#8217;ll reiterate that. I&#8217;m pretty happy with this lecture. We&#8217;ll see how well my students understood the concepts, because on Friday we&#8217;ll talk about upper and lower bounds and wildcards.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/09/03/lecture-4-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lecture 3 Review</title>
		<link>http://www.concurrentaffair.org/2008/08/29/lecture-3-review/</link>
		<comments>http://www.concurrentaffair.org/2008/08/29/lecture-3-review/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 19:29:34 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=585</guid>
		<description><![CDATA[Today, we talked about higher-order functions, ... <a href="http://www.concurrentaffair.org/2008/08/29/lecture-3-review/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today, we talked about higher-order functions, which also are also called lambdas and commands. Initially, I presented the code for <code class="codecolorer text mac-classic"><span class="text">Reverse</span></code> and <code class="codecolorer text mac-classic"><span class="text">Append</span></code> from last lecture again. Then I added other things that you can do to the mix, such as generating a string representation, adding numbers or dividing them. The latter is important, because division is not commutative. I asked the students what is different between these operations and what is the same.</p>

<p>We came to realize that, depending on whether they use forward or backward accumulation, they all follow the same structure. In forward accumulation, they start with an initial value, perform some kind of operation with the initial value and the first of the list, then recur into the rest, using the result of the operation as initial value for the next level of recursion. In backward accumulation, they start with an initial value that is passed all the way to the end of the list. Then, for the empty list, that initial value is returned, and on the way out of the recursion, for each non-empty list, an operation is performed with the first of the list and the return value of the recursion that just finished, and the result is returned to the next level outward.</p>

<p>I then showed this in a more mathematical way, using a binary function <i>f(x, y)</i>, and how forward accumulation yields <i>f(f(f(f(i, l1), l2), l3), l4)</i> for forward accumulation and <i>f(l1, f(l2, f(l3, f(l4, i))))</i> for backward accumulation.</p>

<p>Unfortunately, I had written out our sample list from left to right, beginning with the empty list, as &#8220;empty-1-2-3&#8243;, instead of &#8220;1, 2, 3&#8243;, and that caused me to confuse fold left and fold right.</p>

<p>Another small problem occurred during the discussion of lambdas, the way we implement these different operations. The lecture notes provided code for an <code class="codecolorer text mac-classic"><span class="text">Add</span></code> lambda. In fold left and fold right, the lambdas are binary; however, <code class="codecolorer text mac-classic"><span class="text">Add</span></code> could process an arbitrary number of parameters. It would even add zero or one numbers. I wanted this to be exactly two &#8212; I should have previewed the lecture notes better, beyond the point of checking <em>what</em> code is there, but also precisely what it <em>does</em>. Fortunately, the <code class="codecolorer text mac-classic"><span class="text">Cons</span></code> lambda was binary.</p>

<p>After we had discussed lambdas and worked out the code for <code class="codecolorer text mac-classic"><span class="text">FoldL</span></code> and <code class="codecolorer text mac-classic"><span class="text">FoldR</span></code>, we talked about how to do <code class="codecolorer text mac-classic"><span class="text">Reverse</span></code> and <code class="codecolorer text mac-classic"><span class="text">Append</span></code> using fold left and fold right, respectively. We arrived at the interesting result that the operations for both algorithms are the same!</p>

<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">new</span> ILambda<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a> apply<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a>... <span style="color: #006633;">params</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> NEList<span style="color: #009900;">&#40;</span>params<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span>, <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>IList<span style="color: #009900;">&#41;</span>params<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>

<p>The two things that differ between <code class="codecolorer text mac-classic"><span class="text">Reverse</span></code> and <code class="codecolorer text mac-classic"><span class="text">Append</span></code> is that they fold in different directions, and that they use different initial values (empy list and the list to append, respectively).</p>

<p>I thought the material was interesting today, and my motivation and the general arc through the lecture was good, but it was marred by the two mistakes, mostly confusing fold left and fold right.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/08/29/lecture-3-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lecture 2 Review</title>
		<link>http://www.concurrentaffair.org/2008/08/27/lecture-2-review/</link>
		<comments>http://www.concurrentaffair.org/2008/08/27/lecture-2-review/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 23:40:35 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Pictures]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=572</guid>
		<description><![CDATA[Today I finally got the camera set up correctly... <a href="http://www.concurrentaffair.org/2008/08/27/lecture-2-review/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today I finally got the camera set up correctly, I talked some more about the encapsulation issues that came up in the lab, I used index cards for some role-playing for the word list algorithms, and we talked about list algorithms.</p>

<p>I think the role-playing went well, although next time I should perhaps let the students do all of it. This time, I was the &#8220;visitor&#8221;, so a lot of what was going on was decided by me. On the other hand, this allowed me to mix the role-playing exercise with telling what the algorithms did.</p>

<p>For the list algorithms, we talked about reversing and appending. For appending, I could not find an algorithm that required a helper; my algorithm didn&#8217;t need a helper, but it wasn&#8217;t tail-recursive. We briefly talked about tail-recursion optimization.</p>

<p>In general, I&#8217;m quite happy with today&#8217;s lecture, although the video showed that I do have quite a few &#8220;uh&#8221;s as speech disfluencies, and that I could vary my pitch more. I still couldn&#8217;t get into the lab using my ID card, but I&#8217;ll check again on my way home.</p>

<div id="attachment_577" class="wp-caption alignnone" style="width: 310px"><a href="http://www.concurrentaffair.org/wp-content/uploads/2008/08/2008-08-27-lec02-02.jpg"><img src="http://www.concurrentaffair.org/wp-content/uploads/2008/08/2008-08-27-lec02-02-300x200.jpg" alt="Lecture 2" title="2008-08-27-lec02-02" width="300" height="200" class="size-medium wp-image-577" /></a><p class="wp-caption-text">Using index cards and role-playing to teach the visitor design pattern in lecture 2.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/08/27/lecture-2-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lab 1 Review</title>
		<link>http://www.concurrentaffair.org/2008/08/27/lab-1-review/</link>
		<comments>http://www.concurrentaffair.org/2008/08/27/lab-1-review/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 23:31:06 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=567</guid>
		<description><![CDATA[In lab 1, we went over the general design of th... <a href="http://www.concurrentaffair.org/2008/08/27/lab-1-review/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In lab 1, we went over the general design of the word list and the body part list. We discussed the need for a state pattern so the objects can change behavior yet remain the same class. Then I let the students recreate the code from the UML diagrams.</p>

<p>Besides some questions that had to do with getting &#8220;back into Java programming&#8221;, there was an interesting question about encapsulation, whether the visible and invisible states should be implemented as anonymous inner classes. I recommended that <code class="codecolorer text mac-classic"><span class="text">EmptyWord</span></code> and <code class="codecolorer text mac-classic"><span class="text">NEWord</span></code> be nested classes of the concrete word factory, and that <code class="codecolorer text mac-classic"><span class="text">AWordState</span></code>, the visible state and the invisible state be nested inside <code class="codecolorer text mac-classic"><span class="text">NEWord</span></code>, but I hadn&#8217;t considered implementing the latter two as anonymous inner classes. When I did that on the projector, it turned out that the visible state was an anonymous inner class defined inside <code class="codecolorer text mac-classic"><span class="text">toggleState()</span></code> of the anonymous inner class for the invisible state. That was interesting, but perhaps made things more complicated.</p>

<p>I didn&#8217;t talk much about the algorithms run on word list and body part, so I ended up being a bit worried that not everyone knew what to do. I decided to revisit the encapsulation issue and the algorithms.</p>

<p>As everyone was leaving, there was a question about <code class="codecolorer text mac-classic"><span class="text">static</span></code> as it applies to nested/inner classes. It took a little bit of effort, but I think I was able to explain how static nested classes do not have a reference to the enclosing class&#8217; <code class="codecolorer text mac-classic"><span class="text">this</span></code>, while non-static inner classes do, although I could not come up with a really compelling reason why non-static inner classes cannot have static members, except that static would not convey any advantage, because it could not be called in a static context anyway, but that would not have prevented Sun from just ignoring the <code class="codecolorer text mac-classic"><span class="text">static</span></code> modifier.</p>

<p>I also found out that I&#8217;ll have a TA this semester, and I&#8217;m already very grateful for that already.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/08/27/lab-1-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lecture 1 Review</title>
		<link>http://www.concurrentaffair.org/2008/08/25/lecture-1-review/</link>
		<comments>http://www.concurrentaffair.org/2008/08/25/lecture-1-review/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 18:08:29 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=562</guid>
		<description><![CDATA[The first lecture went well, even though I init... <a href="http://www.concurrentaffair.org/2008/08/25/lecture-1-review/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The first lecture went well, even though I initially had problems with the projectors. I couldn&#8217;t get my notebook hooked up, so I used the podium PC. I also did not yet have card access to get into Symonds 1, but I could not set up early anyway because there was a class in the lab. My time is sandwiched between two other classes, so I really can&#8217;t start much before 10 AM and need to be out by 11 AM.</p>

<p>We went over the general information. Here I should have mentioned that the students can anonymously complain to Dr. Wong if they have a problem with me.</p>

<p>We did a quick review of <code class="codecolorer text mac-classic"><span class="text">IList</span></code> and <code class="codecolorer text mac-classic"><span class="text">LRStruct</span></code> and the design patterns involved. Then we already started with the lab material, talking about how to set up words. Composite, state and visitor with three cases came up. We will continue that in class.</p>

<p>On Friday, we might talk about the games they did at the end of COMP 201.</p>

<p>After a summer of waiting, I failed to consciously register one of the most anticipated things: the number of students. I think there were six or seven.</p>

<p>Also, I&#8217;m terribly disappointed by the clumsy interface of my video camera. I failed to record my first lecture on video.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/08/25/lecture-1-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A New School Year</title>
		<link>http://www.concurrentaffair.org/2008/08/25/a-new-school-year/</link>
		<comments>http://www.concurrentaffair.org/2008/08/25/a-new-school-year/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 14:24:53 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[COMP202]]></category>
		<category><![CDATA[DrJava]]></category>
		<category><![CDATA[Graduate School]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=559</guid>
		<description><![CDATA[It's 9 AM now, and a new school year has begun.... <a href="http://www.concurrentaffair.org/2008/08/25/a-new-school-year/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s 9 AM now, and a new school year has begun. I don&#8217;t think I have been this nervous in a while.</p>

<p>But there&#8217;s a reason for that: In just an hour, I will be delivering the first lecture of the first course that I am teaching by myself, <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/">COMP 202 &#8211; Principles of Object-Oriented Programming II</a>.</p>

<p>I&#8217;ve re-worked and re-ordered some of the past lectures, switched out a few assignments, and added a new one, <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/hw/hangman.re/">Hangman Refactored</a>. It uses the Janus principle and fits in really well after the <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/lectures/progForChange/">Programming for Change</a> lecture and the <a href="http://www.cs.rice.edu/~mgricken/teaching/202/08-fall/hw/tempcalc">Temperature Calculator</a> assignment. At least that&#8217;s what I think. We&#8217;ll see how it goes.</p>

<p>On Saturday, I went to a wonderful workshop that the School of Engineering set up for TAs. I was on their list because this year I get paid by the School of Engineering. The discussion of different learning styles prompted me to ask the students to fill out a <a href="http://www.engr.ncsu.edu/learningstyles/ilsweb.html">Learning Styles Questionnaire</a>.</p>

<p>During the last three or four days, I also improved the external process facility of DrJava a bit. Clearer error messages are now printed to the external process panes, there are <code class="codecolorer text mac-classic"><span class="text">${and}</span></code>, <code class="codecolorer text mac-classic"><span class="text">${or}</span></code>, <code class="codecolorer text mac-classic"><span class="text">${not}</span></code> and <code class="codecolorer text mac-classic"><span class="text">${neq}</span></code> (not equal) properties, and simple search-and-replace can be done using the <code class="codecolorer text mac-classic"><span class="text">${replace.string;text=&quot;...&quot;;old=&quot;...&quot;;new=&quot;...&quot;}</span></code> property.</p>

<p>I then approached the NextGen and <a href="http://www.cs.rice.edu/~mgricken/research/xajavac/index.shtml">xajavac</a> compiler addons for DrJava again. Fortunately, Dan had told me about <a href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html#commandlineargfile" class="broken_link">javac argfiles</a>, which elegantly solve the long-command-line problem. However, I discovered that some problems, like keeping together file names with spaces in them, reappear when printing to text files, even though I had solved them for the command line. I got around that by adding quoting options for file properties.</p>

<p>Now we have <a href="http://sourceforge.net/project/showfiles.php?group_id=44253&#038;package_id=288767">two working DrJava Addons</a> (&#8220;djapps&#8221;) that integrate NextGen and xajavac into DrJava.</p>

<p>Okay now, I&#8217;m going to get ready for COMP 202. I hope my Rice ID card will finally let me into the room. Wish me luck.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/08/25/a-new-school-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One DrJava Fix, Lots of COMP 202 Issues</title>
		<link>http://www.concurrentaffair.org/2008/08/11/one-drjava-fix-lots-of-comp-202-issues/</link>
		<comments>http://www.concurrentaffair.org/2008/08/11/one-drjava-fix-lots-of-comp-202-issues/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 22:37:22 +0000</pubDate>
		<dc:creator>Mathias</dc:creator>
				<category><![CDATA[COMP202]]></category>
		<category><![CDATA[DrJava]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.concurrentaffair.org/?p=554</guid>
		<description><![CDATA[I fixed one issue that had come up again: Compe... <a href="http://www.concurrentaffair.org/2008/08/11/one-drjava-fix-lots-of-comp-202-issues/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I fixed one issue that had come up again: Competing modal dialogs. For some reason that I&#8217;ve already forgotten, we couldn&#8217;t use real modal dialogs that come in the form of <code class="codecolorer text mac-classic"><span class="text">Dialog</span></code> or <code class="codecolorer text mac-classic"><span class="text">JDialog</span></code>, so we just used a <code class="codecolorer text mac-classic"><span class="text">JFrame</span></code> and listeners, and stole the focus back whenever someone took it from us. It worked for a while, because DrJava rarely used windows except for the main window.</p>

<p>In the last couple of years, though, we have added more and more windows: The predictive input dialogs to help you search or find Javadoc pages, the error dialog to collect and better display error messages while making them appear less critical, and now even the bottom panes and the debugger can be detached.</p>

<p>I handled most of this by creating a cooperative first-come-first-serve scheme of being modal. Every window that was trying to be modal, asked for modal status, but only one could have it. I considered moving making windows modal that were initially denied modal status, but left it there.</p>

<p>However, there were still other windows that could modally pop up, and those were real modal dialogs out of my control. In his bug report, <a href="https://sourceforge.net/tracker/index.php?func=detail&#038;aid=2040862&#038;group_id=44253&#038;atid=438935">[ 2040862 ] Modal dialog flicker: Project Properties/Increase Heap</a>, Dan had one of my pseudo-modal dialogs (Project Properties) compete with a real modal dialog (Increase Heap).</p>

<p>Now I check whether the opposite window, the one that stole our focus, is a real modal dialog. If that is the  case, we concede modalness. However, we install a listener that will make us modal again when the real modal dialog has been closed.</p>

<p>I have tried to simulate the problem with two windows competing, but I never quite succeeded, so I hope Dan or someone else can reproduce the problem and confirm that the issue has been fixed.</p>

<p>Shifting gears: I have been thinking and working a lot on the COMP 202 lecture notes, and website in general. I am taking over most of what was there from the previous year, but I am making a few changes. For example, I have decided to take more time for a few of the more difficult topics. I have also replaced two unpopular assignments with two assignments of mine, and I have replaced another assignment with one that I am more familiar with. I hope to maintain the level of teaching in general, but I also have to make sure I don&#8217;t completely overload myself. Better a little bit less but well done, than more with lots of confusion.</p>

<p>One thing I have to confess here, though: Please, please, no one edit HTML pages with Microsoft Word. Or some other very high-level editors. It pains me. I still edit HTML with emacs, and seeing all the superfluous tags hurts my eyes. Sometimes there is a separate tag around every letter of a word.</p>

<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">span</span></a> <span style="color: #000066;">lang</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;en-us&quot;</span>&gt;&lt;<a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;something&quot;</span>&gt;&lt;<a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">span</span></a> <span style="color: #000066;">lang</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;en-us&quot;</span>&gt;</span>b<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">span</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;something&quot;</span>&gt;</span><br />
<span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">span</span></a> <span style="color: #000066;">lang</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;en-us&quot;</span>&gt;</span>ack<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">span</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/span.html"><span style="color: #000000; font-weight: bold;">span</span></a>&gt;</span></div></td></tr></tbody></table></div>

<p>Just to do:</p>

<div class="codecolorer-container html4strict default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;something&quot;</span>&gt;</span>back<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">a</span></a>&gt;</span></div></td></tr></tbody></table></div>

<p>I guess the previous students never looked at the HTML source (why should they have?), so I&#8217;m not surprised there were no complaints from them. But honestly, the computers rendering the HTML should have thrown up.</p>

<p>End rant.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.concurrentaffair.org/2008/08/11/one-drjava-fix-lots-of-comp-202-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

