# Workflow for Code Submission

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?

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.

• Why not do all of this in google drive and make it free? – thesecretmaster May 30 '17 at 1:51
• 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. May 30 '17 at 1:54

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

Part 1 - Introducing your students to GitHub by using it as a method for distributing code to your class.

Part 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 - Taking the kids from working on solo projects to collaborating with classmates and leveraging things like version history

Part 4 - Talks about some of the pedagogical benefits I've discovered while working with Git and GitHub with my classes.