<?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>Mike Conley&#039;s Blog &#187; Code Reviews</title>
	<atom:link href="http://mikeconley.ca/blog/category/technology/computer-science/code-reviews/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikeconley.ca/blog</link>
	<description>The personal blog of a Toronto based software developer, musician, sound designer, and theatre enthusiast.</description>
	<lastBuildDate>Tue, 10 Jan 2012 13:58:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Still Alive</title>
		<link>http://mikeconley.ca/blog/2011/11/30/still-alive-2/</link>
		<comments>http://mikeconley.ca/blog/2011/11/30/still-alive-2/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 14:54:24 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Review Board]]></category>
		<category><![CDATA[Theater]]></category>
		<category><![CDATA[Thunderbird]]></category>
		<category><![CDATA[account provisioner]]></category>
		<category><![CDATA[address book]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[reviewboard]]></category>
		<category><![CDATA[tabs on top]]></category>
		<category><![CDATA[thunderbird]]></category>
		<category><![CDATA[ucosp]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=2218</guid>
		<description><![CDATA[Once again, I&#8217;ve let my blog gather dust.  And the comments have been piling up.  And the emails have been rolling in.  And I&#8217;ve been silent. Sorry about that! I&#8217;ve been pretty heads-down lately &#8211; here&#8217;s what&#8217;s going on: The address book work I was talking about has been put on a tiny bit of [...]]]></description>
			<content:encoded><![CDATA[<p>Once again, I&#8217;ve let my blog gather dust.  And the comments have been piling up.  And the emails have been rolling in.  And I&#8217;ve been silent.</p>
<p>Sorry about that!</p>
<p>I&#8217;ve been pretty heads-down lately &#8211; here&#8217;s what&#8217;s going on:</p>
<ol>
<li><a href="http://mikeconley.ca/blog/2011/09/07/creating-a-new-thunderbird-address-book-the-feature-page-and-some-literature/">The address book work</a> I was talking about has been put on a tiny bit of a backburner as I deal with two more pressing Thunderbird projects, namely, finishing up the Account Provisioner (a service that offers you email addresses if you don&#8217;t already have one) and Tabs on top (a part of <a href="http://areweprettyyet.com/thunderbird/1/index.htm#">the general UX refresh that Thunderbird is working towards</a>)</li>
<li>A few weeks ago, I was knee-deep in sound design for a show called <a href="http://theredlightdistrict.ca/2011/04/fireraisers/">FIREraisers</a> being put up by <a href="http://theredlightdistrict.ca/">the red light district</a>.</li>
<li><a href="http://ucosp.ca">UCOSP</a> has been going strong, and our <a href="http://www.reviewboard.org/">Review Board</a> <a href="http://reviewboardstudents.wordpress.com/">students have been pluggin&#8217; away</a>.</li>
</ol>
<p>About the address book &#8211; I&#8217;ve received a bunch of email making suggestions and asking for things.  That&#8217;s great!  I&#8217;ll comment on that shortly &#8211; I just need a little more time to clear Account Provisioner and Tabs on Top off my plate.</p>
<p>More soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2011/11/30/still-alive-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lady Gaga</title>
		<link>http://mikeconley.ca/blog/2011/03/28/lady-gaga/</link>
		<comments>http://mikeconley.ca/blog/2011/03/28/lady-gaga/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 13:14:17 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Review Board]]></category>
		<category><![CDATA[Thunderbird]]></category>
		<category><![CDATA[bad romance]]></category>
		<category><![CDATA[cover]]></category>
		<category><![CDATA[lady gaga]]></category>
		<category><![CDATA[paparazzi]]></category>
		<category><![CDATA[shameless self promotion]]></category>
		<category><![CDATA[the johnson report]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=2096</guid>
		<description><![CDATA[When I&#8217;m not hacking on Thunderbird, MarkUs, or Review Board, I usually spend my time playing in a band called The Johnson Report. I normally don&#8217;t play the &#8220;band card&#8221;, but I&#8217;m particularly proud of this latest achievement, and wanted to share. Here&#8217;s us playing some Lady Gaga.]]></description>
			<content:encoded><![CDATA[<p>When I&#8217;m not hacking on <a href="http://www.mozillamessaging.com/en-US/thunderbird/">Thunderbird</a>, <a href="http://www.markusproject.org">MarkUs</a>, or <a href="http://www.reviewboard.org">Review Board</a>, I usually spend my time playing in a band called <a href="http://www.myspace.com/thejohnsonreport">The Johnson Report</a>.</p>
<p>I normally don&#8217;t play the &#8220;band card&#8221;, but I&#8217;m particularly proud of this latest achievement, and wanted to share.</p>
<p><a href="https://www.youtube.com/watch?v=Hikfh1TMdEg">Here&#8217;s us playing some Lady Gaga.</a></p>
<p><object width="640" height="390"><param name="movie" value="http://www.youtube.com/v/Hikfh1TMdEg?fs=1&amp;hl=en_US&amp;rel=0" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="640" height="390" src="http://www.youtube.com/v/Hikfh1TMdEg?fs=1&amp;hl=en_US&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2011/03/28/lady-gaga/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Wisdom of Peers: A Motive for Exploring Peer Code Review in the Classroom</title>
		<link>http://mikeconley.ca/blog/2010/12/23/the-wisdom-of-peers-a-motive-for-exploring-peer-code-review-in-the-classroom/</link>
		<comments>http://mikeconley.ca/blog/2010/12/23/the-wisdom-of-peers-a-motive-for-exploring-peer-code-review-in-the-classroom/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 19:30:22 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[code review]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[pedagogy]]></category>
		<category><![CDATA[peer assessment]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1903</guid>
		<description><![CDATA[A major part of my Master&#8217;s degree requirements was my research paper.  If you heard me lament over the past year or so about my &#8220;thesis&#8221;, I was referring to this research paper. Anyhow, after lots of hard work, my research paper was finally signed off by my supervisor, Dr. Greg Wilson, and second reader [...]]]></description>
			<content:encoded><![CDATA[<p>A major part of my Master&#8217;s degree requirements was my research paper.  If you heard me lament over the past year or so about my &#8220;thesis&#8221;, I was referring to this research paper.</p>
<p>Anyhow, after lots of hard work, my research paper was finally signed off by my supervisor, <a href="http://www.third-bit.com">Dr. Greg Wilson</a>, and second reader <a href="http://takhteyev.org/">Dr. Yuri Takhteyev</a>.  A huge thanks to both of them!</p>
<p>Here&#8217;s the abstract, followed by a download link for the PDF.  Enjoy!</p>
<h3>Abstract</h3>
<p>Peer code review is commonly used in the software development industry to identify and fix problems during the development process. An additional benefit is that it seems to help spread knowledge and expertise around the team conducting the review. So is it possible to leverage peer code review as a learning tool? Our experiment results show that peer code review seems to cause a performance boost in students. They also show that the average total peer mark generated by students seems to be similar to the total mark that a graduate-level teaching assistant might give. We found that students agree that peer code review teaches them something – however, we also found they do not enjoy grading their peers’ work. We are encouraged by these results, and feel that they are a strong motive for further research in this area.</p>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/12/Conley_Michael_D_201101_Masters_thesis.pdf">Click here to download my research paper</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2010/12/23/the-wisdom-of-peers-a-motive-for-exploring-peer-code-review-in-the-classroom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>That&#8217;s all, folks! or Becoming Randall Stevens</title>
		<link>http://mikeconley.ca/blog/2010/12/23/thats-all-folks-or-becoming-randall-stevens/</link>
		<comments>http://mikeconley.ca/blog/2010/12/23/thats-all-folks-or-becoming-randall-stevens/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 19:28:01 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Musings]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Review Board]]></category>
		<category><![CDATA[Thunderbird]]></category>
		<category><![CDATA[graduated]]></category>
		<category><![CDATA[m.sc]]></category>
		<category><![CDATA[masters]]></category>
		<category><![CDATA[shawshank redemption references]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1894</guid>
		<description><![CDATA[Once again, I&#8217;ve let a month&#8217;s worth of dust gather on my blog.  But I have a good reason for being so busy! Several good reasons, actually. And here they are: UCOSP has wrapped for the semester This semester, I was a teaching assistant for the UCOSP (Undergraduate Capstone Open-source Projects) course.  I helped out [...]]]></description>
			<content:encoded><![CDATA[<p>Once again, I&#8217;ve let a month&#8217;s worth of dust gather on my blog.  But I have a good reason for being so busy!</p>
<p>Several good reasons, actually.</p>
<p>And here they are:</p>
<h3>UCOSP has wrapped for the semester</h3>
<p>This semester, I was a teaching assistant for the <a href="http://www.ucosp.ca">UCOSP (Undergraduate Capstone Open-source Projects) course</a>.  I helped out with two projects:  <a href="http://www.markusproject.org">MarkUs</a> and <a href="http://www.reviewboard.org">Review Board</a>.</p>
<p>This semester, we saw some outstanding work for both projects.  Lots of great students, lots of good code, <a href="http://www.reviewboard.org/news/2010/12/11/ucosp-2010-project-screencasts/">lots of leaps forward</a>.</p>
<p>I&#8217;m looking forward to helping out next semester with UCOSP.</p>
<p>I won&#8217;t be doing it as a paid teaching assistant though.  Why?  Well&#8230;</p>
<h3>I&#8217;ve finished school</h3>
<p><a href="http://mikeconley.ca/blog/2010/12/23/the-wisdom-of-peers-a-motive-for-exploring-peer-code-review-in-the-classroom/">My research paper</a> was signed off by my two readers, and I just wrote my last final exam a few nights ago.  Unofficial grades have been posted, and I&#8217;ve passed what I needed to pass.</p>
<p>So that&#8217;s that &#8211; I&#8217;m a Master of Computer Sciences, I guess.  Awesome!</p>
<h3>I got a job!</h3>
<p>I&#8217;ve been hired by <a href="http://www.mozillamessaging.com">Mozilla Messaging</a> to work on <a href="http://www.mozillamessaging.com/en-GB/thunderbird/">the Thunderbird project</a>!  I&#8217;m 100% psyched about this opportunity, and look forward to peeling into the code.  An added bonus:  since Thunderbird is an open-source project, I&#8217;m absolutely free to discuss the code and the various things I&#8217;m doing with it.  No NDAs for me!  So stay tuned &#8211; I&#8217;ll have lots to say about Thunderbird and the Mozilla Framework code.  Just give me some time to wade through it.</p>
<h3>Zihuatanejo</h3>
<p>It&#8217;s been a pretty long road.  I&#8217;ve been in school, in one form or another, for over two decades.  It&#8217;s strange that it&#8217;s over.  I&#8217;m extremely excited about my next adventures, but I think I&#8217;m going to miss school.</p>
<p>Still, I can&#8217;t help but be a bit dramatic&#8230;</p>
<div class="shashinPhotoGroups">
<table class="shashinThumbnailsTable" id="shashinGroup_2_2" style="margin-left: auto; margin-right: auto;">
<caption></caption>
<tr>
<td>
<div class="shashinThumbnailDiv" id="shashinThumbnailDiv_2" style="width: 294px;"><a href="http://lh3.ggpht.com/-_y-VXypYWG8/TRA5pkQoAjI/AAAAAAAABcE/Gal73_i5okw/shawshank_redemption_4.jpg?imgmax=800" id="shashinThumbnailLink_2" onclick="return hs.expand(this, { autoplay: false, slideshowGroup: 'group2' })" class="highslide"><img src="http://lh3.ggpht.com/-_y-VXypYWG8/TRA5pkQoAjI/AAAAAAAABcE/Gal73_i5okw/shawshank_redemption_4.jpg?imgmax=288" alt="" width="288" height="161" class="shashinThumbnailImage" id="shashinThumbnailImage_2" /></a>
<div class="highslide-caption">
<div class="shashinHighslideLinkToOriginalPhoto"><a href="https://picasaweb.google.com/102046754196003513928/MiscBlogImages#5553001726818648626">View at Picasa</a></div>
</div>
</div>
</td>
</tr>
</table>
<p><script type="text/javascript">addHSSlideshow('group2');</script>
</div>
<blockquote><p>In 1966, Andy Dufresne escaped from Shawshank prison. All they found of him was a muddy set of prison clothes, a bar of soap, and an old rock hammer, damn near worn down to the nub. I remember thinking it would take a man six hundred years to tunnel through the wall with it. Old Andy did it in less than twenty. Oh, Andy loved geology. I imagine it appealed to his meticulous nature. An ice age here, million years of mountain building there. Geology is the study of pressure and time. That&#8217;s all it takes really, pressure, and time. &#8230;Andy crawled to freedom through five hundred yards of shit smelling foulness I can&#8217;t even imagine, or maybe I just don&#8217;t want to. Five hundred yards&#8230; that&#8217;s the length of five football fields, just shy of half a mile&#8230;</p>
<p>Andy Dufresne &#8211; who crawled through a river of shit and came out clean on the other side.</p></blockquote>
<p>P.S.:  <a href="http://mikeconley.ca/blog/2009/04/21/thats-all-folks-now-for-celebration-rituals/">Here are some celebration rituals, if so inclined.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2010/12/23/thats-all-folks-or-becoming-randall-stevens/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Stallin&#8217;&#8230;</title>
		<link>http://mikeconley.ca/blog/2010/11/03/stallin/</link>
		<comments>http://mikeconley.ca/blog/2010/11/03/stallin/#comments</comments>
		<pubDate>Wed, 03 Nov 2010 19:33:49 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Review Board]]></category>
		<category><![CDATA[good code review]]></category>
		<category><![CDATA[recognizing good review]]></category>
		<category><![CDATA[reviewboard]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1882</guid>
		<description><![CDATA[I know, I know.  I left you all hanging at the edge of your seat with my last blog post, and I still haven&#8217;t posted my idea for recognizing good code review. I&#8217;m bogged down with school work, and I&#8217;m aiming to have the first draft of my research paper done next week.  So that&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I know, I know.  I left you all hanging at the edge of your seat with my last blog post, and I still haven&#8217;t posted my idea for <a href="http://mikeconley.ca/blog/2010/10/23/recognizing-good-code-review/">recognizing good code review</a>.</p>
<p>I&#8217;m bogged down with school work, and I&#8217;m aiming to have the first draft of my research paper done next week.  So that&#8217;s taking 100% of my resources.</p>
<p>Just be patient.  I&#8217;ll post my idea soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2010/11/03/stallin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recognizing Good Code Review</title>
		<link>http://mikeconley.ca/blog/2010/10/23/recognizing-good-code-review/</link>
		<comments>http://mikeconley.ca/blog/2010/10/23/recognizing-good-code-review/#comments</comments>
		<pubDate>Sat, 23 Oct 2010 19:49:34 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Review Board]]></category>
		<category><![CDATA[code inspection]]></category>
		<category><![CDATA[code review]]></category>
		<category><![CDATA[good code review]]></category>
		<category><![CDATA[how to review code]]></category>
		<category><![CDATA[incentive]]></category>
		<category><![CDATA[recognition]]></category>
		<category><![CDATA[reviewboard]]></category>
		<category><![CDATA[team]]></category>
		<category><![CDATA[value]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1830</guid>
		<description><![CDATA[While the benefits of code review are proven, documented, numerous and awesome, it doesn&#8217;t change the fact that most people, in general, don&#8217;t like doing it. I guess code review just isn&#8217;t really all that fun. So a few months ago, I broadcast the idea of turning code review into a game. It was my [...]]]></description>
			<content:encoded><![CDATA[<p>While the benefits of code review are <a href="http://www.mfagan.com/ibmfagan.pdf">proven</a>, <a href="http://smartbear.com/docs/BestPracticesForPeerCodeReview.pdf">documented</a>, <a href="http://smartbear.com/codecollab-code-review-book.php">numerous</a> and <a href="http://www.reviewboard.org">awesome</a>, it doesn&#8217;t change the fact that most people, in general, don&#8217;t like doing it.</p>
<p>I guess code review just isn&#8217;t really all that fun.</p>
<p>So a few months ago, <a href="http://mikeconley.ca/blog/2010/03/09/turning-peer-code-review-into-a-game/">I broadcast the idea of turning code review into a game.</a> It was my way of trying to mix things up &#8211; &#8220;let&#8217;s add points, and have reviewers/developers competing to be the best participant in the code review process&#8221;.</p>
<p>Well, if there&#8217;s one thing that <a href="http://www.third-bit.com">my supervisor Greg</a> has taught me, it&#8217;s how I shouldn&#8217;t rush headlong into something before all of the facts are in.  So before I decide to do something like game-ifize code review, I should take a look at some prior work in the area&#8230;</p>
<p>Enter this guy:  <a href="http://cargocollective.com/codingconduct">Sebastian Deterding</a>.</p>
<p>In particular, check out the following slide-show.  Flip through it if you have the time.  If you don&#8217;t have the time, scroll down, where I get to the salient point with respect to game-ificating code review.</p>
<p><a href="http://www.slideshare.net/dings/pawned-gamification-and-its-discontents">Here&#8217;s the slide-show.</a> Be sure to read the narrative at the bottom.</p>
<h3>The Salient Point</h3>
<p>Sebastian seems to be saying that adding points to apps and trying to incite competition does not make something a game.  If it did, <a href="http://progresswars.com/">then this should be countless hours of fun</a>.</p>
<p>Without play, there is no game.  Points do not equal a game.  It&#8217;s not nearly that simple.</p>
<h3>Free Pizza and Pop</h3>
<p>I&#8217;m going to divert for a second here.</p>
<p>Last week, a company set themselves up a couple of booths in the lobby of the Bahen Center where I work.  They were there to recruit university students to work for their company &#8211; either as interns, or full-timers.</p>
<p>They were also handing out free pizza and pop.</p>
<p>Needless to say, I wanted a few slices &#8211; but I figured it would be polite if I engaged them in conversation before waltzing off with some of the free food and drink they&#8217;d brought.</p>
<p>So I sparked up a conversation with one of the recruiters, and he told me about the company.  I&#8217;m going to call this recruiter Vlad.</p>
<p>I ended up gently steering the conversation towards code review, and I asked my inevitable question:</p>
<blockquote><p>&#8220;So, do you guys do code review?&#8221;</p></blockquote>
<p>I felt like a dentist asking a patient if he&#8217;s been flossing.  Vlad waffled a bit, but the general impression was:</p>
<blockquote><p>&#8220;Not as much as we should.  We don&#8217;t have a prescribed workflow. It&#8217;d be hard to persuade all of the teams to do it.&#8221;</p></blockquote>
<p>And then we started talking about code review in general.  It turns out that Vlad had worked in a few companies where they&#8217;d done code review, and he always felt a little short changed.  He said something along the lines of:</p>
<blockquote><p>&#8220;I never felt compelled to do reviews.  They just sort of happened&#8230;and I did it, and it felt like&#8230;unrecognized effort.  I mean, what&#8217;s the incentive?  Do you know what I mean?  There&#8217;s incentive for the software, but I&#8217;m talking incentive for <em>me</em>.  And some people did really lousy reviews&#8230;but my reviews were treated the same as theirs.  I didn&#8217;t get recognized, and didn&#8217;t get rewarded if I did a good review.  So it was hard for me to do them.  I want to be recognized for my good reviews, for my good contributions.&#8221;</p></blockquote>
<p>I wish I&#8217;d had a tape-recorder running so I could have gotten Vlad&#8217;s exact words.  But that&#8217;s what I remember him saying.</p>
<h3>Feedback and Recognition</h3>
<p>Maybe instead of trying to game-ulize code review, I can instead hear what Vlad is saying and work off of that.</p>
<p>With the code review that Vlad participated in, <strong>all of the feedback went to the code author, and none went to the reviewers</strong>.  And the reviewers are the ones who are doing all of the heavy lifting!  As a reviewer, Vlad also wants feedback, and recognition for code review done well.</p>
<p>There&#8217;s a company in Toronto that specializes in feedback like this.  They&#8217;re one of the major players in the Toronto start-up scene, and have built a pretty sweet suite of tools to facilitate quick and easy feedback/recognition.</p>
<p>The company is called <a href="http://www.rypple.com">Rypple</a>.  And maybe that&#8217;s the name of the application, too.  (checks website) Yeah, it&#8217;s both.</p>
<p>So Rypple has this feature called Kudos that let&#8217;s people publicly acknowledge the good work of their team.</p>
<p>Normally, I don&#8217;t pimp companies.  And it upsets me when people comment on my blog, and their sub-text is to try to sell their product or service.  However, I think this video is relevant, so I&#8217;m posting their demo video so you can see how Kudos work:</p>
<p><a href="http://vimeo.com/11811215">Click here if you can&#8217;t see the video.</a></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11811215&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=11811215&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h3>The Idea</h3>
<p>So Rypple&#8217;s idea is to have a feed that the team subscribes to, and publicly display things like Kudos.  The badges for the Kudos are also limited in how many you can give per week, so they&#8217;re a valuable commodity that can&#8217;t just be handed out all over the place.  Cool idea.</p>
<p>So there&#8217;s one approach &#8211; use a service like Rypple to give your reviewers better feedback and recognition.</p>
<p>Or maybe we could build an extension for <a href="http://www.reviewboard.org">Review Board</a> that does something similar, and more oriented around code review.</p>
<p>It&#8217;s not oriented like a game, like I had originally envisioned.  But somehow, I think this idea has more meaning and traction than just &#8220;adding points&#8221;.</p>
<p>More on this idea in a few days.  But please, comment if you have any thoughts or ideas to add.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2010/10/23/recognizing-good-code-review/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Review Board Issue Tracking:  A Sneak Peek</title>
		<link>http://mikeconley.ca/blog/2010/10/21/review-board-issue-tracking-a-sneak-peek/</link>
		<comments>http://mikeconley.ca/blog/2010/10/21/review-board-issue-tracking-a-sneak-peek/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 18:27:41 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Review Board]]></category>
		<category><![CDATA[bug tracking]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[defect tracking]]></category>
		<category><![CDATA[defects]]></category>
		<category><![CDATA[issue tracking]]></category>
		<category><![CDATA[issues]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[reviewboard]]></category>
		<category><![CDATA[sneak peek]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1835</guid>
		<description><![CDATA[So I wrote my (hopefully) last mid-term ever last night, and in celebration, I thought I&#8217;d put together a little video showing off the issue tracking feature I&#8217;m hoping to put into Review Board. It&#8217;s still in it&#8217;s very early stages.  The code hasn&#8217;t been reviewed.  I&#8217;m still really really open to suggestions and feedback [...]]]></description>
			<content:encoded><![CDATA[<p>So I wrote my (hopefully) last mid-term ever last night, and in celebration, I thought I&#8217;d put together a little video showing off the issue tracking feature I&#8217;m hoping to put into <a href="http://www.reviewboard.org">Review Board</a>.</p>
<p>It&#8217;s still in it&#8217;s very early stages.  The code hasn&#8217;t been reviewed.  I&#8217;m still really really open to suggestions and feedback on this.  So please, comment here, or on <a href="http://groups.google.com/group/reviewboard-dev">the reviewboard-dev list</a>.</p>
<p>So here it is &#8211; enjoy!</p>
<p><a href="http://www.youtube.com/watch?v=ruVlGGdyvYM">(Click here if you can&#8217;t see the video)</a><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="505" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ruVlGGdyvYM?fs=1&amp;hl=en_US&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="505" src="http://www.youtube.com/v/ruVlGGdyvYM?fs=1&amp;hl=en_US&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2010/10/21/review-board-issue-tracking-a-sneak-peek/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Some More Results:  Did the Graders Agree?</title>
		<link>http://mikeconley.ca/blog/2010/08/24/some-more-results-did-the-graders-agree/</link>
		<comments>http://mikeconley.ca/blog/2010/08/24/some-more-results-did-the-graders-agree/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 04:38:45 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[criteria]]></category>
		<category><![CDATA[criterion]]></category>
		<category><![CDATA[data analysis]]></category>
		<category><![CDATA[disagreement]]></category>
		<category><![CDATA[fairness in grading]]></category>
		<category><![CDATA[graders]]></category>
		<category><![CDATA[grading]]></category>
		<category><![CDATA[marking]]></category>
		<category><![CDATA[rubrics]]></category>
		<category><![CDATA[tas]]></category>
		<category><![CDATA[teaching assistants]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1676</guid>
		<description><![CDATA[My experiment makes a little bit of an assumption &#8211; and it&#8217;s the same assumption most teachers probably make before they hand back work.  We assume that the work has been graded correctly and objectively. The rubric that I provided to my graders was supposed to help sort out all of this objectivity business.  It [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mikeconley.ca/blog/2010/08/11/research-experiment-a-recap/">My experiment</a> makes a little bit of an assumption &#8211; and it&#8217;s the same assumption most teachers probably make before they hand back work.  We assume that <em>the work has been graded correctly and objectively.</em></p>
<p>The rubric that I provided to my graders was supposed to help sort out all of this objectivity business.  It was supposed to boil down all of the subjectivity into a nice, discrete, quantitative value.</p>
<p>But I&#8217;m a careful guy, and I like back-ups.  That&#8217;s why I had 2 graders do my grading.  Both graders worked in isolation on the same submissions, with the same rubric.</p>
<p>So, did it work?  How did the grades match up?  Did my graders tend to agree?</p>
<p>Sounds like it&#8217;s time for some data analysis!</p>
<h3>About these tables&#8230;</h3>
<p>I&#8217;m about to show you two tables of data &#8211; one table for <a href="http://mikeconley.ca/blog/2010/08/20/my-experiment-apparatus-the-assignments-rubrics-and-mock-ups/">each assignment</a>.  The rows of the tables map to a single criterion on that <a href="http://mikeconley.ca/blog/2010/08/20/my-experiment-apparatus-the-assignments-rubrics-and-mock-ups/">assignments rubric</a>.</p>
<p>The columns are concerned with the graders marks for each criterion.  The first columns, <strong>Grader 1 &#8211; Average</strong> and <strong>Grader 2 &#8211; Average</strong>, simply show the average mark given for each criteria for each grader.</p>
<p><strong>Number of Agreements</strong> shows the number of times the marks between both graders matched for that criterion.  Similarly, <strong>Number of Disagreements</strong> shows how many times they didn&#8217;t match.  <strong>Agreement Percentage</strong> just converts those two values into a single percentage for agreement.</p>
<p><strong>Average Disagreement Magnitude</strong> takes every instance where there was a disagreement, and averages the magnitude of the disagreement (a reminder:  the magnitude here is the absolute value of the difference).</p>
<p>Finally, I should point out that these tables can be sorted by clicking on the headers.  This will probably make your interpretation of the data a bit easier.</p>
<p>So, if we&#8217;re clear on that, then let&#8217;s take a look at those tables&#8230;</p>
<h3>Flights and Passengers Grader Comparison</h3>

<table id="wp-table-reloaded-id-6-no-1" class="wp-table-reloaded wp-table-reloaded-id-6">
<thead>
	<tr class="row-1 odd">
		<th class="column-1"></th><th class="column-2">Grader 1 – Average</th><th class="column-3">Grader 2 – Average</th><th class="column-4">Number of Agreements</th><th class="column-5">Number of Disagreements</th><th class="column-6">Agreement Percentage</th><th class="column-7">Average Disagreement Magnitude</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">Flight Constructor</td><td class="column-2">3.67</td><td class="column-3">3.73</td><td class="column-4">26</td><td class="column-5">4</td><td class="column-6">86.67</td><td class="column-7">1</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">Design of Flight Constructor</td><td class="column-2">3.43</td><td class="column-3">3.93</td><td class="column-4">22</td><td class="column-5">8</td><td class="column-6">73.33</td><td class="column-7">1.88</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">__str__</td><td class="column-2">3.03</td><td class="column-3">3.37</td><td class="column-4">21</td><td class="column-5">9</td><td class="column-6">70</td><td class="column-7">1.56</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">Design of __str__</td><td class="column-2">2.4</td><td class="column-3">3.4</td><td class="column-4">10</td><td class="column-5">20</td><td class="column-6">33.33</td><td class="column-7">1.6</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">add_passenger</td><td class="column-2">3.9</td><td class="column-3">3.9</td><td class="column-4">30</td><td class="column-5">0</td><td class="column-6">100</td><td class="column-7">0</td>
	</tr>
	<tr class="row-7 odd">
		<td class="column-1">Design of add_passenger</td><td class="column-2">3.53</td><td class="column-3">3.87</td><td class="column-4">23</td><td class="column-5">7</td><td class="column-6">76.67</td><td class="column-7">1.43</td>
	</tr>
	<tr class="row-8 even">
		<td class="column-1">heaviest_passenger</td><td class="column-2">3</td><td class="column-3">3.27</td><td class="column-4">26</td><td class="column-5">4</td><td class="column-6">86.67</td><td class="column-7">2</td>
	</tr>
	<tr class="row-9 odd">
		<td class="column-1">Design of heaviest_passenger</td><td class="column-2">2.17</td><td class="column-3">3.1</td><td class="column-4">11</td><td class="column-5">19</td><td class="column-6">36.67</td><td class="column-7">1.68</td>
	</tr>
	<tr class="row-10 even">
		<td class="column-1">lightest_passenger</td><td class="column-2">2.83</td><td class="column-3">3.03</td><td class="column-4">28</td><td class="column-5">2</td><td class="column-6">93.33</td><td class="column-7">3</td>
	</tr>
	<tr class="row-11 odd">
		<td class="column-1">Design of lightest_passenger</td><td class="column-2">2</td><td class="column-3">2.83</td><td class="column-4">12</td><td class="column-5">18</td><td class="column-6">40</td><td class="column-7">1.61</td>
	</tr>
	<tr class="row-12 even">
		<td class="column-1">Error Checking</td><td class="column-2">1.4</td><td class="column-3">1.73</td><td class="column-4">27</td><td class="column-5">3</td><td class="column-6">90</td><td class="column-7">3.33</td>
	</tr>
	<tr class="row-13 odd">
		<td class="column-1">Style</td><td class="column-2">2.8</td><td class="column-3">3.53</td><td class="column-4">9</td><td class="column-5">21</td><td class="column-6">30</td><td class="column-7">1.24</td>
	</tr>
	<tr class="row-14 even">
		<td class="column-1">Docstrings</td><td class="column-2">1.47</td><td class="column-3">1.9</td><td class="column-4">16</td><td class="column-5">14</td><td class="column-6">53.33</td><td class="column-7">1.36</td>
	</tr>
	<tr class="row-15 odd">
		<td class="column-1">Internal Comments</td><td class="column-2">0.73</td><td class="column-3">0.67</td><td class="column-4">23</td><td class="column-5">7</td><td class="column-6">76.67</td><td class="column-7">1.71</td>
	</tr>
</tbody>
</table>

<h3>Decks and Cards Grader Comparison</h3>

<table id="wp-table-reloaded-id-7-no-1" class="wp-table-reloaded wp-table-reloaded-id-7">
<thead>
	<tr class="row-1 odd">
		<th class="column-1"></th><th class="column-2">Grader 1 – Average</th><th class="column-3">Grader 2 – Average</th><th class="column-4">Number of Agreements</th><th class="column-5">Number of Disagreements</th><th class="column-6">Agreement Percentage</th><th class="column-7">Average Disagreement Magnitude</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">Deck Constructor</td><td class="column-2">3.37</td><td class="column-3">3.57</td><td class="column-4">22</td><td class="column-5">8</td><td class="column-6">73.33</td><td class="column-7">1.75</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">Design of Deck Constructor</td><td class="column-2">3</td><td class="column-3">3.77</td><td class="column-4">18</td><td class="column-5">12</td><td class="column-6">60</td><td class="column-7">1.92</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">__str__</td><td class="column-2">2.63</td><td class="column-3">3.4</td><td class="column-4">17</td><td class="column-5">13</td><td class="column-6">56.67</td><td class="column-7">2.08</td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">Design of __str__</td><td class="column-2">2.33</td><td class="column-3">3.67</td><td class="column-4">14</td><td class="column-5">16</td><td class="column-6">46.67</td><td class="column-7">2.5</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">deal</td><td class="column-2">2.27</td><td class="column-3">3.03</td><td class="column-4">10</td><td class="column-5">20</td><td class="column-6">33.33</td><td class="column-7">1.65</td>
	</tr>
	<tr class="row-7 odd">
		<td class="column-1">Design of deal</td><td class="column-2">2.53</td><td class="column-3">3.7</td><td class="column-4">17</td><td class="column-5">13</td><td class="column-6">56.67</td><td class="column-7">2.69</td>
	</tr>
	<tr class="row-8 even">
		<td class="column-1">shuffle</td><td class="column-2">3.23</td><td class="column-3">3.53</td><td class="column-4">27</td><td class="column-5">3</td><td class="column-6">90</td><td class="column-7">3</td>
	</tr>
	<tr class="row-9 odd">
		<td class="column-1">Design of shuffle</td><td class="column-2">3</td><td class="column-3">3.47</td><td class="column-4">23</td><td class="column-5">7</td><td class="column-6">76.67</td><td class="column-7">2</td>
	</tr>
	<tr class="row-10 even">
		<td class="column-1">cut</td><td class="column-2">2.67</td><td class="column-3">2.97</td><td class="column-4">23</td><td class="column-5">7</td><td class="column-6">76.67</td><td class="column-7">1.57</td>
	</tr>
	<tr class="row-11 odd">
		<td class="column-1">Design of cut</td><td class="column-2">2.17</td><td class="column-3">2.9</td><td class="column-4">14</td><td class="column-5">16</td><td class="column-6">46.67</td><td class="column-7">1.5</td>
	</tr>
	<tr class="row-12 even">
		<td class="column-1">Error Checking</td><td class="column-2">1.07</td><td class="column-3">0.93</td><td class="column-4">27</td><td class="column-5">3</td><td class="column-6">90</td><td class="column-7">1.33</td>
	</tr>
	<tr class="row-13 odd">
		<td class="column-1">Style</td><td class="column-2">2.9</td><td class="column-3">3.63</td><td class="column-4">14</td><td class="column-5">16</td><td class="column-6">46.67</td><td class="column-7">1.63</td>
	</tr>
	<tr class="row-14 even">
		<td class="column-1">Docstrings</td><td class="column-2">1.87</td><td class="column-3">2.03</td><td class="column-4">15</td><td class="column-5">15</td><td class="column-6">50</td><td class="column-7">1.67</td>
	</tr>
	<tr class="row-15 odd">
		<td class="column-1">Internal Comments</td><td class="column-2">1.1</td><td class="column-3">0.83</td><td class="column-4">18</td><td class="column-5">12</td><td class="column-6">60</td><td class="column-7">2</td>
	</tr>
</tbody>
</table>

<h3>Findings and Analysis</h3>
<h4>It is very rare for the graders to fully agree</h4>
<p>It only happened once, on the &#8220;add_passenger&#8221; correctness criterion of the Flights and Passengers assignments.  If you sort the tables by &#8220;Number of Agreements&#8221; (or Number of Disagreements), you&#8217;ll see what I mean.</p>
<h4>Grader 2 tended to give higher marks than Grader 1</h4>
<p>In fact, there are only a handful of cases (4, by my count), where this isn&#8217;t true:</p>
<ol>
<li>The add_passenger correctness criterion on Flights and Passengers</li>
<li>The internal comments criterion on Flights and Passengers</li>
<li>The error checking criterion on Decks and Cards</li>
<li>The internal comments criterion on Decks and Cards</li>
</ol>
<h4>The graders tended to disagree more often on design and style</h4>
<p>Sort the tables by Number of Disagreements descending, and take a look down the left-hand side.</p>
<p>There are 14 criteria in total for each assignment.  If you&#8217;ve sorted the tables like I&#8217;ve asked, the top 7 criteria of each assignment are:</p>
<h5>Flights and Passengers</h5>
<ol>
<li>Style</li>
<li>Design of __str__ method</li>
<li>Design of heaviest_passenger method</li>
<li>Design of lightest_passenger method</li>
<li>Docstrings</li>
<li>Correctness of __str__ method</li>
<li>Design of Flight constructor</li>
</ol>
<h5>Decks and Cards</h5>
<ol>
<li>Correctness of deal method</li>
<li>Style</li>
<li>Design of cut method</li>
<li>Design of __str__ method</li>
<li>Docstrings</li>
<li>Design of deal method</li>
<li>__str__</li>
</ol>
<p>Of those 14, <strong>9</strong> have to do with design or style.  It&#8217;s also worth noting that Doctrings and the correctness of the __str__ methods are in there too.</p>
<h4>There were slightly more disagreement in Decks and Cards than in Flights and Passengers</h4>
<p>Total number of disagreements for Flights and Passengers:  136 (avg:  9.71 per criterion)</p>
<p>Total number of disagreements for Decks and Cards:  161 (avg:  11.5 per criterion)</p>
<h3>Discussion</h3>
<h4>Being Hands-off</h4>
<p>From the very beginning, when I contacted / hired my Graders, I was very hands-off.  Each Grader was given the assignment specifications and rubrics ahead of time to look over, and then a single meeting to ask questions.  After that, I just handed them manila envelopes filled with submissions for them to mark.</p>
<p>Having spoken with some of the undergraduate instructors here in the department, I know that this isn&#8217;t usually how grading is done.</p>
<p>Usually, the instructor will have a big grading meeting with their TAs.  They&#8217;ll all work through a few submissions, and the TAs will be free to ask for a marking opinion from the instructor.</p>
<p>By being hands-off, I didn&#8217;t give my Graders the same level of guidance that they may have been used to.  I did, however, tell them that they were free to e-mail me or come up to me if they had any questions during their marking.</p>
<p>The hands-off thing was a conscious choice by Greg and myself.  We didn&#8217;t want me to bias the marking results, since I would know which submissions would be from the treatment group, and which ones would be from control.</p>
<p>Anyhow, the results from above have driven me to conclude that if you just hand your graders the assignments and the rubrics, and say &#8220;go&#8221;, you run the risk of seeing dramatic differences in grading from each Grader.  From a student&#8217;s perspective, this means that it&#8217;s possible to be marked by &#8220;the good Grader&#8221;, or &#8220;the bad Grader&#8221;.</p>
<p>I&#8217;m not sure if a marking-meeting like I described would mitigate this difference in grading.  I hypothesize that it would, but that&#8217;s an experiment for another day.</p>
<h4>Questionable Calls</h4>
<p>If you sort the Decks and Cards table by Number of Disagreements, you&#8217;ll find that the criterion that my Graders disagreed most on was the correctness of the &#8220;deal&#8221; method.  Out of 30 submissions, both Graders disagreed on that particular criterion 21 times (70%).</p>
<p>It&#8217;s a little strange to see that criterion all the way at the top there.  As I mentioned earlier, most of the disagreements tended to be concerning design and style.</p>
<p>So what happened?</p>
<p>Well, let&#8217;s take a look at some examples.</p>
<h5>Example #1</h5>
<p>The following is the deal method from participant #013:</p>
<pre>def deal(self, num_to_deal):
  i = 0
  while i &lt; num_to_deal:
    print self.deck.pop(0)
    i += 1
</pre>
<p>Grader 1 gave this method a 1 for correctness, where Grader 2 gave this method a 4.</p>
<p>That&#8217;s a big disagreement.  And remember, a 1 on this criterion means:</p>
<blockquote><p>Barely meets assignment specifications. Severe problems throughout.</p></blockquote>
<p>I think I might have to go with Grader 2 on this one.  Personally, I wouldn&#8217;t use a while-loop here &#8211; but that falls under the design criterion, and shouldn&#8217;t impact the correctness of the method.  I&#8217;ve tried the code out.  It works to spec.  It deals from the top of the deck, just like it&#8217;s supposed to.  Sure, there are some edge cases missed here (what is the Deck is empty?  What if we&#8217;re asked to deal more than the number of cards left?  What if we&#8217;re asked to deal a negative number of cards?  etc)&#8230; but the method seems to deliver the basics.</p>
<p>Not sure what Grader 1 saw here.  Hmph.</p>
<h5>Example #2</h5>
<p>The following is the deal method from participant #023:</p>
<pre>def deal(self, num_to_deal):
 res = []
 for i in range(0, num_to_deal):
   res.append(self.cards.pop(0))
</pre>
<p>Grader 1 gave this method a 0 for correctness.  Grader 2 gave it a 3.</p>
<p>I see two major problems with this method.  The first one is that it doesn&#8217;t print out the cards that are being dealt off:  instead, it stores them in a list.  Secondly, that list is just tossed out once the method exits, and nothing is returned.</p>
<p>A &#8220;0&#8243; for correctness simply means Unimplemented, which isn&#8217;t exactly true:  this method has been implemented, and has the right interface.</p>
<p>But it doesn&#8217;t conform to the specification whatsoever.  I would give this a 1.</p>
<p>So, in this case, I&#8217;d side more (but not agree) with Grader 1.</p>
<h5>Example #3</h5>
<p>This is the deal method from participant #025:</p>
<pre>def deal(self, num_to_deal):
    num_cards_in_deck = len(self.cards)
    try:
        num_to_deal = int(num_to_deal)
        if num_to_deal &gt; num_cards_in_deck:
            print "Cannot deal more than " + num_cards_in_deck + " cards\n"
        i = 0
        while i &lt; num_to_deal:
            print str(self.cards[i])
            i += 1
        self.cards = self.cards[num_to_deal:]
    except:
        print "Error using deal\n"
</pre>
<p>Grader 1 also gave this method a 1 for correctness, where Grader 2 gave a 4.</p>
<p>The method is pretty awkward from a design perspective, but it seems to behave as it should &#8211; it deals the provided number of cards off of the top of the deck and prints them out.</p>
<p>It also catches some edge-cases:  num_to_deal is converted to an int, and we check to ensure that num_to_deal is less than or equal to the number of cards left in the deck.</p>
<p>Again, I&#8217;ll have to side more with Grader 2 here.</p>
<h5>Example #4</h5>
<p>This is the deal method from participant #030:</p>
<pre>def deal(self, num_to_deal):
  ''''''
  i = 0
  while i &lt;= num_to_deal:
    print self.cards[0]
    del self.cards[0]
</pre>
<p>Grader 1 gave this a 1.  Grader 2 gave this a 4.</p>
<p>Well, right off the bat, there&#8217;s a major problem:  this while-loop never exists.  The while-loop is waiting for the value i to become greater than num_to_deal&#8230;but it never can, because i is defined as 0, and never incremented.</p>
<p>So this method doesn&#8217;t even come close to satisfying the spec.  The description for a &#8220;1&#8243; on this criterion is:</p>
<blockquote><p>Barely meets assignment specifications. Severe problems throughout.</p></blockquote>
<p>I&#8217;d have to side with Grader 1 on this one.  The only thing this method delivers in accordance with the spec is the right interface.  That&#8217;s about it.</p>
<h4>Dealing from the Bottom of the Deck</h4>
<p>I received an e-mail from Grader 2 about the deal method.  I&#8217;ve paraphrased it here:</p>
<blockquote><p>If the students create the list of cards in a typical way, for suit in  CARD_SUITS; for rank in CARD_RANKS, and then print using something like:<br />
for card in self.cards<br />
print str(card) +  &#8220;\n&#8221;<br />
Then for deal, if they pick the cards to deal using pop() somehow, like:<br />
for i in range(num_to_deal):<br />
print str(self.cards.pop())</p>
<p>Aren&#8217;t they dealing from the bottom</p></blockquote>
<p>My answer was &#8220;yes, they are, and that&#8217;s a correctness problem&#8221;.  In my assignment specification, I was intentionally vague about the internal collection of the cards &#8211; I let the participant figure that all out.  All that mattered was that the model made sense, and followed the rules.</p>
<p>So if I print my deck, and it prints:</p>
<pre>Q of Hearts
A of Spades
7 of Clubs</pre>
<p>Then deal(1) should print:</p>
<pre>Q of Hearts
</pre>
<p>regardless of the internal organization.</p>
<p>Anyhow, only Grader 2 asked for clarification on this, and I thought this might be the reason for all of the disagreement on the deal method.</p>
<p>Looking at all of the disagreements on the deal methods, it looks like 7 out of the 20 can be accounted for because students were unintentionally dealing from the bottom of the deck, and only Grader 2 caught it.</p>
<p>Subtracting the &#8220;dealing from the bottom&#8221; disagreements from the total leaves us with 13, which puts it more in line with some of the other correctness criteria.</p>
<p>So I&#8217;d have to say that, yes, the &#8220;dealing from the bottom&#8221; problem is what made the Graders disagree so much on this criterion:  only 1 Grader realized that it was a problem while they were marking.  Again, I think this was symptomatic of my hands-off approach to this part of the experiment.</p>
<h3>In Summary</h3>
<p>My graders disagreed.  A lot.  And a good chunk of those disagreements were about style and design.  Some of these disagreements might be attributable to my hands-off approach to the grading portion of the experiment.  Some of them seem to be questionable calls from the Graders themselves.</p>
<p>Part of my experiment was interested in determining how closely peer grades from students can approximate grades from TAs.  Since my TAs have trouble agreeing amongst themselves, I&#8217;m not sure how that part of the analysis is going to play out.</p>
<p>I hope the rest of my experiment is unaffected by their disagreement.</p>
<p>Stay tuned.</p>
<h3>See anything?</h3>
<p>Do my numbers make no sense?  Have I contradicted myself?  Have I missed something critical?  Are there unanswered questions here that I might be able to answer?  I&#8217;d love to know.  Please comment!</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2010/08/24/some-more-results-did-the-graders-agree/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My Experiment Apparatus:  The Assignments, Rubrics and Mock-Ups</title>
		<link>http://mikeconley.ca/blog/2010/08/20/my-experiment-apparatus-the-assignments-rubrics-and-mock-ups/</link>
		<comments>http://mikeconley.ca/blog/2010/08/20/my-experiment-apparatus-the-assignments-rubrics-and-mock-ups/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 21:35:54 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[cards and decks]]></category>
		<category><![CDATA[code review]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[flights and passengers]]></category>
		<category><![CDATA[grading]]></category>
		<category><![CDATA[graduate studies]]></category>
		<category><![CDATA[mock-ups]]></category>
		<category><![CDATA[programming exercise]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[rubric]]></category>
		<category><![CDATA[simple]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1677</guid>
		<description><![CDATA[If you&#8217;ve read about my experiment, you&#8217;ll know that there were two Python programming assignments that my participants worked on, and a rubric for each assignment. There were also 5 mock-up submissions for each assignment that I had my participants grade.  I developed these mock-ups, after a few consultations with some of our undergraduate instructors, [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve <a href="http://mikeconley.ca/blog/2010/08/11/research-experiment-a-recap/">read about my experiment</a>, you&#8217;ll know that there were two Python programming assignments that my participants worked on, and a rubric for each assignment.</p>
<p>There were also 5 mock-up submissions for each assignment that I had my participants grade.  I developed these mock-ups, after a few consultations with some of our undergraduate instructors, in order to get a sense of the kind of code that undergraduate programmers tend to submit.</p>
<p>I&#8217;ve decided to post these materials to this blog, in case somebody wants to give them a once over.  Just thought I&#8217;d <a href="http://colabscience.com/">open my science up </a>a little bit.</p>
<p>So here they are:</p>
<h3>Flights and Passengers</h3>
<ul>
<li><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/08/Flights_and_Passengers.pdf">Assignment Specification</a></li>
<li><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/08/Flights_and_Passengers_Rubric.pdf">Marking Rubric</a></li>
<li><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/08/flights_starter_code.tar.gz">Starter Code</a></li>
<li><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/08/flights_mock-ups.tar.gz">Mock-ups</a></li>
</ul>
<h3>Cards and Decks</h3>
<ul>
<li><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/08/Decks_of_Cards.pdf">Assignment Specification</a></li>
<li><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/08/Deck_of_Cards_Rubric.pdf">Marking Rubric</a></li>
<li><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/08/decks_starter_code.tar.gz">Starter Code</a></li>
<li><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/08/decks_mock-ups.tar.gz">Mock-ups</a></li>
</ul>
<p>Peruse at your leisure.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2010/08/20/my-experiment-apparatus-the-assignments-rubrics-and-mock-ups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some Preliminary Results</title>
		<link>http://mikeconley.ca/blog/2010/08/11/some-preliminary-results/</link>
		<comments>http://mikeconley.ca/blog/2010/08/11/some-preliminary-results/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 21:47:05 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[code reading]]></category>
		<category><![CDATA[dislike]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[grading]]></category>
		<category><![CDATA[like]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[peer grading]]></category>
		<category><![CDATA[peer review]]></category>
		<category><![CDATA[peers]]></category>
		<category><![CDATA[plural possessive]]></category>
		<category><![CDATA[questionnaire]]></category>
		<category><![CDATA[rubrics]]></category>
		<category><![CDATA[statistics]]></category>
		<category><![CDATA[students]]></category>

		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1595</guid>
		<description><![CDATA[But first, a confession&#8230; Sometimes I play a little fast and loose with my English.  If there&#8217;s anything that my Natural Language Processing course taught me last year, it&#8217;s that I really don&#8217;t have a firm grasp on the formal rules of grammar. The reason I mention this is because of the word &#8220;peer&#8221;.  The [...]]]></description>
			<content:encoded><![CDATA[<h3>But first, a confession&#8230;</h3>
<p>Sometimes I play a little fast and loose with my English.  If there&#8217;s anything that my Natural Language Processing course taught me last year, it&#8217;s that I really don&#8217;t have a firm grasp on the formal rules of grammar.</p>
<p>The reason I mention this is because of the word &#8220;peer&#8221;.  The plural of peer is peers.  And the plural possessive of peer is <em>peers&#8217;</em>.  With the apostrophe.</p>
<p>I didn&#8217;t know that a half hour ago.  Emily told me, and she&#8217;s a titan when it comes to the English language.</p>
<p>The graphs below were created a few days ago, before I knew this rule.  So they use <em>peer&#8217;s</em> instead of <em>peers&#8217;</em>.  I dun goofed.  And I&#8217;m too lazy to change them (and I don&#8217;t want to use OpenOffice Draw more than I have to).</p>
<p>I just wanted to let you Internet people know that I&#8217;ve realized this, since their are so many lot of <a href="http://www.urbandictionary.com/define.php?term=Grammar%20Nazi">grammer nazi&#8217;s</a> out they&#8217;re on the webz.</p>
<p>Now, with that out of the way, where were we?</p>
<h3>The Post-Experiment Questionnaire</h3>
<p>If you read <a href="http://mikeconley.ca/blog/2010/08/11/research-experiment-a-recap/">my experiment recap</a>, then you know that my treatment group wrote a questionnaire after they were done all of their assignment writing.</p>
<p>The questionnaire was used to get an impression of how participants felt about their peer reviewing experience.</p>
<h4>A note on the peer reviewing experience</h4>
<p>Just to remind you, my participants were marking mock-ups that I created for an assignment that they had just written.  There were 5 mock-ups per assignment, so 10 mock-ups in total.  Some of my mock-ups were very concise.  Others were intentionally horrible and hard to read.  Some were extremely vigilant in their documentation.  Others were laconic.  I tried to capture a nice spectrum of first year work. None of my participants knew that I had mocked the assignments up.</p>
<h4>Anyhow, back to the questionnaire&#8230;</h4>
<p>The questionnaire made the following statements, and asked students to agree on a scale from 1 to 5, where 1 was Strongly Disagree and 5 was Strongly Agree:</p>
<ol>
<li><a href="#unusual_to_see_code_written_by_peers">It is unusual for me to see code written by my peers.</a></li>
<li><a href="#seeing_peers_code_taught_me">Seeing my peer&#8217;s code taught me things I didn&#8217;t already know.</a></li>
<li><a href="#saw_peers_know_quality_of_own">Because I saw and graded my peer&#8217;s work, I believe I know more about the quality of my own work.</a></li>
<li><a href="#interested_in_knowing_how_peers_graded">I am interested in knowing how my peers graded me.</a></li>
<li><a href="#would_have_written_differently_if_rubric">I would have written the code for my first assignment differently if I had seen the rubric beforehand.</a></li>
<li><a href="#enjoyed_seeing_other_assignments">During this experiment, I enjoyed seeing other student&#8217;s assignments.</a></li>
<li><a href="#enjoyed_grading_peers_work">I enjoyed grading my peer&#8217;s work.</a></li>
<li><a href="#found_grading_difficult">I found grading my peer&#8217;s work difficult.</a></li>
<li><a href="#confident_grading_was_fair">I&#8217;m confident that the grading I did was fair.</a></li>
<li><a href="#because_peers_coded_differently">Because I knew that my peers would be seeing and grading my code for the first assignment, I coded it differently than I would have normally.</a></li>
</ol>
<p>For questions 2, 5, 7, 8, and 10, participants were asked to expand with a written comment if they answered 3 or above.</p>
<p>Of the 30 participants in my study, 15 were in my treatment group, and therefore only 15 people filled out this questionnaire.</p>
<p>The graphs are <strong>histograms</strong> &#8211; that means that the higher the bar is, the more participants answered the question that way.</p>
<p>So, without further ado, here are the results&#8230;</p>
<h3><a name="unusual_to_see_code_written_by_peers"></a></h3>
<p><a href="http://chart.apis.google.com/chart?chxl=0:|%23+of+Participants&amp;chxp=0,45&amp;chxr=1,0,6&amp;chxs=0,676767,15.5,-0.5,l,67676700|1,676767,11.5,0.5,l,676767&amp;chxt=x,y&amp;chbh=a,4,15&amp;chs=740x405&amp;cht=bvg&amp;chco=224499&amp;chds=0,6&amp;chd=t:1,3,5,4,2&amp;chtt=I+found+grading+my+peer%27s+work+difficult."></a><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/unusual_to_see_peers_code.jpg"><img class="alignnone size-full wp-image-1609" title="It is unusual for me to see code written by my peers." src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/unusual_to_see_peers_code.jpg" alt="It is unusual for me to see code written by my peers." width="646" height="420" /></a></p>
<p>While there&#8217;s more weight on the positive side, opinion seems pretty split on this one.  It might really depend on what kind of social / working group you have in your programming classes.</p>
<p>It might also depend on how adherent students are to the rules, since sharing code with your peers is a bit of a no-no according to the UofT Computer Science rules of conduct.  Most programming courses have something like the following on their syllabus:</p>
<blockquote><p>Never look at another student’s assignment solution, whether it is on paper or on the computer<br />
screen. Never show another student your assignment solution. This applies to all drafts of a solution<br />
and to incomplete solutions.</p></blockquote>
<p>Of course, this only applies before an assignment is due.  Once the due date has passed, it&#8217;s OK to look at one another&#8217;s code&#8230;but how many students do that?</p>
<p>Anyhow, looking at the graph, I don&#8217;t think we got too much out of that one.  Let&#8217;s move on.</p>
<h3><a name="seeing_peers_code_taught_me"></a></h3>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/seeing_code_taught_me_things_didnt_know.jpg"><img class="alignnone size-full wp-image-1607" title="Seeing my peer's code taught me things I didn't already know." src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/seeing_code_taught_me_things_didnt_know.jpg" alt="Seeing my peer's code taught me things I didn't already know." width="654" height="473" /></a></p>
<p>Well, that&#8217;s a nice strong signal.  Clearly, there&#8217;s more weight on the positive side.  So my participants seem to understand that grading the code is teaching them something.  That&#8217;s good.</p>
<p>And now for an interesting question:  is there any relationship between the amount of programming experience of the participant, and how they answered this question?  Good question.  Before the experiment began, all participants filled out a brief questionnaire.  The questionnaire asked them to provide, in months, how much time they&#8217;ve spent in either a programming intensive course, or a programming job.  So that&#8217;s my fuzzy measure for programming experience.</p>
<p>The result was surprising.</p>
<h4>For participants who answered 5 (strongly agreed that they learned things they didn&#8217;t already know):</h4>
<p>Number of participants:  7<br />
Maximum number of months:  36<br />
Minimum number of months:  4<br />
Average number of months:  16</p>
<h4>For participants who answered 4:</h4>
<p>Number of participants:  1<br />
Number of months:  16</p>
<h4>For participants who answered 3:</h4>
<p>Number of participants:  4<br />
Maximum number of months:  16<br />
Minimum number of months:  8<br />
Average number of months:  13</p>
<h4>For participants who answered 2:</h4>
<p>Number of participants:  1<br />
Average number of months:  5</p>
<h4>For participants who answered 1 (strongly disagreed that they learned things they didn&#8217;t already know):</h4>
<p>Number of participants:  1<br />
Average number of months: 16</p>
<p>So there&#8217;s no evidence here that participants with more experience felt they learned less from the peer grading.</p>
<p>This was one of those questions where participants were asked to expand if they answered 3 or above.  Here are some juicy morsels:</p>
<h4>If you answered 3 or greater to the question above, what did you learn?</h4>
<blockquote><p>I learned some tricks and shortcuts of coding that make the solution more elegant and sometimes shorter.</p></blockquote>
<blockquote><p>&#8230;it showed me how hard some code are to read since I do not know what is in the programmer&#8217;s head.</p></blockquote>
<blockquote><p>I learned how different their coding style are compared to mine, as well as their reasoning to the assignment.</p></blockquote>
<blockquote><p>l learned about how other people think differently on same question and their programming styles can be different very much.</p></blockquote>
<blockquote><p>one of the codes I marked is very elegant and clear. It uses very different path from others. I really enjoyed that code. I think good codes from peers help us learn more.</p></blockquote>
<blockquote><p>I didn&#8217;t know about the random.shuffle method.  I also didn&#8217;t know that it would have been better to use Exceptions which I don&#8217;t really know.</p></blockquote>
<blockquote><p>The different design or thinking towards the same question&#8217;s solution, and other ways to interpret a matter.</p></blockquote>
<blockquote><p>Other people can have very convoluted solutions&#8230;</p></blockquote>
<blockquote><p>Different ways of solving a problem</p></blockquote>
<blockquote><p>A few Python shortcuts, especially involving string manipulation. As well, I learned how to efficiently shuffle a list.</p></blockquote>
<blockquote><p>algorithm (ways of thinking), different ways of doing the same thing</p></blockquote>
<blockquote><p>Sometimes a few little tricks or styles that I had forgotten about.  Also just a few different ways to go about solving the problem.</p></blockquote>
<p>So what conclusions can I draw from this?</p>
<p>It looks like, regardless of experience, students seem to think peer grading teaches them something &#8211; even if it&#8217;s just a different design, or an approach to a problem.</p>
<h3><a name="saw_peers_know_quality_of_own"></a></h3>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/quality_of_my_work.jpg"><img class="alignnone size-full wp-image-1606" title="Because I saw and graded my peer's work, I believe I know more about the quality of my own work." src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/quality_of_my_work.jpg" alt="Because I saw and graded my peer's work, I believe I know more about the quality of my own work." width="649" height="434" /></a></p>
<p>Another clear signal in the &#8220;strongly agree&#8221; camp.  This one is kind of a no-brainer though &#8211; seeing work by others certainly gives us a sense of how our own work rates in comparison.  We do this kind of comparison all the time.</p>
<p>Anyhow, my participants seem to agree with that.</p>
<h3><a name="interested_in_knowing_how_peers_graded"></a></h3>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/know_how_peers_graded_me.jpg"><img class="alignnone size-full wp-image-1605" title="I am interested in knowing how my peers graded me." src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/know_how_peers_graded_me.jpg" alt="I am interested in knowing how my peers graded me." width="659" height="453" /></a></p>
<p>Again, a lot of agreement there.  Students are curious to know what their peers think of their work.  They care what their peers think.  This is good.  This is important.</p>
<h3><a name="would_have_written_differently_if_rubric"></a></h3>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/seeing_rubric_would_have_changed_things.jpg"><img class="alignnone size-full wp-image-1608" title="I would have written the code for my first assignment differently if I had seen the rubric beforehand." src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/seeing_rubric_would_have_changed_things.jpg" alt="I would have written the code for my first assignment differently if I had seen the rubric beforehand." width="682" height="442" /></a></p>
<p>Hm.  More of a mixed reaction here.  There&#8217;s more weight on the &#8220;strongly agree&#8221; side, but not a whole lot more.</p>
<p>This is interesting though.  If I find that my treatment group does perform better on their second assignment, is it possible that their improvement isn&#8217;t from the grading, but rather from their intense study of the rubric?</p>
<p>So, depending on whether or not there&#8217;s an improvement, my critics could say I might have a wee case of <a href="http://en.wikipedia.org/wiki/Confounding_factor">confounding factor</a> syndrome, here.</p>
<p>And I would agree with them.  However, I would also point out that if there <em>was </em>an improvement in the treatment group, it wouldn&#8217;t matter what the actual <em>source</em> of the learning was &#8211; the peer grading (along with the rubric) caused an improvement.  And that&#8217;s fine.  That&#8217;s an OK result.</p>
<p>Of course, this is all theoretical until I find out if there was an improvement in the treatment group grades.  Stay tuned for that.</p>
<p>Anyhow, this was another one of those questions where I asked for elaboration for answers 3 and up.  Here&#8217;s what the participants had to say:</p>
<h4>If you answered 3 or greater to the question above, what would you have done differently?</h4>
<blockquote><p>I would have checked for exceptions (and know what exceptions to check). I would have put more comments and docstrings into my code. I would have named my variables more reasonably.</p>
<p>I would&#8217;ve wrote out documentation. (ie. docstrings) Though I found that internal commenting wasn&#8217;t necessary.</p>
<p>i&#8217;ll add more comments to my code and maybe some more exceptions.</p>
<p>Added comments and docstrings.</p>
<p>Code&#8217;s design, style, clearness, readability and docstrings.</p>
<p>Made more effort to write useful docstrings and comments</p>
<p>I would&#8217;ve included things that I wouldn&#8217;t have included if I was coding for myself (such as comments and docstrings).</p>
<p>Added more documentation (I forget what it&#8217;s called but it&#8217;s when you surround the comments with &#8220;&#8221; &#8221;&#8217; &#8220;&#8221;)</p>
<p>Written more docstrings and comments (even though I think the code was simple enough and the method names self-explanatory enough that the code didn&#8217;t need more than one or two terse docstrings).</p>
<p>I forgot about docstrings and commenting my code</p></blockquote>
<p>So it sounds like evaluation on documentation wasn&#8217;t clear enough in my assignment specification.  There&#8217;s also some indication that participants thought that documentation wasn&#8217;t necessary if the code is simple enough.  With respect to <a href="http://en.wikipedia.org/wiki/Docstring">Docstrings</a>, I&#8217;d have to disagree, since Docstrings are overwhelmingly useful for generating and compiling documentation.  That&#8217;s just my own personal feelings on the matter, though.</p>
<h3><a name="enjoyed_seeing_other_assignments"></a></h3>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/enjoyed_seeing_others_students_assignments.jpg"><img class="alignnone size-full wp-image-1603" title="During this experiment, I enjoyed seeing other student's assignments" src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/enjoyed_seeing_others_students_assignments.jpg" alt="During this experiment, I enjoyed seeing other student's assignments" width="595" height="433" /></a></p>
<p><strong>Note:</strong> this is not to be confused with &#8220;I enjoyed grading my peers&#8217; work&#8221;, which is the next question.</p>
<p>Mostly agreement here.  So that&#8217;s interesting &#8211; participants enjoyed the simple act of <em>seeing and reading</em><em> </em>code written by their peers.</p>
<h3><a name="enjoyed_grading_peers_work"></a></h3>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/enjoyed_grading_peers_work.jpg"><img class="alignnone size-full wp-image-1602" title="I enjoyed grading my peer's work." src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/enjoyed_grading_peers_work.jpg" alt="I enjoyed grading my peer's work." width="622" height="436" /></a></p>
<p>It looks like, in general, <strong>students don&#8217;t really enjoy grading their peers&#8217; code.</strong> Clearly, it&#8217;s not a universal opinion &#8211; you can see there&#8217;s some disagreement in the graph.  Still, the trend seems to go towards the &#8220;strongly disagree&#8221; camp.</p>
<p>That&#8217;s a very useful finding.  There&#8217;s nothing worse than sweating your butt off to design and construct a new task for students, only to find out that they hate doing it.  We may have caught this early.</p>
<p>And I don&#8217;t actually find this that surprising:  code review isn&#8217;t exactly a pleasurable experience.  The benefits are certainly nice, but code review is a bit like flossing&#8230; it just seems to slow the morning routine down, regardless of the benefits.</p>
<p>Here&#8217;s what some participants had to say about their answers:</p>
<h4>If you answered 3 or greater to the question above, why did you enjoy grading your peer&#8217;s work?</h4>
<blockquote><p>Because I like to compare my thoughts and other people&#8217;s thoughts.</p>
<p>well, some of the codes are really hard to read. But I did learn something from the grading. And letting students grade the codes is more fair.</p>
<p>I got to see where I went wrong and saw more creative/efficient solutions which will give me ideas for future assignments. But otherwise it was really boring.</p>
<p>So that I can learn from my peer&#8217;s thinking which gives me more diversity of coding and problem-solving.</p>
<p>Sometimes you see other student&#8217;s styles of coding/commenting/documenting and it helps you write better code. Sometimes you learn things that you didn&#8217;t know before. Sometimes it&#8217;s funny to see how other people code.</p>
<p>It was interesting to see their ideas, although sometimes painful to see their style.</p>
<p>not so much the grading part, but analyzing/looking at the different ways of coding the same thing</p>
<p>It gave me a rare prospective to see how other people with a similar educational background write their code.</p>
<p>Makes you think more critically about the overall presentation of your code.  You ask yourself : &#8220;What would someone think of my code if they were doing this?  Would I get a good mark?&#8221;</p></blockquote>
<h3><a name="found_grading_difficult"></a></h3>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/found_grading_peers_difficult.jpg"><img class="alignnone size-full wp-image-1604" title="I found grading my peer's work difficult." src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/found_grading_peers_difficult.jpg" alt="I found grading my peer's work difficult." width="625" height="448" /></a></p>
<p>This one is more or less split right down the middle, with a little more weight on the agree side.</p>
<p>Again, participants who answered 3 or above were asked to elaborate.  Here are some comments:</p>
<h4>If you answered 3 or greater to the question above, what about grading your peer&#8217;s work was difficult?</h4>
<blockquote><p>The hardest part was trying to trace through messy code in order to figure out if it actually works.</p>
<p>Emotionally, I know what the student is doing but I have to give bad marks for comments or style which makes me feel bad. Sometimes it is hard to distinguish the mark whether it is 3 or 4. The time was critical (did not have time to finish all papers) which might result in giving the wrong mark. I kept comparing marks and papers so I could get almost the fairest result between all students. It is hard to mark visually, i.e. not testing the code. Some codes are hard to read which make it hard for marking and I can assume it is wrong but it actually works.</p>
<p>Giving bad marks are hard!  Reading bad code is painful!  It wasn&#8217;t fun! <img src='http://mikeconley.ca/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>It just became really tedious trying to understand people&#8217;s code.</p>
<p>To test and verify their code is hard sometimes as their method of solving a problem might be complicated. I need to think very carefully and test their code progressively.</p>
<p>The rubric felt a little too strict. Sometimes a peer&#8217;s code had small difficulties that could easily be overcome, but would be labeled as very poor. Also, the rubric wasn&#8217;t clear enough, especially on the error handling portions and style. There could be many ways of coding for example the __str__ functions (using concatenation versus using format eg. &#8216; %s&#8217; % string as opposed to using + str(string) +)</p>
<p>I just found it hard to read other&#8217;s code because I already have a set idea of how to solve the problems. I did not see how the solutions of my peers would&#8217;ve improved my own solutions, so I did not find value in this.</p>
<p>Reading through each line of code and trying to figure out what it does</p>
<p>Reading through convoluted, circuitous code to determine correctness.</p>
<p>Not every case is clear-cut, and sometimes it&#8217;s hard to decide which score to give.</p>
<p>Being harsh and honest.  I guess it&#8217;s good not to ever meet the people who wrote the codes (unlike TAs) because they aren&#8217;t there to defend themselves.  Saves some headaches <img src='http://mikeconley.ca/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></blockquote>
<h3><a name="confident_grading_was_fair"></a></h3>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/confident_my_grading_was_fair.jpg"><img class="alignnone size-full wp-image-1601" title="I'm confident that the grading I did was fair." src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/confident_my_grading_was_fair.jpg" alt="I'm confident that the grading I did was fair." width="693" height="470" /></a></p>
<p>Ok, more or less full agreement here.  At least, no disagreement.  But also no full agreement.  It&#8217;s sort of a lethargic &#8220;meh&#8221; with a flaccid thumbs up.</p>
<p>The conclusion?  My participants felt that, more or less, their grading was probably fair.  I guess.</p>
<h3><a name="because_peers_coded_differently"></a></h3>
<p><a href="http://mikeconley.ca/blog/wp-content/uploads/2010/07/because_peers_coded_different.jpg"><img class="alignnone size-full wp-image-1600" title="Because I knew that my peers would be seeing and grading my code for the first assignment, I coded it differently than I would have normally." src="http://mikeconley.ca/blog/wp-content/uploads/2010/07/because_peers_coded_different.jpg" alt="Because I knew that my peers would be seeing and grading my code for the first assignment, I coded it differently than I would have normally." width="660" height="478" /></a></p>
<p>Now this one&#8230;</p>
<p>This one is tricky, because I might have to toss it out.  Each one of my participants was told flat out that other participants in the study may or may not see their code.  This is true, since the graders are also participants in the study.</p>
<p>However, I did not outright tell them that other participants would be grading their code for the first assignment.  So I think this question may have come as a surprise to them.</p>
<p>That was an oversight on my part.  I screwed up.  I&#8217;m human.</p>
<p>The two lone participants who answered 3 or above wrote:</p>
<h4>If you answered 3 or greater to the question above, what did you do differently?</h4>
<blockquote><p>Making the docstring comments more clear, simplifying my design as possible, writing in a better style.</p></blockquote>
<blockquote><p>Added a bit more comments to explain my code in case peers don&#8217;t understand.</p></blockquote>
<p>Anyhow, so those are my initial findings.  If you have any questions about my data, or ideas on how I could analyze it, please let me know.  I&#8217;m all ears.</p>
]]></content:encoded>
			<wfw:commentRss>http://mikeconley.ca/blog/2010/08/11/some-preliminary-results/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

