<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Lessons from peerScholar:  An Approach to Teaching Code Review</title>
	<atom:link href="http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/</link>
	<description>The personal blog of a Toronto based software developer, musician, sound designer, and theatre enthusiast.</description>
	<lastBuildDate>Tue, 24 Jan 2012 15:00:38 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Mike</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1116</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Thu, 25 Mar 2010 22:38:23 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1116</guid>
		<description>@Alexei:

Thanks for the input!

I&#039;m concerned that your approach only captures how useful students *think* reviews are.  I&#039;m also interested in how useful the reviews *actually* are to the students.

To that end, my experiment has undergone some serious redesign over the last few days.  I&#039;ll be posting about it soon!

Cheers,

-Mike</description>
		<content:encoded><![CDATA[<p>@Alexei:</p>
<p>Thanks for the input!</p>
<p>I&#8217;m concerned that your approach only captures how useful students *think* reviews are.  I&#8217;m also interested in how useful the reviews *actually* are to the students.</p>
<p>To that end, my experiment has undergone some serious redesign over the last few days.  I&#8217;ll be posting about it soon!</p>
<p>Cheers,</p>
<p>-Mike</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alexei</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1113</link>
		<dc:creator>Alexei</dc:creator>
		<pubDate>Thu, 25 Mar 2010 05:24:19 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1113</guid>
		<description>I think the proposal misses the most important point of code reviews - the fact that they result in better code.

Why not do the following:

For each assignment have two problems - half the students have to solve one, the other half have to solve the other.
Have two deadlines. Deadline 1 - submit your assignment solution to 5 random reviewers (that were selected for you by the system).
Deadline 2 - incorporate feedback from review comments, modify your code, and submit assignment for grading by TA, as well as rating how useful each of the 5 reviews was to improving your code.

(Obviously, the students reviewing your code would be working on a different assignment problem and vica versa.)

This way, the person getting the reviews can rate their usefulness (which is much better than rating &quot;how close is this to the TA&#039;s grade&quot;).</description>
		<content:encoded><![CDATA[<p>I think the proposal misses the most important point of code reviews &#8211; the fact that they result in better code.</p>
<p>Why not do the following:</p>
<p>For each assignment have two problems &#8211; half the students have to solve one, the other half have to solve the other.<br />
Have two deadlines. Deadline 1 &#8211; submit your assignment solution to 5 random reviewers (that were selected for you by the system).<br />
Deadline 2 &#8211; incorporate feedback from review comments, modify your code, and submit assignment for grading by TA, as well as rating how useful each of the 5 reviews was to improving your code.</p>
<p>(Obviously, the students reviewing your code would be working on a different assignment problem and vica versa.)</p>
<p>This way, the person getting the reviews can rate their usefulness (which is much better than rating &#8220;how close is this to the TA&#8217;s grade&#8221;).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Siebenmann</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1061</link>
		<dc:creator>Chris Siebenmann</dc:creator>
		<pubDate>Wed, 17 Mar 2010 06:18:00 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1061</guid>
		<description>Some thoughts on the in-class process: I think it should be possible to appeal your review grade if you either believe that you found flaws in the code that the TAs did not (and so marked it lower than they did) or that the code is not as flawed as the TAs think (so you marked it higher).

To avoid lots of drama, if you find additional flaws that the TAs did not,
the original person&#039;s assignment mark is *not* lowered (you just get bonus
credit for your code review). However, if you convince people that the code
is not as flawed as the TAs think the original person&#039;s assignment mark *is*
raised; however, other people who agreed with the TAs in their code review
get full credit (since one can hardly blame people for not being better
than the TAs). Both of these should be prominently mentioned in the appeal
process. If you do code review on your own assignment this should apply
to that too, just as with other people&#039;s assignments. Yes, you can game
this last one a bit, but I&#039;d rather encourage people to be honestly harsh
on their own code even at the expense of getting one past the TAs.

(This implies that the assignment and/or the code review guidelines should
clearly document things that the submitted programs do not need to do, so
that people don&#039;t spend all day finding obscure things that the code they&#039;re
reviewing doesn&#039;t handle.)

This should apply primarily to code flaws, not to stylistic issues and
basic correctness (enough comments, tests exist, docstrings are sensible,
etc).</description>
		<content:encoded><![CDATA[<p>Some thoughts on the in-class process: I think it should be possible to appeal your review grade if you either believe that you found flaws in the code that the TAs did not (and so marked it lower than they did) or that the code is not as flawed as the TAs think (so you marked it higher).</p>
<p>To avoid lots of drama, if you find additional flaws that the TAs did not,<br />
the original person&#8217;s assignment mark is *not* lowered (you just get bonus<br />
credit for your code review). However, if you convince people that the code<br />
is not as flawed as the TAs think the original person&#8217;s assignment mark *is*<br />
raised; however, other people who agreed with the TAs in their code review<br />
get full credit (since one can hardly blame people for not being better<br />
than the TAs). Both of these should be prominently mentioned in the appeal<br />
process. If you do code review on your own assignment this should apply<br />
to that too, just as with other people&#8217;s assignments. Yes, you can game<br />
this last one a bit, but I&#8217;d rather encourage people to be honestly harsh<br />
on their own code even at the expense of getting one past the TAs.</p>
<p>(This implies that the assignment and/or the code review guidelines should<br />
clearly document things that the submitted programs do not need to do, so<br />
that people don&#8217;t spend all day finding obscure things that the code they&#8217;re<br />
reviewing doesn&#8217;t handle.)</p>
<p>This should apply primarily to code flaws, not to stylistic issues and<br />
basic correctness (enough comments, tests exist, docstrings are sensible,<br />
etc).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Siebenmann</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1056</link>
		<dc:creator>Chris Siebenmann</dc:creator>
		<pubDate>Tue, 16 Mar 2010 22:22:21 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1056</guid>
		<description>@Mike:

&gt; Instead of a pre-built solution, would a standard marking rubric be
&gt; enough? The rubric criteria would give, essentially, a “checklist”
&gt; of things to watch out for. Contrived example: code has doc-strings
&gt; for each class and method, over most, over some, over few, none,
&gt; etc…

I think that students should get this sort of standard rubric (to the
extent that they didn&#039;t get it at the start of class), but I think it&#039;s
not enough. The kind of cheat sheet I&#039;m thinking of is not covering
style or basics of well written code in general, it&#039;s covering what I
called the dark corners of the assignment: the common subtle coding
mistakes that people make. For example, overlooking some particular race
condition in a concurrent program, or not handling out of range input,
or the like. These are always going to be specific to the assignment,
and you may not be able to figure them out in advance.

(Here I am assuming that the TAs are marking the assignment for more
than just code style, that they&#039;re also marking for correct, complete,
and well written code.)

Also, this is probably obvious: if the assignment is run through
automated tests before being marked by the TAs, the code reviewers
should see the test results if the TAs do. Various failed tests are
quite likely a red flag to look in specific areas for code flaws (or
just knowledge that certain flaws have to exist), so both sides need the
same starting information.

Re: my idea of students reviewing their own assignments. In retrospect,
this is probably not workable for your experiment (unless you can sign
up a chunk of an eager class to do this work). However, it might work to
create a ringer assignment, one with specific subtle flaws, and then see
if student reviewers spot more of the flaws if they see the ringer at
the end of their code review then if it&#039;s the first assignment that they
review. (Getting enough subjects for statistically valid results might
be tricky, since there are so many other variables in play here.)</description>
		<content:encoded><![CDATA[<p>@Mike:</p>
<p>&gt; Instead of a pre-built solution, would a standard marking rubric be<br />
&gt; enough? The rubric criteria would give, essentially, a “checklist”<br />
&gt; of things to watch out for. Contrived example: code has doc-strings<br />
&gt; for each class and method, over most, over some, over few, none,<br />
&gt; etc…</p>
<p>I think that students should get this sort of standard rubric (to the<br />
extent that they didn&#8217;t get it at the start of class), but I think it&#8217;s<br />
not enough. The kind of cheat sheet I&#8217;m thinking of is not covering<br />
style or basics of well written code in general, it&#8217;s covering what I<br />
called the dark corners of the assignment: the common subtle coding<br />
mistakes that people make. For example, overlooking some particular race<br />
condition in a concurrent program, or not handling out of range input,<br />
or the like. These are always going to be specific to the assignment,<br />
and you may not be able to figure them out in advance.</p>
<p>(Here I am assuming that the TAs are marking the assignment for more<br />
than just code style, that they&#8217;re also marking for correct, complete,<br />
and well written code.)</p>
<p>Also, this is probably obvious: if the assignment is run through<br />
automated tests before being marked by the TAs, the code reviewers<br />
should see the test results if the TAs do. Various failed tests are<br />
quite likely a red flag to look in specific areas for code flaws (or<br />
just knowledge that certain flaws have to exist), so both sides need the<br />
same starting information.</p>
<p>Re: my idea of students reviewing their own assignments. In retrospect,<br />
this is probably not workable for your experiment (unless you can sign<br />
up a chunk of an eager class to do this work). However, it might work to<br />
create a ringer assignment, one with specific subtle flaws, and then see<br />
if student reviewers spot more of the flaws if they see the ringer at<br />
the end of their code review then if it&#8217;s the first assignment that they<br />
review. (Getting enough subjects for statistically valid results might<br />
be tricky, since there are so many other variables in play here.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1055</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Tue, 16 Mar 2010 21:08:00 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1055</guid>
		<description>@Chris Siebenmann:

&gt; I think that if you do the code review straight, as proposed, you are
&gt; effectively testing for two things at once; you’re testing both the
&gt; ability of students to do good code reviews and their ability to fully
&gt; understand the dark corners of the assignment. If I was a student, I
&gt; would feel kind of grumpy about effectively getting hit twice if I
&gt; didn’t fully understand the assignment; I’d lose marks on my solution
&gt; and then I’d lose more marks on bad code reviews (because I would miss
&gt; problems that the TAs would see).

Well put, and a very good point.

&gt; My suggestion is that every student doing reviews should get a cheat
&gt; sheet of ‘common mistakes to look for’. This shouldn’t cover everything
&gt; and wouldn’t reduce code review to a mechanical process, but hopefully
&gt; would get much closer to only measuring how well the students can review
&gt; code and see things in it. The cheat sheet might be drawn up by the TAs
&gt; after marking the assignments or it might be prepared in advance based
&gt; on what the instructor is expecting people to have problems with.

Instead of a pre-built solution, would a standard marking rubric be enough?  The
rubric criteria would give, essentially, a &quot;checklist&quot; of things to watch out for.
Contrived example:  code has doc-strings for each class and method, over most, 
over some, over few, none, etc...

&gt; Also, it strikes me that it might be interesting to have students review
&gt; their own assignment at the end of the review process. Having gone
&gt; through a series of code reviews of other people’s code, have they
&gt; learned enough to see the flaws in their own code? (My naive feeling
&gt; is that this is not gameable, except to the extent that if you submit
&gt; a terrible assignment you can at least get some marks back for being
&gt; able to admit how terrible it is.)

This is a *very* interesting idea.  Thank you!  Keep your eyes peeled for another
blog post about this!</description>
		<content:encoded><![CDATA[<p>@Chris Siebenmann:</p>
<p>> I think that if you do the code review straight, as proposed, you are<br />
> effectively testing for two things at once; you’re testing both the<br />
> ability of students to do good code reviews and their ability to fully<br />
> understand the dark corners of the assignment. If I was a student, I<br />
> would feel kind of grumpy about effectively getting hit twice if I<br />
> didn’t fully understand the assignment; I’d lose marks on my solution<br />
> and then I’d lose more marks on bad code reviews (because I would miss<br />
> problems that the TAs would see).</p>
<p>Well put, and a very good point.</p>
<p>> My suggestion is that every student doing reviews should get a cheat<br />
> sheet of ‘common mistakes to look for’. This shouldn’t cover everything<br />
> and wouldn’t reduce code review to a mechanical process, but hopefully<br />
> would get much closer to only measuring how well the students can review<br />
> code and see things in it. The cheat sheet might be drawn up by the TAs<br />
> after marking the assignments or it might be prepared in advance based<br />
> on what the instructor is expecting people to have problems with.</p>
<p>Instead of a pre-built solution, would a standard marking rubric be enough?  The<br />
rubric criteria would give, essentially, a &#8220;checklist&#8221; of things to watch out for.<br />
Contrived example:  code has doc-strings for each class and method, over most,<br />
over some, over few, none, etc&#8230;</p>
<p>> Also, it strikes me that it might be interesting to have students review<br />
> their own assignment at the end of the review process. Having gone<br />
> through a series of code reviews of other people’s code, have they<br />
> learned enough to see the flaws in their own code? (My naive feeling<br />
> is that this is not gameable, except to the extent that if you submit<br />
> a terrible assignment you can at least get some marks back for being<br />
> able to admit how terrible it is.)</p>
<p>This is a *very* interesting idea.  Thank you!  Keep your eyes peeled for another<br />
blog post about this!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1054</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Tue, 16 Mar 2010 21:01:20 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1054</guid>
		<description>@Chris:

&gt; It would be interesting to break your test subjects into three groups based on the 
&gt; initial TA markings then present the solutions in the following orders for review:
&gt; * Random
&gt; * Decreasing TA marks
&gt; * Increasing TA marks

I agree, that would be interesting. :)  IE - what are the learning effects (if any) of viewing 
progressively better code?  Worse code?

&gt; I could see how reviewing only solutions that the TAs scored with failing grades 
&gt; could be detrimental and a waste of time.

I agree.

&gt; How are you going to provide experience and guidance? For example, a student may not be aware 
&gt; that using `strncpy()` is greater than `strcpy()` wrt security. How could you expect them 
&gt; to apply that knowledge to their reviews if they couldn’t apply it in their solutions 
&gt; as @Severin has mentioned?

Another good question.  Keep your eyes peeled for another blog post - I may have come up with
a solution...

&gt; There seems to be a lot of knowledge rolling into an overall scalar mark. Perhaps you would be 
&gt; more interested in knowing the students thoughts and method of arriving at the mark. 

I probably didn&#039;t make it explicit, but in my head, the grading was done against a rubric.  So
instead of x out of 10, it&#039;d be series of marks from 0 to 4 based on various marking criteria.
At least then, we have some more granularity, and insight into *why* certain marks were given.

&gt; It would be neat then to email back the student their assignment with their classmates +/- 
&gt; score for each line and any comments. This has risk involved too since student generated
&gt; comments could be wrong, misleading, vulgar.

Yep.  So far, I have skirted around the question of whether or not to actually *show* the reviews
to the original author.  It really depends, I suppose, on how useful the feedback would be.

Thanks for the feedback!</description>
		<content:encoded><![CDATA[<p>@Chris:</p>
<p>> It would be interesting to break your test subjects into three groups based on the<br />
> initial TA markings then present the solutions in the following orders for review:<br />
> * Random<br />
> * Decreasing TA marks<br />
> * Increasing TA marks</p>
<p>I agree, that would be interesting. <img src='http://mikeconley.ca/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   IE &#8211; what are the learning effects (if any) of viewing<br />
progressively better code?  Worse code?</p>
<p>> I could see how reviewing only solutions that the TAs scored with failing grades<br />
> could be detrimental and a waste of time.</p>
<p>I agree.</p>
<p>> How are you going to provide experience and guidance? For example, a student may not be aware<br />
> that using `strncpy()` is greater than `strcpy()` wrt security. How could you expect them<br />
> to apply that knowledge to their reviews if they couldn’t apply it in their solutions<br />
> as @Severin has mentioned?</p>
<p>Another good question.  Keep your eyes peeled for another blog post &#8211; I may have come up with<br />
a solution&#8230;</p>
<p>> There seems to be a lot of knowledge rolling into an overall scalar mark. Perhaps you would be<br />
> more interested in knowing the students thoughts and method of arriving at the mark. </p>
<p>I probably didn&#8217;t make it explicit, but in my head, the grading was done against a rubric.  So<br />
instead of x out of 10, it&#8217;d be series of marks from 0 to 4 based on various marking criteria.<br />
At least then, we have some more granularity, and insight into *why* certain marks were given.</p>
<p>> It would be neat then to email back the student their assignment with their classmates +/-<br />
> score for each line and any comments. This has risk involved too since student generated<br />
> comments could be wrong, misleading, vulgar.</p>
<p>Yep.  So far, I have skirted around the question of whether or not to actually *show* the reviews<br />
to the original author.  It really depends, I suppose, on how useful the feedback would be.</p>
<p>Thanks for the feedback!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1053</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Tue, 16 Mar 2010 20:49:02 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1053</guid>
		<description>@Severin:

Good point, re:  the time to ponder an assignment.  Hadn&#039;t considered that.  

Not sure how I could account for that - unless I use a real-world assignment, and my participants are students from a course that recently gave it (ie:  they&#039;re already familiar with the assignment).

&gt; Ok, but I see a little contradiction here. Either one doesn’t give students hints 
&gt; as to what to look for when reviewing, or students get hints and will be able to 
&gt; potentially compensate for what they might have missed while working on the assignment 
&gt; when doing reviews. I.e. they’d have a chance to do a good review but get weaker 
&gt; marks for their assignment, which, still, could make sense. The question is, 
&gt; what is of most interest to you when conducting this experiment?

Another good question.  

What I&#039;m most interested in, is: does this kind of peer-grading cause students to learn something measurably useful?

Thanks again for the input!</description>
		<content:encoded><![CDATA[<p>@Severin:</p>
<p>Good point, re:  the time to ponder an assignment.  Hadn&#8217;t considered that.  </p>
<p>Not sure how I could account for that &#8211; unless I use a real-world assignment, and my participants are students from a course that recently gave it (ie:  they&#8217;re already familiar with the assignment).</p>
<p>> Ok, but I see a little contradiction here. Either one doesn’t give students hints<br />
> as to what to look for when reviewing, or students get hints and will be able to<br />
> potentially compensate for what they might have missed while working on the assignment<br />
> when doing reviews. I.e. they’d have a chance to do a good review but get weaker<br />
> marks for their assignment, which, still, could make sense. The question is,<br />
> what is of most interest to you when conducting this experiment?</p>
<p>Another good question.  </p>
<p>What I&#8217;m most interested in, is: does this kind of peer-grading cause students to learn something measurably useful?</p>
<p>Thanks again for the input!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Siebenmann</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1052</link>
		<dc:creator>Chris Siebenmann</dc:creator>
		<pubDate>Tue, 16 Mar 2010 19:25:14 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1052</guid>
		<description>I think that if you do the code review straight, as proposed, you are
effectively testing for two things at once; you&#039;re testing both the
ability of students to do good code reviews and their ability to fully
understand the dark corners of the assignment. If I was a student, I
would feel kind of grumpy about effectively getting hit twice if I
didn&#039;t fully understand the assignment; I&#039;d lose marks on my solution
and then I&#039;d lose more marks on bad code reviews (because I would miss
problems that the TAs would see).

(I agree that having students miss important things about the assignment
even in code review means that there is a problem, but that information
seems more like something for the instructor to know than something to
cost the students yet more marks.)

My suggestion is that every student doing reviews should get a cheat
sheet of &#039;common mistakes to look for&#039;. This shouldn&#039;t cover everything
and wouldn&#039;t reduce code review to a mechanical process, but hopefully
would get much closer to only measuring how well the students can review
code and see things in it. The cheat sheet might be drawn up by the TAs
after marking the assignments or it might be prepared in advance based
on what the instructor is expecting people to have problems with.

Also, it strikes me that it might be interesting to have students review
their own assignment at the end of the review process. Having gone
through a series of code reviews of other people&#039;s code, have they
learned enough to see the flaws in their own code? (My naive feeling
is that this is not gameable, except to the extent that if you submit
a terrible assignment you can at least get some marks back for being
able to admit how terrible it is.)</description>
		<content:encoded><![CDATA[<p>I think that if you do the code review straight, as proposed, you are<br />
effectively testing for two things at once; you&#8217;re testing both the<br />
ability of students to do good code reviews and their ability to fully<br />
understand the dark corners of the assignment. If I was a student, I<br />
would feel kind of grumpy about effectively getting hit twice if I<br />
didn&#8217;t fully understand the assignment; I&#8217;d lose marks on my solution<br />
and then I&#8217;d lose more marks on bad code reviews (because I would miss<br />
problems that the TAs would see).</p>
<p>(I agree that having students miss important things about the assignment<br />
even in code review means that there is a problem, but that information<br />
seems more like something for the instructor to know than something to<br />
cost the students yet more marks.)</p>
<p>My suggestion is that every student doing reviews should get a cheat<br />
sheet of &#8216;common mistakes to look for&#8217;. This shouldn&#8217;t cover everything<br />
and wouldn&#8217;t reduce code review to a mechanical process, but hopefully<br />
would get much closer to only measuring how well the students can review<br />
code and see things in it. The cheat sheet might be drawn up by the TAs<br />
after marking the assignments or it might be prepared in advance based<br />
on what the instructor is expecting people to have problems with.</p>
<p>Also, it strikes me that it might be interesting to have students review<br />
their own assignment at the end of the review process. Having gone<br />
through a series of code reviews of other people&#8217;s code, have they<br />
learned enough to see the flaws in their own code? (My naive feeling<br />
is that this is not gameable, except to the extent that if you submit<br />
a terrible assignment you can at least get some marks back for being<br />
able to admit how terrible it is.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1051</link>
		<dc:creator>Chris</dc:creator>
		<pubDate>Tue, 16 Mar 2010 15:00:08 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1051</guid>
		<description>I assume you are assigning a subset of random selections from the pool of solutions for review.
If so what order are you presenting them in?

It would be interesting to break your test subjects into three groups based on the initial TA markings then present the solutions in the following orders for review:
* Random
* Decreasing TA marks
* Increasing TA marks

Then ask the students if they feel they were able to learn by reviewing the solutions.  

I would be interested to see how the *quality* of the solutions reviewed by the student will help them learn.  I could see how reviewing only solutions that the TAs scored with failing grades could be detrimental and a waste of time.

In first year engineering programming courses - huge volume of submitted assignments, not a lot of good ones, perhaps lots of plagiarism - we had the opportunity to look at the suggested solution (used for marking) in tutorials.  The professor would simply comment on areas of common weaknesses or strengths of the class as a whole if the assignment was reviewed at all.


How are you going to provide experience and guidance?
For example, a student may not be aware that using `strncpy()` is greater than `strcpy()` wrt security.  
How could you expect them to apply that knowledge to their reviews if they couldn&#039;t apply it in their solutions as @Severin has mentioned?

There seems to be a lot of knowledge rolling into an overall scalar mark.  
Perhaps you would be more interested in knowing the students thoughts and method of arriving at the mark.  If that is the case, allow students to annotate a line with +/- marks (kind of like social network voting - ie thumbs up/down) with the option of adding textual comments.  Then sum them all up for a final result.  Two 6/10&#039;s may have the same final mark, but could have different paths of arriving there.  Of course this is much more complex and would be overkill if you are only interested in the deviation from the TA&#039;s grade.

It would be neat then to email back the student their assignment with their classmates +/- score for each line and any comments.  This has risk involved too since student generated comments could be wrong, misleading, vulgar.

By attributing comments to classmates instead of anonymously (privacy issue) you may be able to add accountability to such a system.</description>
		<content:encoded><![CDATA[<p>I assume you are assigning a subset of random selections from the pool of solutions for review.<br />
If so what order are you presenting them in?</p>
<p>It would be interesting to break your test subjects into three groups based on the initial TA markings then present the solutions in the following orders for review:<br />
* Random<br />
* Decreasing TA marks<br />
* Increasing TA marks</p>
<p>Then ask the students if they feel they were able to learn by reviewing the solutions.  </p>
<p>I would be interested to see how the *quality* of the solutions reviewed by the student will help them learn.  I could see how reviewing only solutions that the TAs scored with failing grades could be detrimental and a waste of time.</p>
<p>In first year engineering programming courses &#8211; huge volume of submitted assignments, not a lot of good ones, perhaps lots of plagiarism &#8211; we had the opportunity to look at the suggested solution (used for marking) in tutorials.  The professor would simply comment on areas of common weaknesses or strengths of the class as a whole if the assignment was reviewed at all.</p>
<p>How are you going to provide experience and guidance?<br />
For example, a student may not be aware that using `strncpy()` is greater than `strcpy()` wrt security.<br />
How could you expect them to apply that knowledge to their reviews if they couldn&#8217;t apply it in their solutions as @Severin has mentioned?</p>
<p>There seems to be a lot of knowledge rolling into an overall scalar mark.<br />
Perhaps you would be more interested in knowing the students thoughts and method of arriving at the mark.  If that is the case, allow students to annotate a line with +/- marks (kind of like social network voting &#8211; ie thumbs up/down) with the option of adding textual comments.  Then sum them all up for a final result.  Two 6/10&#8242;s may have the same final mark, but could have different paths of arriving there.  Of course this is much more complex and would be overkill if you are only interested in the deviation from the TA&#8217;s grade.</p>
<p>It would be neat then to email back the student their assignment with their classmates +/- score for each line and any comments.  This has risk involved too since student generated comments could be wrong, misleading, vulgar.</p>
<p>By attributing comments to classmates instead of anonymously (privacy issue) you may be able to add accountability to such a system.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Severin</title>
		<link>http://mikeconley.ca/blog/2010/03/14/lessons-from-peerscholar-an-approach-to-teaching-code-review/comment-page-1/#comment-1047</link>
		<dc:creator>Severin</dc:creator>
		<pubDate>Tue, 16 Mar 2010 03:05:50 +0000</pubDate>
		<guid isPermaLink="false">http://mikeconley.ca/blog/?p=1112#comment-1047</guid>
		<description>&gt;&gt; How will your subjects learn about the task of the assignment? Will they get briefed as to what the assignment was about and would
&gt;&gt; proceed immediately with grading/reviewing?

&gt; The experiment is still being designed, but yes, I imagine the graders should know what the assignment is all about – much like the students and markers would.
&gt; And then yes, they would begin grading immediately.

Note: I&#039;m speaking of what I&#039;ve experienced when working on an assignment here:

If the assignment is significant effort/significantly complex then fairly I noticed after spending some time working on the assignment that I hadn&#039;t understood the task(s) in its entirety. Even after several read the specs, read the code, work on implementation, read the specs go to the code again cycles, I was unsure as to what instructors wanted us to be aware of. Then at some point and having had some &quot;distance&quot;, you have your personal &quot;aha&quot; moment as to what this is all about. It could just be me, but if the experiment will be in a way that student subjects read the assignment specs and would immediately start reviewing other student&#039;s code after that I anticipate different outcomes of your experiment as if students had worked on the assignment for a couple of days and, hence, have a clearer idea and do better code review.

Of course this is a rather experiment specific concern. But if you are trying to assess students&#039; ability to do code review after having worked on an assignment your experiment should reflect this. I could have gotten something wrong. :-)

&gt;&gt; I assume you will be providing students with some guidance (similar to the one grad students get from the instructor) as to what to look for.
&gt;&gt; If this will be provided, how will this influence overall outcome of your study?

&gt; Good question. I imagine it’d be a lot like MarkUs…there’d be criteria, and each criterion level would have a description as to what is expected for that mark to apply.

Ok, but I see a little contradiction here. Either one doesn&#039;t give students hints as to what to look for when reviewing, or students get hints and will be able to potentially compensate for what they might have missed while working on the assignment when doing reviews. I.e. they&#039;d have a chance to do a good review but get weaker marks for their assignment, which, still, could make sense. The question is, what is of most interest to you when conducting this experiment?

Interesting stuff!</description>
		<content:encoded><![CDATA[<p>&gt;&gt; How will your subjects learn about the task of the assignment? Will they get briefed as to what the assignment was about and would<br />
&gt;&gt; proceed immediately with grading/reviewing?</p>
<p>&gt; The experiment is still being designed, but yes, I imagine the graders should know what the assignment is all about – much like the students and markers would.<br />
&gt; And then yes, they would begin grading immediately.</p>
<p>Note: I&#8217;m speaking of what I&#8217;ve experienced when working on an assignment here:</p>
<p>If the assignment is significant effort/significantly complex then fairly I noticed after spending some time working on the assignment that I hadn&#8217;t understood the task(s) in its entirety. Even after several read the specs, read the code, work on implementation, read the specs go to the code again cycles, I was unsure as to what instructors wanted us to be aware of. Then at some point and having had some &#8220;distance&#8221;, you have your personal &#8220;aha&#8221; moment as to what this is all about. It could just be me, but if the experiment will be in a way that student subjects read the assignment specs and would immediately start reviewing other student&#8217;s code after that I anticipate different outcomes of your experiment as if students had worked on the assignment for a couple of days and, hence, have a clearer idea and do better code review.</p>
<p>Of course this is a rather experiment specific concern. But if you are trying to assess students&#8217; ability to do code review after having worked on an assignment your experiment should reflect this. I could have gotten something wrong. <img src='http://mikeconley.ca/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>&gt;&gt; I assume you will be providing students with some guidance (similar to the one grad students get from the instructor) as to what to look for.<br />
&gt;&gt; If this will be provided, how will this influence overall outcome of your study?</p>
<p>&gt; Good question. I imagine it’d be a lot like MarkUs…there’d be criteria, and each criterion level would have a description as to what is expected for that mark to apply.</p>
<p>Ok, but I see a little contradiction here. Either one doesn&#8217;t give students hints as to what to look for when reviewing, or students get hints and will be able to potentially compensate for what they might have missed while working on the assignment when doing reviews. I.e. they&#8217;d have a chance to do a good review but get weaker marks for their assignment, which, still, could make sense. The question is, what is of most interest to you when conducting this experiment?</p>
<p>Interesting stuff!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

