<p>Note this answer does assume a batch scanner is available.</p>
<p>If you insist on working with printed pages, you could prevent doing (much) manual work returning the files if you either:</p>
<ol>
<li>Keep track of the order of the printed files, correct them, put them in a batch scanner and automatically return the corrected files. Though I could imagine this is not an option due to risk of mixing files due to scanner/printing glitches.</li>
<li>Another option could be to print a qr code on the page,print the pages, correct the pages put the corrected papers back into a batch scanner, and process the images using a qr decoder to allocate the files accordingly, this way you are (almost, depending on how good the qr scanner is) certain that the correct corrected papers are returned to the right students. You could also get a notification on the papers that were not scanned correctly since you know how many you printed and hence should scan.</li>
<li>If you don't want to be searching for a place to put the qr code in their paper, you could give the students a latex template, or convert their code into a latex template with a qr code belonging to their study number.</li>
</ol>
<p>In my experience <code>pyzbar</code> can be a bit tedious to set up but I found it to practically work identifying qr codes in printed- and scanned pages. Not claiming this is the best solution, I think there would be easier solutions and like DarcyThomas answer better.</p>

CC BY-SA 4.0
2020-08-19T17:24:41.683Z
2020-08-19T17:24:41.683Z
a.t.
<p>You can try PDF Viewer Pro by PSPDFKit, saw it in the top list on iOS App Store a few days back, looks like it does what you need. I say iPad because I think it allows you easier to create circles and lines than using a mouse on a notebook.</p>

CC BY-SA 4.0
2020-08-19T02:29:31.973Z
2020-08-19T02:29:31.973Z
Murrrrrr
<p>I would suggest you use a code review tool. This is something they will likely need to be using when working in industry. So worth upskill them on it now.</p>
<p>You can use githubs one for free.
(You are teaching version control so that should be easy enough)</p>
<p>Get your students to create a pull request and review that.</p>
<p>You can highlite specific lines and put comments against them etc.</p>

CC BY-SA 4.0
2020-08-18T13:01:32.517Z
Thanks, that's a good suggestion .. I may give that a try in my upper level classes, but for my CS I class they are already cognitively fully loaded with new concepts, so I don't want to toss this in on top.
Levon
CC BY-SA 4.0
2020-08-19T00:06:22.733Z
@Levon could you give them a script to run that commits the code and opens the PR for them? I recall installing WordPress in my undergrad via step by step instructions in a lab once. No idea of what the commands I was running actually were doing.
Sandy Chapman
CC BY-SA 4.0
2020-08-19T00:32:44.423Z
@SandyChapman Thanks for the suggestion, I'm not sure there will be time to set up for this term, but perhaps down the line, esp for the CS 1 class if I can't come up with anything else. Those a bit more experienced could probably manage the necessary commands.
Levon
CC BY-SA 4.0
2020-08-19T01:34:50.577Z
@Levon FWIW the [github desktop GUI tool](https://desktop.github.com/)  makes working with git very easy. You could probably get your students set up in a single lab session.
DarcyThomas
CC BY-SA 4.0
2020-08-19T13:12:33.057Z
I agree with this suggestion, but consider data privacy issues and university regulations when asking students to use some tool.
Carsten S
CC BY-SA 4.0
2020-08-19T14:04:12.480Z
GitHub Classroom is an effective way to distribute assignments to students, and it has a feature whereby it will automatically create a PR on the students repo for you to provide feedback. You can add comments to specific lines in the code or provide general feedback. I'll be using this in the upcoming semester, and it aligns very closely with industry code review processes. Beyond using Git there's no additional technical overhead for the students in using GitHub Classroom, it's really a teacher's tool. Repos can be private too which can help with privacy issues.
john french
CC BY-SA 4.0
2020-08-18T09:33:23.533Z
2020-08-18T09:33:23.533Z
DarcyThomas
<p>It has never occurred to me to use printouts of code, even though I have an older colleague who does this.  To me, it seems a little odd as an approach and inefficient.</p>
<p>That said, if you wish to have a similar workflow digitally, you might want to consider using a tablet computer with a pen, Microsoft OneNote, and then saving the final output as a PDF.  This will allow you to draw, scribble, and write freely on their submitted code.  As a side benefit, you'll also be able to put in links, pictures, or other diagrams, assorted and sundry as you find useful.</p>
<p>Typically, I provide feedback either in bullet points or side-by-side in person (&quot;in person&quot; in this context means using screen share in Zoom).</p>

CC BY-SA 4.0
2020-08-17T19:30:52.297Z
Well, I'm no spring chicken, so perhaps that's why :)  Not sure about the meaning of "have a solar workflow"? Also curious, how do you provide feedback to the students for programming assignments. Happy to consider as many alternatives as I can.

(don't have a tablet computer unfortunately)
Levon
CC BY-SA 4.0
2020-08-17T21:21:53.260Z
@Levon "Solar" lol -- sorry, I was using text to speech on my phone and didn't notice! I meant "similar".
Ben I.
CC BY-SA 4.0
2020-08-19T00:32:18.687Z
I used printouts of code in college in the early 1990s, but the reason was that I wanted to be able to read more than 80 columns and 24 rows at a time! The terminals of the day were rarely able to do more. Old habits die hard, as they say, but these days I almost always read code on screen as well. I switched as soon as PC graphics got sufficient screen resolution for it. I think around 1024x768. Though at some point I also bought a large and heavy CRT monitor that did 1600x1200... Once in a blue moon I may still print some code to look at it offline, though that hasn't happened in years.
Michael Hampton
CC BY-SA 4.0
2020-08-17T19:27:10.577Z
2020-08-17T21:20:56.743Z
2020-08-17T21:20:56.743Z
Ben I.
<p>If you can create PDF files (as you indicated in comments) you can use Adobe Acrobat Reader (the free one) to add comments from a keyboard into the code and save it. This is what I use for most student work, listings, dissertations and so on. You can save it and re-upload to the VLE or whatever feedback mechanism being used.</p>
<p>Of course, if you have a tablet device or even a sketching pad attached to a desktop you can add more freehand annotations in the old style.</p>
<p>However, I have moved from annotating code for a more test-based development mechanism for giving coding feedback. The students now have to run the test scripts I write and upload the results rather than the code at intermediate stages for formative feedback. I only feedback on the code at the summative stage. I find that, with &gt;250 students, I need to let the computer do more of the work whilst still trying to give some form of helpful information to the students.</p>
<p>There are, of course, pricier tools specifically designed for scribbling that others may mention.</p>
<p>Another way of doing things is to interact with the students' actual code base and not a listing, using something like Visual Studio Live Code Share. This give feedback at the actual point where they start to deviate from common sense. Some colleagues are doing this technique.</p>

CC BY-SA 4.0
2020-08-18T17:02:58.003Z
Thanks, I appreciate the post  .. I have thought about the testing suite approach, but esp for these novice programmers, I find it particularly necessary to provide some guidance on coding style etc, so functionality is not the only criteria. The CS 1 students are all using Eclipse, so I'm not sure if it has any of the features you refer to with re VS Live Code Share (haven't used it myself I am not that familiar with it)
Levon
CC BY-SA 4.0
2020-08-17T20:32:07.617Z
2020-08-19T08:10:18.977Z
2020-08-19T08:10:18.977Z
Brian Tompsett - 汤莱恩
<p>In the past students have submitted hardcopy of the programs and output for grading (electronic version was also supplied if I wanted to run the programs).</p>
<p>I always annotated and graded the source listing and associated output on the paper copies that I then returned to students in class. Now with COVID-19 and teaching all online, I will only have Canvas submissions, and I am able/willing to print them as needed, but no way to get feedback/hardcopy easily back to students. This is particularly important for my CS I students.</p>
<p>What are you all doing with regard to this? Annotating paper is the most time efficient way for me to do this. I had one colleague last spring who took images of all the grading and then uploaded a set of .jpgs for each student - a ridiculously time consuming process that she gave up on soon.</p>
<p>Scribbling on source code, circling sections etc is what I'd like to do.</p>
<p>Any suggestions?</p>
<p><em>Please note that this is mostly for my CS 1 course - many of these students will not have had any programming experience. They will struggle enough with the basics of Eclipse and Java - so I don't necessarily want to burden them with extra technical demands.</em></p>

CC BY-SA 4.0
2020-08-17T19:43:59.780Z
Note that pdf's can be annotated and returned. You can make the original from their source if needed.
Buffy
CC BY-SA 4.0
2020-08-17T20:09:51.010Z
Yes, it's easy to save these as PDFs (in fact I do this for automating the printing so that I get headers, line numbers and syntax highlighting via bolded keywords). @Buffy How do  you annotate the PDFs? Do you have a stylus and tablet available for this?
Levon
CC BY-SA 4.0
2020-08-17T20:11:32.327Z
On a Mac, Preview lets you add a (typed) note anywhere. That's all I've done, but I'm sure there are other solutions.
Buffy
CC BY-SA 4.0
2020-08-17T20:17:19.380Z
Thanks @Buffy, I'd like the ability to circle, underline, freely annotate the code, so I'm exploring ways of doing that too .. though obviously typing comments will be better for students (more legible:) and me (faster usually) than handwriting.
Levon
CC BY-SA 4.0
2020-08-18T00:55:22.133Z
[Xournal](https://github.com/xournalpp/xournalpp)   let's you import a pdf and scribble on it in various colors. I guess circling with a standard mouse is doable. Writing is not!!
Rushi
CC BY-SA 4.0
2020-08-18T11:08:52.870Z
@Rusi Xournal also allows to type text. In fact for people with my handwriting this might be the preferred method, even in presence of a stylus.
mlk
CC BY-SA 4.0
2020-08-18T12:59:53.800Z
@Rusi Thanks I'll have to check it out, didn't know about this - much appreciated
Levon
CC BY-SA 4.0
2020-08-18T13:26:35.583Z
Have you thought about checking out of-the-shelf code review solutions? Reviewing code is a solved problem in the workplace. People working for IT companies have to review -- and comment on -- other peoples code every day.
Polygnome
CC BY-SA 4.0
2020-08-18T16:48:32.013Z
@Polygnome If you have any useful links that would help and work in an academic environment (for free) without undue complexity for newbie programmers, I would love to see them. If I was aware of such tools I would not have posted asking for suggestions. Thanks.
Levon
CC BY-SA 4.0
2020-08-19T09:25:28.457Z
@Buffy  It's not always seamless.  I've been annotating PDFs for a student - and his software can't read the pop-up comments I write (in Okular, Linux) unless I "print" the PDF to a new file.
Chris H
CC BY-SA 4.0
2020-08-19T09:26:11.523Z
... Xournal (as @Rusi suggests) used to have trouble exporting marked-up PDFs for reading in other software  but I think it's better now
Chris H
CC BY-SA 4.0
2020-08-19T09:42:42.643Z
At my university, Canvas has a so-called "speedgrader" tool that allows you to annotate submitted pdfs in the browser. Annotations have to be entered via the computer, but the time lost with that can at least be partially regained by copypasting explanations for common mistakes. Is this tool unavailable to you, or is there some reason you do not want to use it?
Discrete lizard
CC BY-SA 4.0
2020-08-19T22:54:05.237Z
@Discretelizard I'm looking at it now .. and it may be workable, thanks for the suggestion. Being part of Canvas would certainly simplify things.  Do you have any idea how I can avoid source code lines from wrapping? For some reason the code is presented in portrait orientation, it would print/display fine in landscape. Or if I could set the right margin to say 130 columns. Or, perhaps even reduce the font size ...
Levon
CC BY-SA 4.0
2020-08-20T06:51:52.083Z
@Levon Oh, are the pdfs in landscape orientation? I haven't used this tool with landscape oriented pdfs, so I wouldn't know, unfortunately. When I use it (with pdfs in portrait orientation), the pdf displayed on Canvas displays just the same as it would in my pdf reader. If you have more than one screen, one option would be to open the pdf in a reader in landscape mode on another screen and edit in Canvas. However, I'm not too sure how much of an advantage this is over editing directly in a pdf reader.
Discrete lizard
CC BY-SA 4.0
2020-08-20T13:24:11.490Z
@Discretelizard No, these are plain source code (.java) files and Canvas renders them as text files in portrait orientation. The obvious benefit of this is that the code can be downloaded and run. I just haven't found a way to change margins or orientation so that the speedgrader doesn't mess up the formatting if I wanted to do the grading/annotating in it.
Levon
CC BY-SA 4.0
2020-08-20T14:54:03.383Z
@Levon Ah, I misread the comment about pdfs. I was under the mistaken impression that the students had to submit a pdf. I'm not sure if there's a way to make a pdf of the submitted files and feed it back to the speedgrader. Pdfs are usually formatted correctly by this tool.
Discrete lizard
<programming><grading><assessment><online>
Grading source code in an online environment
# Grading source code in an online environment

(Asked by: username_0 on 2020-08-17)

In the past students have submitted hardcopy of the programs and output for grading (electronic version was also supplied if I wanted to run the programs).

I always annotated and graded the source listing and associated output on the paper copies that I then returned to students in class. Now with COVID-19 and teaching all online, I will only have Canvas submissions, and I am able/willing to print them as needed, but no way to get feedback/hardcopy easily back to students. This is particularly important for my CS I students.

What are you all doing with regard to this? Annotating paper is the most time efficient way for me to do this. I had one colleague last spring who took images of all the grading and then uploaded a set of .jpgs for each student - a ridiculously time consuming process that she gave up on soon.

Scribbling on source code, circling sections etc is what I'd like to do.

Any suggestions?

*Please note that this is mostly for my CS 1 course - many of these students will not have had any programming experience. They will struggle enough with the basics of Eclipse and Java - so I don't necessarily want to burden them with extra technical demands.*

**Tags:** programming, grading, assessment, online

> **Comments:**
> **username_1**: Note that pdf's can be annotated and returned. You can make the original from their source if needed.  
> **username_0**: Yes, it's easy to save these as PDFs (in fact I do this for automating the printing so that I get headers, line numbers and syntax highlighting via bolded keywords). @username_1 How do  you annotate the PDFs? Do you have a stylus and tablet available for this?  
> **username_1**: On a Mac, Preview lets you add a (typed) note anywhere. That's all I've done, but I'm sure there are other solutions.  
> **username_0**: Thanks @username_1, I'd like the ability to circle, underline, freely annotate the code, so I'm exploring ways of doing that too .. though obviously typing comments will be better for students (more legible:) and me (faster usually) than handwriting.  
> **username_2**: [Xournal](https://github.com/xournalpp/xournalpp)   let's you import a pdf and scribble on it in various colors. I guess circling with a standard mouse is doable. Writing is not!!  
> **username_3**: @Rusi Xournal also allows to type text. In fact for people with my handwriting this might be the preferred method, even in presence of a stylus.  
> **username_0**: @Rusi Thanks I'll have to check it out, didn't know about this - much appreciated  
> **username_4**: Have you thought about checking out of-the-shelf code review solutions? Reviewing code is a solved problem in the workplace. People working for IT companies have to review -- and comment on -- other peoples code every day.  
> **username_0**: @username_4 If you have any useful links that would help and work in an academic environment (for free) without undue complexity for newbie programmers, I would love to see them. If I was aware of such tools I would not have posted asking for suggestions. Thanks.  
> **username_5**: @username_1  It's not always seamless.  I've been annotating PDFs for a student - and his software can't read the pop-up comments I write (in Okular, Linux) unless I "print" the PDF to a new file.  
> **username_5**: ... Xournal (as @Rusi suggests) used to have trouble exporting marked-up PDFs for reading in other software  but I think it's better now  
> **username_6**: At my university, Canvas has a so-called "speedgrader" tool that allows you to annotate submitted pdfs in the browser. Annotations have to be entered via the computer, but the time lost with that can at least be partially regained by copypasting explanations for common mistakes. Is this tool unavailable to you, or is there some reason you do not want to use it?  
> **username_0**: @Discretelizard I'm looking at it now .. and it may be workable, thanks for the suggestion. Being part of Canvas would certainly simplify things.  Do you have any idea how I can avoid source code lines from wrapping? For some reason the code is presented in portrait orientation, it would print/display fine in landscape. Or if I could set the right margin to say 130 columns. Or, perhaps even reduce the font size ...  
> **username_6**: @username_0 Oh, are the pdfs in landscape orientation? I haven't used this tool with landscape oriented pdfs, so I wouldn't know, unfortunately. When I use it (with pdfs in portrait orientation), the pdf displayed on Canvas displays just the same as it would in my pdf reader. If you have more than one screen, one option would be to open the pdf in a reader in landscape mode on another screen and edit in Canvas. However, I'm not too sure how much of an advantage this is over editing directly in a pdf reader.  
> **username_0**: @Discretelizard No, these are plain source code (.java) files and Canvas renders them as text files in portrait orientation. The obvious benefit of this is that the code can be downloaded and run. I just haven't found a way to change margins or orientation so that the speedgrader doesn't mess up the formatting if I wanted to do the grading/annotating in it.  
> **username_6**: @username_0 Ah, I misread the comment about pdfs. I was under the mistaken impression that the students had to submit a pdf. I'm not sure if there's a way to make a pdf of the submitted files and feed it back to the speedgrader. Pdfs are usually formatted correctly by this tool.  

---

## 5 answers

### Answer by username_9 on 2020-08-18. Score: 14 | Accepted answer

I would suggest you use a code review tool. This is something they will likely need to be using when working in industry. So worth upskill them on it now.

You can use githubs one for free.
(You are teaching version control so that should be easy enough)

Get your students to create a pull request and review that.

You can highlite specific lines and put comments against them etc.

> **Comments:**
> **username_0**: Thanks, that's a good suggestion .. I may give that a try in my upper level classes, but for my CS I class they are already cognitively fully loaded with new concepts, so I don't want to toss this in on top.  
> **username_10**: @username_0 could you give them a script to run that commits the code and opens the PR for them? I recall installing WordPress in my undergrad via step by step instructions in a lab once. No idea of what the commands I was running actually were doing.  
> **username_0**: @SandyChapman Thanks for the suggestion, I'm not sure there will be time to set up for this term, but perhaps down the line, esp for the CS 1 class if I can't come up with anything else. Those a bit more experienced could probably manage the necessary commands.  
> **username_9**: @username_0 FWIW the [github desktop GUI tool](https://desktop.github.com/)  makes working with git very easy. You could probably get your students set up in a single lab session.  
> **username_11**: I agree with this suggestion, but consider data privacy issues and university regulations when asking students to use some tool.  
> **username_12**: GitHub Classroom is an effective way to distribute assignments to students, and it has a feature whereby it will automatically create a PR on the students repo for you to provide feedback. You can add comments to specific lines in the code or provide general feedback. I'll be using this in the upcoming semester, and it aligns very closely with industry code review processes. Beyond using Git there's no additional technical overhead for the students in using GitHub Classroom, it's really a teacher's tool. Repos can be private too which can help with privacy issues.  

---

### Answer by username_13 on 2020-08-17. Score: 7

It has never occurred to me to use printouts of code, even though I have an older colleague who does this. To me, it seems a little odd as an approach and inefficient.

That said, if you wish to have a similar workflow digitally, you might want to consider using a tablet computer with a pen, Microsoft OneNote, and then saving the final output as a PDF. This will allow you to draw, scribble, and write freely on their submitted code. As a side benefit, you'll also be able to put in links, pictures, or other diagrams, assorted and sundry as you find useful.

Typically, I provide feedback either in bullet points or side-by-side in person ("in person" in this context means using screen share in Zoom).

> **Comments:**
> **username_0**: Well, I'm no spring chicken, so perhaps that's why :)  Not sure about the meaning of "have a solar workflow"? Also curious, how do you provide feedback to the students for programming assignments. Happy to consider as many alternatives as I can.  (don't have a tablet computer unfortunately)  
> **username_13**: @username_0 "Solar" lol -- sorry, I was using text to speech on my phone and didn't notice! I meant "similar".  
> **username_14**: I used printouts of code in college in the early 1990s, but the reason was that I wanted to be able to read more than 80 columns and 24 rows at a time! The terminals of the day were rarely able to do more. Old habits die hard, as they say, but these days I almost always read code on screen as well. I switched as soon as PC graphics got sufficient screen resolution for it. I think around 1024x768. Though at some point I also bought a large and heavy CRT monitor that did 1600x1200... Once in a blue moon I may still print some code to look at it offline, though that hasn't happened in years.  

---

### Answer by username_15 on 2020-08-17. Score: 3

If you can create PDF files (as you indicated in comments) you can use Adobe Acrobat Reader (the free one) to add comments from a keyboard into the code and save it. This is what I use for most student work, listings, dissertations and so on. You can save it and re-upload to the VLE or whatever feedback mechanism being used.

Of course, if you have a tablet device or even a sketching pad attached to a desktop you can add more freehand annotations in the old style.

However, I have moved from annotating code for a more test-based development mechanism for giving coding feedback. The students now have to run the test scripts I write and upload the results rather than the code at intermediate stages for formative feedback. I only feedback on the code at the summative stage. I find that, with >250 students, I need to let the computer do more of the work whilst still trying to give some form of helpful information to the students.

There are, of course, pricier tools specifically designed for scribbling that others may mention.

Another way of doing things is to interact with the students' actual code base and not a listing, using something like Visual Studio Live Code Share. This give feedback at the actual point where they start to deviate from common sense. Some colleagues are doing this technique.

> **Comments:**
> **username_0**: Thanks, I appreciate the post  .. I have thought about the testing suite approach, but esp for these novice programmers, I find it particularly necessary to provide some guidance on coding style etc, so functionality is not the only criteria. The CS 1 students are all using Eclipse, so I'm not sure if it has any of the features you refer to with re VS Live Code Share (haven't used it myself I am not that familiar with it)  

---

### Answer by username_7 on 2020-08-19. Score: 2

Note this answer does assume a batch scanner is available.

If you insist on working with printed pages, you could prevent doing (much) manual work returning the files if you either:

1. Keep track of the order of the printed files, correct them, put them in a batch scanner and automatically return the corrected files. Though I could imagine this is not an option due to risk of mixing files due to scanner/printing glitches.
2. Another option could be to print a qr code on the page,print the pages, correct the pages put the corrected papers back into a batch scanner, and process the images using a qr decoder to allocate the files accordingly, this way you are (almost, depending on how good the qr scanner is) certain that the correct corrected papers are returned to the right students. You could also get a notification on the papers that were not scanned correctly since you know how many you printed and hence should scan.
3. If you don't want to be searching for a place to put the qr code in their paper, you could give the students a latex template, or convert their code into a latex template with a qr code belonging to their study number.

In my experience `pyzbar` can be a bit tedious to set up but I found it to practically work identifying qr codes in printed- and scanned pages. Not claiming this is the best solution, I think there would be easier solutions and like username_9 answer better.


---

### Answer by username_8 on 2020-08-19. Score: 2

You can try PDF Viewer Pro by PSPDFKit, saw it in the top list on iOS App Store a few days back, looks like it does what you need. I say iPad because I think it allows you easier to create circles and lines than using a mouse on a notebook.


---

