<p>I wrote a series of posts on how I use raw GitHub with my classes:</p>

<p><a href="http://cestlaz.github.io/posts/sigcse-2017-github-1/" rel="nofollow noreferrer">Part 1</a> - Introducing your students to GitHub by using it as a method for distributing code to your class.</p>

<p><a href="http://cestlaz.github.io/posts/sigcse-2017-github-2" rel="nofollow noreferrer">Part 2</a> - Having students submit homework and small assignments using GitHub - this has them adding content to GitHub and sets the stage to teach them about "playing well with others."</p>

<p><a href="http://cestlaz.github.io/posts/sigcse-2017-github-3" rel="nofollow noreferrer">Part 3</a> - Taking the kids from working on solo projects to collaborating with classmates and leveraging things like version history</p>

<p><a href="http://cestlaz.github.io/posts/sigcse-2017-github-4/" rel="nofollow noreferrer">Part 4</a> - Talks about some of the pedagogical benefits I've discovered while working with Git and GitHub with my classes.</p>

CC BY-SA 3.0
2017-06-15T11:11:59.843Z
Thanks for posting the links, but links without any context aren't considered *answers* on this site. Take a look at [answer] for the rules around link-only answers—links are great, but we prefer it if the answer can stand on its own. You can [edit] to add some context around the links, so that people searching for their answers don't have to be redirected to another site. Also, as thesecretmaster mentions, links can often break, which would mean that future visitors can't gain anything from the answer, which would be unfortunate, as the ideas seem great.
Aurora0001
CC BY-SA 3.0
2017-06-15T11:50:40.380Z
I appreciate the desire to have inline content but to be honest, I spent a good amount of time writing those posts and don't really have the energy to basically transcribe my content to another site (although I'll add a bit of context to my answer later).

I'd also note that your comment about links is really saying "use my silo instead of your silo" neither of which may be long lasting and while I understand your desire to keep all the knowledge under your roof, I don't know if that's really healthy for the CS Education ecosystem as a whole..
Mike Zamansky
CC BY-SA 3.0
2017-06-15T15:49:04.870Z
If both sites thrive, it's not "use my silo instead of your silo" it's "use our silo _and_ your silo" that way, no matter which site the curious goes to, they will find the answer. If either site fails, temporarily or long-term, nothing is lost. Think redundancy. Also, for shorter information a full copy is useful, yes, but for larger content, such as your blog entries, a summary, or encapsulation, is usually good enough. The character limit on answers wouldn't allow you to post all for entries here anyway. Something that will help the answer to remain useful should the links ever fail.
Gypsy Spellweaver
CC BY-SA 3.0
2017-06-14T21:37:42.420Z
2017-06-15T12:59:28.850Z
2017-06-15T12:59:28.850Z
Mike Zamansky
<p>On CodeHS we have a very streamlined system for submitting and managing student work. You can use our courses, or if you want, create your own assignments and starter code. The students can run the Java code all in the web browser (or if you'd like in your own IDE), and then when they click submit it goes into your grading queue. No need for folders, emails, printing, scp, dropbox, it all just works. You can easily run it and test it, you can also create your own graders if you'd like. There's also an easy to use grading queue for doing code review on each problem which can be customized how you like. </p>

<p>I think in a lot of cases it is helpful to provide students with some basic starter code, but that can vary depending on what type of assignment you are doing.</p>

CC BY-SA 3.0
2017-06-14T21:03:33.870Z
How does the workflow of the grading itself work?
Ben I.
CC BY-SA 3.0
2017-06-15T23:21:01.097Z
You'll have a queue, or you can choose to grade by student, by activity, by course. One option is to go problem by problem. You can first see the student has passed the automatic checks. Then you'll be able to review their code and send by any comments before jumping to the next student submission. You can also use "Fast Grade mode" -- which is helpful when you are very familiar with the problems and are commenting mostly on coding style. You'll be able to say a problem passes or send it back to the student as needs work.
jkeesh
CC BY-SA 3.0
2017-06-14T20:55:34.950Z
2017-06-14T20:55:34.950Z
jkeesh
<p>Here is my system.  I give it top marks for <strong>ease of sharing</strong>, but one downside is that it does not do any kind of autograding without some scripting on my part.</p>

<p>I purchased a paid subscription to Dropbox.  This allows me to set up read-only folders.  At the beginning of the term, I copy/paste all of the names from the course into an Excel spreadsheet and collect an email address from every student for a Dropbox.</p>

<p>I then create a series of folders using a <code>.bat</code> file (I am a Windows user), generated with a function like <code>="mkdir ""APCS 1 - "&amp;A2&amp;", "&amp;B2&amp;""""</code>.  This creates lines like <code>mkdir "APCS 1 - Johnson, Cathy"</code> I copy and paste this group into a <code>.txt</code> file, rename it to <code>.bat</code>, and - voilà! - I can double-click to create a directory for every student in my class section.  I run the batch file in some subdirectory of the <strong>Dropbox</strong> folder so that they will ultimately be sharable.  I then go through and share each of these folders with the respective student with write privileges. </p>

<p>Finally, I create one last folder, something like <code>AP Computer Science Section 1</code>.  I then copy and paste the email addresses themselves into the share box for this folder, but only allow <strong>read priveleges</strong>.  Now, I can drop my assignments into to class folder (which is basically instantaneous), and I receive my submissions through their private folders.  I get everything timestamped, and don't have to log into any websites to get the assignments.</p>

<p>One more side-benefit of this arrangement is that when I need to send a file to some student, we already have a shared folder that I can drop it into.  No need for emailed attachments.</p>

CC BY-SA 3.0
2017-05-30T01:51:07.557Z
Why not do all of this in google drive and make it free?
thesecretmaster
CC BY-SA 3.0
2017-05-30T01:54:34.430Z
I haven't explored Google Drive well, but I'm not averse to making changes. Does it allow for direct mirroring of directories on my personal HD, and proper read/write privileges?  Right now, all of my student submission folders are highly organized, together in a folder that I can access and grade from while on an airplane without internet, which is a freedom I enjoy.
Ben I.
CC BY-SA 3.0
2017-05-30T01:34:32.003Z
2017-05-30T01:40:36.393Z
2017-05-30T01:40:36.393Z
Ben I.
<p>Next year will be my first year teaching AP CS A. While I've spent a lot of time preparing by choosing textbooks, picking an IDE, and writing the syllabus, I'm not yet settled on my workflow for how to push out assignment instructions/starter code and how to collect work back. </p>

<p>I registered for GitHub Classroom with an education account, but I haven't yet had a chance to explore its resources and would like to hear from those who have used it. I can easily collect files via our LMS or Google Classroom. I just have doubts that that method is the most efficient for either me or my students. Also, this past year, CS50 took care of the distribution code, so I didn't have to worry about that. Now I do need to consider how I can get files to students efficiently if needed. </p>

<p><strong>What workflow do you follow for the submission of student work, particularly in the context of Java files? Do you provide students with starter code? If so, how?</strong></p>

<java><ap-computer-science-a><github>
Workflow for Code Submission
# Workflow for Code Submission

(Asked by: username_0 on 2017-05-29)

Next year will be my first year teaching AP CS A. While I've spent a lot of time preparing by choosing textbooks, picking an IDE, and writing the syllabus, I'm not yet settled on my workflow for how to push out assignment instructions/starter code and how to collect work back.

I registered for GitHub Classroom with an education account, but I haven't yet had a chance to explore its resources and would like to hear from those who have used it. I can easily collect files via our LMS or Google Classroom. I just have doubts that that method is the most efficient for either me or my students. Also, this past year, CS50 took care of the distribution code, so I didn't have to worry about that. Now I do need to consider how I can get files to students efficiently if needed.

**What workflow do you follow for the submission of student work, particularly in the context of Java files? Do you provide students with starter code? If so, how?**

**Tags:** java, ap-computer-science-a, github


---

## 3 answers

### Answer by username_5 on 2017-05-30. Score: 5

Here is my system. I give it top marks for **ease of sharing**, but one downside is that it does not do any kind of autograding without some scripting on my part.

I purchased a paid subscription to Dropbox. This allows me to set up read-only folders. At the beginning of the term, I copy/paste all of the names from the course into an Excel spreadsheet and collect an email address from every student for a Dropbox.

I then create a series of folders using a `.bat` file (I am a Windows user), generated with a function like `="mkdir ""APCS 1 - "&A2&", "&B2&""""`. This creates lines like `mkdir "APCS 1 - Johnson, Cathy"` I copy and paste this group into a `.txt` file, rename it to `.bat`, and - voilà! - I can double-click to create a directory for every student in my class section. I run the batch file in some subdirectory of the **Dropbox** folder so that they will ultimately be sharable. I then go through and share each of these folders with the respective student with write privileges.

Finally, I create one last folder, something like `AP Computer Science Section 1`. I then copy and paste the email addresses themselves into the share box for this folder, but only allow **read priveleges**. Now, I can drop my assignments into to class folder (which is basically instantaneous), and I receive my submissions through their private folders. I get everything timestamped, and don't have to log into any websites to get the assignments.

One more side-benefit of this arrangement is that when I need to send a file to some student, we already have a shared folder that I can drop it into. No need for emailed attachments.

> **Comments:**
> **username_6**: Why not do all of this in google drive and make it free?  
> **username_5**: I haven't explored Google Drive well, but I'm not averse to making changes. Does it allow for direct mirroring of directories on my personal HD, and proper read/write privileges?  Right now, all of my student submission folders are highly organized, together in a folder that I can access and grade from while on an airplane without internet, which is a freedom I enjoy.  

---

### Answer by username_1 on 2017-06-14. Score: 1

I wrote a series of posts on how I use raw GitHub with my classes:

[Part 1](http://cestlaz.github.io/posts/sigcse-2017-github-1/) - Introducing your students to GitHub by using it as a method for distributing code to your class.

[Part 2](http://cestlaz.github.io/posts/sigcse-2017-github-2) - Having students submit homework and small assignments using GitHub - this has them adding content to GitHub and sets the stage to teach them about "playing well with others."

[Part 3](http://cestlaz.github.io/posts/sigcse-2017-github-3) - Taking the kids from working on solo projects to collaborating with classmates and leveraging things like version history

[Part 4](http://cestlaz.github.io/posts/sigcse-2017-github-4/) - Talks about some of the pedagogical benefits I've discovered while working with Git and GitHub with my classes.

> **Comments:**
> **username_2**: Thanks for posting the links, but links without any context aren't considered *answers* on this site. Take a look at [answer] for the rules around link-only answers—links are great, but we prefer it if the answer can stand on its own. You can [edit] to add some context around the links, so that people searching for their answers don't have to be redirected to another site. Also, as username_6 mentions, links can often break, which would mean that future visitors can't gain anything from the answer, which would be unfortunate, as the ideas seem great.  
> **username_1**: I appreciate the desire to have inline content but to be honest, I spent a good amount of time writing those posts and don't really have the energy to basically transcribe my content to another site (although I'll add a bit of context to my answer later).  I'd also note that your comment about links is really saying "use my silo instead of your silo" neither of which may be long lasting and while I understand your desire to keep all the knowledge under your roof, I don't know if that's really healthy for the CS Education ecosystem as a whole..  
> **username_3**: If both sites thrive, it's not "use my silo instead of your silo" it's "use our silo _and_ your silo" that way, no matter which site the curious goes to, they will find the answer. If either site fails, temporarily or long-term, nothing is lost. Think redundancy. Also, for shorter information a full copy is useful, yes, but for larger content, such as your blog entries, a summary, or encapsulation, is usually good enough. The character limit on answers wouldn't allow you to post all for entries here anyway. Something that will help the answer to remain useful should the links ever fail.  

---

### Answer by username_4 on 2017-06-14. Score: 0

On CodeHS we have a very streamlined system for submitting and managing student work. You can use our courses, or if you want, create your own assignments and starter code. The students can run the Java code all in the web browser (or if you'd like in your own IDE), and then when they click submit it goes into your grading queue. No need for folders, emails, printing, scp, dropbox, it all just works. You can easily run it and test it, you can also create your own graders if you'd like. There's also an easy to use grading queue for doing code review on each problem which can be customized how you like.

I think in a lot of cases it is helpful to provide students with some basic starter code, but that can vary depending on what type of assignment you are doing.

> **Comments:**
> **username_5**: How does the workflow of the grading itself work?  
> **username_4**: You'll have a queue, or you can choose to grade by student, by activity, by course. One option is to go problem by problem. You can first see the student has passed the automatic checks. Then you'll be able to review their code and send by any comments before jumping to the next student submission. You can also use "Fast Grade mode" -- which is helpful when you are very familiar with the problems and are commenting mostly on coding style. You'll be able to say a problem passes or send it back to the student as needs work.  

---

