Help - complete Noob


(Paul Hermans) #1

I am trying to see if I can use Github Classroom to teach an introductory course to web design (about 20 students total). It will focus on HTML, CSS, Javascript but I hope to get students using the command line as well as Git and GitHub.

I’ve not taught this course ever before so I have a million questions.

The book I will be using has many exercises to practice basics and I will have longer projects for students to work on as well. As an example, one exercise gives some starter text in a text file but has no html tags at all. Then the students mark it up with appropriate semantic tags to get it to display correctly etc.

Sometimes these exercises build on previous exercises and at other times they start from scratch.
Longer projects will often cover a week or two of work and would likely have many commits along the way.

If I understood right, Classroom makes a new repo for every assignment, and I don’t see the point in this as each student would have like 100 repos…seems silly. Not sure why this is the case but there must be some reason behind it.

Instead, I was thinking of making 1 assignment for the whole year, and then having the student make a branch for each exercise or project. If I have additional code to provide, I will put it in a google folder that they can see and they can just copy it to their local machine and add to their repo.

When they are ready to submit an exercise or project for grading, they could either make a pull request and wait for feedback before merging, or they could make a final commit with a comment saying something like “This is the submittal” and then merge it right away.

I am not sure of the pros / cons of these two approaches but could definitely use advice!
Am I on the right track? If not, please explain why not.

Thanks in advance for all of your help.

Paul


(Vanessa) #2

@phermans2 welcome! :wave:

We got you :slight_smile: Your queries, in short order:

If I understood right, Classroom makes a new repo for every assignment, and I don’t see the point in this as each student would have like 100 repos…seems silly. Not sure why this is the case but there must be some reason behind it.

You could use an Assignment for a whole module, with different folders and subfolders for each particular exercise. Have your students submit pull requests to their own projects, and you can grade the diffs (see this workflow from @dondi).

@gcschmit does something fun with branches–he uses one branch per course period, so he’s easily able to navigate to where that class was, specifically, the day before. That said, I’d recommend the workflow outlined above ^^.

I like this idea. I hadn’t seen it before.

If I have additional code to provide, I will put it in a google folder that they can see and they can just copy it to their local machine and add to their repo.

We recommend using the Git + GitHub workflow to distribute code, for efficiency’s sake and to model the real-life experience of working as a developer.

Hope this helps, and please add more questions as they come up.


(Paul Hermans) #3

Thanks for the feedback. I have a couple of follow up questions though.
If I make a repo with all my starter code, and then make an assignment which is populated from that repo I am unclear about how a student would ever get that new code.

My plan is to then have students make a branch on their local repo for each exercise/project/feature

git checkout -b Exercise1

Then, edit some files, make some changes and perform commits

git commit -m “This is a really good commit message.”

Make some more changes

git commit -m “Another great change made.”

When the deadline for the assignment arrives (or when they are finished) they would push their changes to GitHub

git push

Then open GitHub, login and Create a PullRequest with the message being “Submit - Exercise 1”

This is where I get into trouble…If they need the code to be merged to do the next exercise, but I haven’t reviewed the PR and merged it, they are stuck (bad thing). Should I have them make the PR, then immediately merge so they can keep working? If so, where/how would I comment on their code (for grading purposes)?

Perhaps it would be better to have them merge it locally before they push to github?

Clearly I am a little confused and could use a little help sorting it out.

Thanks

Paul


(Geoff Schmit) #4

You have to find a level of granularity that works for you and your class. I found that an assignment for each unit is a good level of granularity for me. That said, most of my feedback is in-person and oral during the unit and the summative lab at the end is graded and receives written feedback. That avoids the issue you raised with pending pull requests and needing to continue to work on the next assignment.


(Paul Hermans) #5

Thanks Geoff,
That’s what I was figuring but wanted to make sure I was mis-understanding.

Paul