Module 2 Exercise 4: Workflow and assignments with Classroom

(Mike Zamansky) #21

(César Olivares) #22

Will you keep all course materials in a repository? Or just assignments?
I will keep just assignments in the repositories. Course materials, as well as the invitation link for the assignments will be posted in the Course page at the Moodle system provided by the University.

When will you expect students to commit?
Just once in case of weekly assignments. Whenever an atomic change is included for group assignments (course project).

What sort of commit messages should they use?
In case of course project, a description of the changes included in that commit.

When do you want your students to push their code to GitHub?
At least for the partial and final delivery dates.

(Miren Berasategi) #23

I never thought of that, sound great. How would I “copy” from my canonical org to the semester one? And when you say “re-use your orgs semester to semester”… Do you mean just update the name to match the current semester, or am I getting it wrong? What would happen to student/assignment repos then?

Thanks for being there! And sorry for the number of questions :sweat_smile:

(Vanessa) #24

@mberasategi you would fork your materials into a new organization. Fork is something we cover in Module 3. :slight_smile:

(Paola Corrales) #25

In Argentina, we start the first semester in a few weeks. I’ve been assigned to a class about numerical modeling (oriented in atmospherics applications). The final test for the students to pass is to design an complete a numerical experiment using a numerical model. So, I thinking to use github to share with them the codes and materials needed.
They don’t need to do many changes in the codes but it important to have a way to share their advances with the teachers. Normally, this is do via email but we now all the advantage that github have.

  • My idea is to put all the materials in a repository, but some files can be heavy, so I have to re think this.
  • So, Is important that they commit and push frequently to have constant feedback
  • They should use messages with they state of advance of the project

Some of this answers are incomplete because I didn’t use github in a class yet, but I hope I can implemented it this semester :crossed_fingers:
Here is the screenshot of the teacher dashboard :woman_technologist:

(JuanMa) #26

The assignments will be in repositories most of the times. Now with the Github Classroom workflow is much more easy to distribute the exercises and keep track of them.
As for the contents of the lessons, It depends on the course. Some of my trainings require the use of a platform to display videos, but most of the times the notes, slides, and explanations are also in repositories so it’s easy for me to keep them update.

In the beginning, as long as they “upload” the solved exercises it really doesn’t matter to me. After some time I’ll try to emphasize more on “atomic” commits and “completed work” commits

In the beginning, is up to them. After some time I’ll emphasize more on semantic messages and if things get pro, maybe some semantic versioning related messages.

Ideally, at least one push at the end of the day. But I’ll encourage them to use the remote repository as a sort of backup, so the more they push the safer their work is.

(Ryan Schuetzler) #27

I’ve been using it this semester for some student programming projects. I do keep some of my other course materials in a GitHub repository, but I reuse that repository from semester to semester.

For the workflow questions: ideally my students would actually commit and push to GitHub every time they make a meaningful change to their code, or every time they stop working on the assignment. I can’t seem to get them to actually do that, but someday maybe I’ll unlock the magic sauce to get it to happen.

How to teach incremental, atomic commits?
(Amelia Garripoli) #28

How might you imagine using this tool for your courses?

Classroom is a handy way to give students a clickable link that copies a template repository for starting an assignment or project. I could see using it to distribute starter code for projects or assignments, or giving them a place to store their code that ensures it is private (vs. them creating a public repository in their own account).

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

This is interesting to consider, and something I am currently wrestling with. My college uses Canvas, and to date (3.5 years on the job now) I have spent weeks of my life “in Canvas”, creating course shells and updating them between terms. It is purely data entry, and I cannot automate simple remedial tasks like adjusting dates when lab nights change or I move from quarter to quarter. Canvas tries, but never gets date adjustments 100%. And, there’s no search within a course shell in Canvas (ouch!) so students get lost and frustrated.

There are many aspects to consider, and I am just beginning to investigate how to handle them. Features I like and use from Canvas:

  • anonymous surveys
  • Q&A board
  • discussion boards
  • quizzes, timed and untimed, retakes, scoring (best/last/average), manual override of scoring
  • controlling file type submitted
  • due dates, availability dates, and configurable-to-the-student
  • calendar
  • announcements

I am currently investigating using Morea as a course informational shell, and using Canvas for grades. Morea has “News” I can use for announcements, a Calendar, and a nice pedagogy with readings/experiences and outcomes all tieing together. A GitHub organization can provide Projects for discussions, or I can build out a repo with Issues or a Wiki for building information communities. I am debating using a GitHub classroom for distributing and collecting assignments vs. the informational shell and a Canvas submission. The class I’m targeting this for is Web Transport, which covers XML, JSON, DOM, and HTTP. The XML and JSON are perfect candidates for GitHub, but I also like collecting screen shots to get a sign that students tested their work for validity - some sort of CI tie-in would help, I would love to have time to look into adding that to my classroom repo’s.

When will you expect students to commit?

Students quickly learn that committing often is a good thing. I expect a minimum of 1 commit up on github, but more is fine also.

What sort of commit messages should they use?

I had a fixed message, but when they want to sneak more in, it’s handy not to fix the message for them but tell them to make it “useful”. I plan to perhaps automate putting tags on their repos at the due dates to make it easy to pull down their work up to the assignment due date.

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

As often as they like; and if they do push early, their reward is potential non-grading feedback from me that is helpful. They like having their code in the cloud, so once they figure out they can do as many pushes as they like, they do. And I encourage it with the positive support of feedback on draft work.

This is a screenshot from my most recent (first) use of GitHub Classrooms, I did some testing so I had a test login (ameliarann) that I used to see what students would see. It was invaluable in understanding what goes on, I can use that student login in the classroom also to show students what they will see (rather than what I, as teacher and repo admin, sees). It’s not the first view with all the repos, just the view in the dashboard of the test repo and its assignment.

(Ktheu) #29

Will you keep all course materials in a repository? Or just assignments?
When will you expect students to commit?
After every unit of work
What sort of commit messages should they use?
Hopefully something meaningful
When do you want your students to push their code to GitHub?
Not sure about this, at least after each session of work

@mozzadrella I am still a bit confused about the relationship of classroom and organisation.
Is it one classroom per organisation? So 1 org per course per semester also means: 1 classroom per course per semester? Is this right?

(Vitor Rios) #30

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

Most course material would be kept in the repository, probably as a wiki

When will you expect students to commit?

Commit early, commit often. Not the ideal , but helps early students to keep a notion of their progress throughout the course

What sort of commit messages should they use?

Short and informative, describind what changes were made to the code

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

probably as often as they commit, because its also teaches them to keep an offsite backup of their work

(Tess Homan) #31

I’m a newly appointed teacher and I will soon start-up my own courses. I plan to integrate the use of Git from the start. I imagine to keep all course materials in a repository outside GitHub classroom and to use GitHub classroom for assignments only. The assignment repo should contain the assignment description and the provided basic code.
I will motivate students to commit often, every time a tiny part of the code is ready. And I don’t know yet how the commit messages should look like. I know what works for me, so I will share this, and maybe I’ll learn more on commit message conventions in the future.
They should push at least once at the end of every day they have worked on the project, but are free to push as often as they want.

(Maurício Aniche) #32

In our current setup, we use one repository per team. They are named team-XYZ. If students need one repos (as they work on OSS systems), we fork for them. You can see a screenshot of our current course:

We ask students to push frequently, and create releases for their deliverables. Our TAs then go to each deliverable, and give students feedback.

Our entire course are also on Github. Students can see the schedule, materials, the assignment, etc etc in a github page repo, which they can make pull requests is they find problems!

(Vanessa) #33

Do you mind if I open a thread in the wider forum on this topic? I think other teachers would find it useful.

(Vanessa) #34

@ktheu in module 3 there’s a section on setup math:

1 organization per course per semester
1 repository per student per assignment
a Classroom connects with your organization to create assignment links

(Ryan Schuetzler) #35

That’s fine with me!

(Alexander L. Hayes) #36

Discussion: How might you imagine using this tool for your courses?

How does software evolve over time? Can we find congruences between machine learning models if we track them over long periods? Is the oral tradition of storytelling replicable in a system where we can measure author contributions through branching and merging?

Version control is a simple idea with profound implications. The possibilities are endless.

Exercise: Workflow

  1. Keeping repositories atomic could be helpful to students (rather than searching through my mess of online material). Some material being open to anyone on GitHub could be helpful for other students/instructors though.
  2. Frequently. If students git commit -m "turning the whole project in", the purpose of version control is subverted.
  3. Descriptive enough that they can explain to the grader what changed in that commit.
  4. As they work. They could probably do everything locally and push all commits at the end, but that is similar in spirit to [2].

Exercise: Distributing Assignments

(Vanessa) #37

:metal: :comet:

(Vicente Cubells) #38

Module 2 Exercise 4

Hi, I’m a teacher of computer science and programming courses. In my courses, I like to use some different tools, from LMS to Open Source tools. Some years ago, when GitHub announced GitHub Classroom, I had exciting and I started to use it.

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

The main materials are in the institutional LMS, following rules, but the programming assignments reside in GitHub. In some cases, I upload other materiales to GitHub too.

  1. When will you expect students to commit?

My students commit every change that they do in their assignments, so i can see how everyone are going improving in their works.

  1. What sort of commit messages should they use?

They have to use descriptive messages for every change.

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

As good practice, after every local commit.

Some screenshots:

(Steve R Ncl) #39

Still thinking about the workflow/distribution, some nice ideas here. Since we use a selection of VLEs (commercial and homegrown) for distribution, assessment and storing marks, this approach might be used formatively / unassessed to begin with.

(Dirk Uys) #40

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

I’d keep course materials in a repository

When will you expect students to commit?

Ideally whenever they do the work

What sort of commit messages should they use?

Something describing what they changed to make it easier to review changes and help them

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

As soon as possible