Module 2 Exercise 4: Workflow and assignments with Classroom

(Vasil Markov) #141

First of all sorry for the late reply. We are trying to apply the strategy of breaking the big problem in small pieces so that small problems are the goals that they achieved and later commit.

(Jason T. Mickel) #142
  1. The course I use Github in is intended for non-programmers, so I will keep most materials outside of Github with only assignments there. I could understand a rationale for putting everything in Github to keep students active in it and to become accustomed to the interface, however.’

2 & 4) I have allowed students to commit AND push as often as they desire since it is a web programming course and it allows them to see live results, but I may shift to a model in which they live preview all of their work locally and only commit to create the bookmarks as discussed in this training then push only when they have completed the assignment.

  1. Now that I have a better grasp on the working-staging-pushed model, I would encourage them to commit pieces with descriptive comments of those parts.

(Patrick Reimers) #143

I plan to keep assignments and related course material in a separate repository each.

I’ll expect the students to commit early and often.
This helps me to follow their progress on an assignment and help them if they got stuck on something.

I expect short but meaningsfull commit messages.

They should push often to the remote repository (if possible after every commit). But at least they must push at the end of every lesson.

The screenshot shows a test assignment in a test classroom.

(Edward A. Roualdes) #144

How might you imagine using this tool for your courses?
I’m still getting used to the idea of one organization per course per semester and one repository per assignment. Before finding GitHub Classroom, I had thought about one repository per course. But I like the recommendation, because I can keep better control on when students see the next assignment.

Will you keep all course materials in a repository? Or just assignments?
Probably just assignments, and materials on my website.

When will you expect students to commit?
Commit often. That’s a rule.

What sort of commit messages should they use?
Short and informative; no riff raff.

When do you want your students to push their code to GitHub?
When they’re satisfied with it.

(Amy Dickens) #145

Hi :wave:

Thanks for sharing your screenshot - did you also have answers to the questions asked in the exercise?

It would be great to hear more about your student assignments and possible workflows with Git and GitHub :sparkles:

(Amy Dickens) #146

Great stuff here :tada:

Just a note on the commit messages - consistency of language is great, I’d be inclined to encourage your students to write meaningful descriptive commit messages for those times that they may need to reverse commits.

Whilst this might not happen often the commit messages really help in deciphering what commit was the cause of any issues. :sparkles:

(Amy Dickens) #147

Great to hear how you think your students will make their commits and pushes. :sparkling_heart:

However - what would be the ideal here? Will you try to encourage more than one or two large commits and instead suggest incremental commits when any changes have been made to the project?

Interested in your thoughts :thought_balloon:

(Amy Dickens) #148

No riff raff :heart_eyes: - this made me smile - great submission :sparkles:

(Chris Jones) #149

The ideal depends on what’s being taught. I spend at least some time going over different kinds of branching strategies and each lends it itself to different flavors of committing. The ideal is shorter, more constrained commits, but the reason for each changes radically depending on whether or not you’re doing trunk-based development versus long-lived feature branches.

For general software development coursework I encourage large numbers of small, focused commits, but that isn’t necessarily suited for all style of work. For example, I also encourage my students to keep things like their homework and papers in Git, which is often a foreign concept to many of them. That way they can, for example, store a current copy of papers and presentations while they go off an make bigger changes locally or even in separate branches. In such cases small, frequent commits might not matter as much since the collaborative aspect isn’t the main driver, but instead Git’s use a version control and a kind of off-site backup becomes the dominating factor.

(Cfcortesmx) #150

Actually this semester is the first time I started using Github Classroom and this is why I am taking this course, so I can understand better how to use it.

I asked students to make commits only when they have completed a part of code that has been tested ad is working ok. But, as they need to move from one computer to another ( home to school or viceversa) they are also allowed to submit work in progress.

Descriptions on commits should be descriptive enough sho they can easily identify each of them.

(Héricles Emanuel) #151
  1. I’ll use some git repositories to store the course essentials, and I’ll use github classroom to create assignments for students.
  2. I expect atomic commits, with each completed step of a task, commits will be a good way to save your work. Working in this way assists in not compromising the work and explains in more detail what is being done with each commit.
  3. Descriptive messages that allow an easy identification of what was done in that commit. I believe that a summary of the changes made is important.
  4. At the end of a work session, or at some decisive point in your task. I expect them to commmit in their local repositories atomically during the session, and at the end of it, submit their work to the remote repositories.

(Paul Inventado) #152
  1. Will you keep all course materials in a repository? Or just assignments?
    I’ll probably just keep the assignments in the repository. We’re already using Moodle that does a pretty good job of organizing course materials.

  2. When will you expect students to commit?
    I plan to use this for computer lab exercises and projects so students should commit multiple times until the due date.

  3. What sort of commit messages should they use?
    The messages should describe the specific type of edits they made. This could be adding a function or fixing a bug.

  4. When do you want your students to push their code to GitHub?
    I encourage them to push code at least at the end of the lab session so they have a backup of their code. I had many instances when students lost code because their computer crashed.

(Brian Crites) #153
  1. Will you keep all course materials in a repository? Or just assignments?
    I’m currently keeping my labs and assignments in GitHub classroom, with my in-class exercises and slides being kept in Google Slides.

  2. When will you expect students to commit?
    I expect students to commit as they are working, and the first few labs have specific places for them to makes commits. The hope is that they will get used to this pacing and make commits as they develop (rather than just at the end).

  3. What sort of commit messages should they use?
    I give them some articles to read on git workflow and how to write good commit messages, however this is too difficult to enforce over large courses so there isn’t much oversight.

  4. When do you want your students to push their code to GitHub?
    Students should minimally push at the end of labs or when they finish a development session for the assignments, but they can push whenever they feel necessary (the more the better in my opinion)

I’m actually already using GitHub classroom for my current courses, so here is an image of one of my previous labs (some information redacted)

(George Stavrinos) #154

(Gazihan Alankus) #155

(John Stewart) #156

(Pedro Prieto) #157
  1. I keep all materials in a GitHub organization. I have one reference organization for all materials (published in GitHub Pages) and specific organizations for every semester. Each assignment has its own repository in the semester organization.
  2. I expect them to commit as soon as they have created something with value. I encourage them to make lots of commits. I usually joke about this telling them that “commits are free”.
  3. They should use descriptive messages that explain what they have done in that commit.
  4. We work in class, so I expect them to push code at least once in every class. They usually work in groups and they teammates need to get the changes often. Security reasons are a plus too (so that they don’t lose their work because of lost drives or things like that).

Last year classroom screenshot:

(Rpastorvargas) #158

Exercise: Workflow

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

Just the assigments. All the course materials are included in our LMS and can be referenced from the README files in the repositories

  1. When will you expect students to commit?

We define several chekpoints in the development phase, so eventually there will be one commit, al least, for every checkpoint. The grading of the tasks/assigments is done step by step using these chekpoints.

  1. What sort of commit messages should they use?

The intermediate commits are not so relevant so the messages coud be less informative compared to the messages for checkponts’s commits. These messages must have fixed names (“Feature X added to get Y services running”)

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

Final and intermediate checkpoints…

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.

I’ve used my student account (i use to test the workflow of everything as student)

(Osvaldo Jimenez) #159
  1. Most assignments and a couple of labs will be in the repositories.
  2. I will be expecting students to commit early and often
  3. They should be using short commit messages that will allow them to reference or have a note of what they’ve done so far.
  4. I would like them to push when they have something they believe is functional that they would want to share with everyone else.

(Dawid Zalewski) #160
  1. I’m going to keep just the assignments in repositories. But, time permitting, perhaps also some other course material will end up on GitHub.
  2. I expect students to commit after each substantial change they make to their code. Not just once after they are finished.
  3. Descriptive;) I’m also thinking about introducing keywords/tags into the commit messages, such as QUESTION, GRADE, FINAL, etc.
  4. I expect them to push every time they need interaction/intervention or want to use travis-ci integration.