Module 2 Exercise 4: Workflow and assignments with Classroom


(Vanessa) #1

2.5

Exercise: Workflow

  1. Will you keep all course materials in a repository? Or just assignments?
  2. When will you expect students to commit?
  3. What sort of commit messages should they use?
  4. When do you want your students to push their code to GitHub?

Exercise: Distributing assignments

  1. Create an organization with your course materials for one assignment in a repository.
  2. Create a Classroom, and an individual assignment.
  3. Send it to a colleague to accept.
  4. Take a snapshot of your teacher dashboard and post it below.

(Eric Allatta) #2

As a high school teacher with a Sep-June schedule we’re late in the year for adding GitHub to our workflow. Next year, I would like to try keeping the entire course in a repository. We currently use Google Classroom for our LMS with a separate grade book called JumpRope. Google Classroom has an assignment/announcement stream with an about section for holding the syllabus and other permanent resources.

Most work is completed during our one hour class periods, which meet four times per week. I envision that students would commit several times in a class period. A check on class commits could help me to track student work habits, which is an important assessment focus in my context.

We currently do most of our writing in Google Docs. Students do not utilize the revision history to review each others work and do not have a model for collaborating. I’m interested in trying to use GitHub for writing as well as code, in which case there commit messages would be related to prompts in an assignment.

I created my first assignment to practice the Create Performance Task, one of the required tasks of the AP CS Principles course. I shared it with my personal account and successfully accepted the assignment.


(Clara) #3
  1. Will you keep all course materials in a repository? Or just assignments? Course materials live in our LMS, assignments in GitHub. Typical assignment is an unfinished project or boilerplate for student to finish. Considering moving course materials to GitHub. Currently using GitHub classroom for a batch of assignments in one class. Screenshot included.
  2. When will you expect students to commit? Frequently, get into good habits, make atomic commits.
  3. What sort of commit messages should they use? Descriptive ones, hopefully.
  4. When do you want your students to push their code to GitHub? Often. In IDEs like IntelliJ commit+push is the same amount of work as git push and I don’t mind students being in that mindset. I’ve had enough of “I’ve lost my flash drive” type excuses :slight_smile:

Exercise: Distributing assignments

  1. Create an organization with your course materials for one assignment in a repository.
  2. Create a Classroom, and an individual assignment.
    Send it to a colleague to accept.
  3. Take a snapshot of your teacher dashboard and post it to the Education Community.

Current classroom screenshot below, hope that’s OK? Assignments have been successfully accepted by several students.


(François Roland) #4
  1. I’m creating one repository per assignment. I usually keep the related course materials in the repository as well. Which means that the student can keep the exact version of the material they used. I think that, when students want to revise, there is value in having the question next to the answer.
  2. I want students to commit as often as possible. I often emphasizes that their commit are their backup.
  3. On short assignments, I don’t bother students with the content of their commit messages. But if they’re working on a larger project, I ask them to communicate their intention through usage of the commit message.
  4. The minimum is once per day. But I advise them to push as frequently as they see fit. When they’re working in group, I add the constraint that they can only push if their code compiles while they’re able to commit WIP.


(Richard) #5
  1. I use git to store most of my teaching materials, but GitHub classroom will only be used for assignments. One repository per assignment, with one classroom/organisation per class, per year. In my final year undergrad and my postgrad dev classes, they do group assignments throughout the semester/year and in those courses they will use just one repo for most of the class.
  2. Students should commit atomically and a portion of their grade will be for good commits. This is especially important for the group work. I will not enforce a “commit schedule,” however.
  3. Short, but descriptive, making sure the commit message explains the change made in the commit.
  4. As before, no specific schedule, but students will be encouraged to push each commit or at the end of each working session.

The below is for a class that starts in May and so I have just created a single warmup exercise at this stage.


(Reza M) #6


(Ricardo Martin Marcucci) #7

I use some git repositories for course materials, but github classroom only for assignments. The assigments usually have in the readme.md all the information the student need for that assigment. Other repos on the organization are for examples, slides, etc.

We promote atomic commits, or at least a commit per feature complete. I often tell them that commit and push is a good backup of their work.

When I teach them GIT, I emphasize that messages should be informative but not verbose. It good for their team and for them if they need to find something in the history of the project.

At least when they finish each exercise of the assignment, but usually the push at each commit.


(Mike Crabb) #8

Will you keep all course materials in a repository? Or just assignments?

Before starting this class I would have normally kept all of my course materials/labs within the institution VLE. However, with the way that @mozzadrella has been laying out the ‘mini labs’ within this I’ll be changing next semester and laying out a set of instructions with links to additional resources all within gitHub, it works really well!

When will you expect students to commit?

I expect my students to commit every time that they finish an individual component that they are working on instead of waiting until a full set of activities has been completed.

What sort of commit messages should they use?

Try and push students to treat this as real world as possible, so getting commit messages to be representative of what they would expect to see if they were carrying the same task out within an industry setting.

When do you want your students to push their code to GitHub?

Push at the end of every class, or every few hours - I get students to use this as more of a backup feature.


(Mario Jorge Pereira) #9


(Omal Perera) #10

yes, I’m hoping to move PDFs, instruction documents to relevant repositories. So I can use them as Started packs. Its very much easier than mailing PDFs to mailing groups. And also It is a great way to provide basic codes to students.
other than that video tutorials will be stored in our stotages as usual. links of them will be mentioned in the corresponding assignments.

A hard question! can be differ with the assignment type & difficulty. Usually for coding assignments, I expect regular commits. “Commit Early And Often”

  • Commit message should be a summary of the change
  • Better if it is in minimum of 10 words and maximum of 40 words
  • Use the body to explain what and why and how. if it is very important commit

push shouldn’t be frequent as committing!

Here is an image of my classroom dashboard


(Benjamin Soltoff) #11

Will you keep all course materials in a repository? Or just assignments?

Yes and no. I use GitHub Pages to generate a course site written in R Markdown that contains all the course content (e.g. syllabus, notes, slides). This is published and students access it using the standard HTML interface (though they have access to the underlying GitHub repo). Each assignment is distributed in a separate repository.

When will you expect students to commit?

Early and often. If they make a significant change in their code, make a commit. Pushing can be made less frequently but if they do not keep a consistent and frequent log of their changes, they will not be able to look back and easily correct mistakes.

What sort of commit messages should they use?

Informative ones. 1-2 sentences describing what change occurred in the commit.

When do you want your students to push their code to GitHub?

Not as often as commits, but at least once per day. It’s good to push frequently to ensure a remote backup is kept in case of local computer failure (and yes this does happen to students, and yes they are regularly unprepared because they did not push).


Attached is an assignment I accepted from my data viz course I am preparing to teach in the spring.


(Randy Johnson) #12

Workflow:
I already keep my course materials in a repository, but have managed assignments outside of GitHub in the past. I can see how this will be an improvement on that… I often get questions emailed to me that take a bit of back-and-forth before I get the relevant code or error message so I can actually help them.

I think I would like them to use best practices for committing (discrete, logical commits; short descriptive message on the first line with more details below if needed for the commit message). They will need to push to submit assignments and to get feedback if they are stuck on something.

Assignment:


(James ODonnell) #13

@mozzadrella
@mrsodonnell
Workflow questions: I think that once I reach a certain level of comfort with course materials they will be in a repository. I can imagine that some of these materials will be a top level for the course as a whole (like the syllabus) while others will just a readme for each assignment. I know I will want to distribute data files with some exercises and start code with some exercises. For the most part, students should commit often, but only with meaningful changes to the code. They should run a unit test first, to assure that the code at least runs before they commit. Commit messages will be required and should indicate what improvements have been made to the code. Push should be done when the code needs to be reviewed, probably for a grade. Once a week is a good rule of thumb.


(Péter Kalicz) #14

I plan to share course material outside the repository. I will share only assignments in the repository.

I try to press the student to commit the solutions in small logical blocks.

I expect meaningful descriptions.

Frequently if they will make some advances.


(Rishabh Bansal) #15

Hi @mozzadrella! Here is my Module 2 Exercise 2.5 submission!

Exercise: Workflow

  • Yes, I will be keeping all the course materials in the repository with assignments. For now I’m . keeping them in Google Drive.
  • After giving the lecture, I will give them assignments as their homework, they will need to commit their assignments after they have done before the next lecture.
  • They should use commit messages to describe their commits, there is no specific commit message needed.
  • After the lecture, they have enough time to submit the code, they need to submit their code before their next lecture.

Exercise: Distributing assignments


(Miren Berasategi) #16

I’m not sure of how to set up my own workflow. I would rather have it all in a repository, course materials included, but then I do not have a clear idea of how to a) distinguish between contents that are repeated every semester and contents only for that semester and b) distinguish between static contents and living contents such as assignments…

In any case, I would expect students to commit often. Every time they have made a unique and self-contained modification if that makes any sense.

Commit messages should be descriptive of the contribution that changes are making to the whole project or assignment.

I don’t really see the difference between commit and push in this case of students, I mean it would be fine by me for them to push after every commit, or only when they finish the whole thing for submission.


(Evan Misshula) #17

Right now I have my lectures and syllabus on my website. I am not going to migrate all of that to repo this semester but I would be open over the next 2 or 3 semesters. I would expect students to commit when they have completed the assignment. I expect students to say what the code they are committing does.


(Evan Misshula) #18


Here is the classroom dashboard for 2.5


(Derek Land) #19

Will you keep all course materials in a repository? Or just assignments?
All course material is already in Git. Git classroom is not yet used and being tested.

When will you expect students to commit?
Often, use it as backup and revert option.

What sort of commit messages should they use?
Don’t really care.

When do you want your students to push their code to GitHub?
Often, use it as backup and revert option.

Intention is to use Classrom with Travis to automate the boring part of grading/checking. Let the students figure out the mistakes they make themselves.
Work for a grade will be handed in, in the learning environment (Blackboard).


(Vanessa) #20

I’m not sure of how to set up my own workflow. I would rather have it all in a repository, course materials included, but then I do not have a clear idea of how to a) distinguish between contents that are repeated every semester and contents only for that semester and b) distinguish between static contents and living contents such as assignments…

@mberasategi the quick assignment math slide might be helpful for you:

1 org per course per semester
1 repo per assignment per student

You can re-use your orgs semester to semester. I recommend keeping one canonical “golden” org with your latest materials in it, and then copying it each semester.

The repos (1 per assignment) can have both starter code and your static materials (we mostly use static materials for this course.

I don’t really see the difference between commit and push in this case of students, I mean it would be fine by me for them to push after every commit, or only when they finish the whole thing for submission.

Commit–snapshot of student work.
Push–when they want to send a copy of that work to GitHub to back it up and share it.
I would recommend they push when they can, especially with regards to group work.