Live data from Hacker News

Learning programming at scale

radar.oreilly.com

11–20 of 23 posts

Re: Learning programming at scale

#11
post #6

This is very timely. For the past few years I have been teaching a programming course to small groups of beginning students, generally no more than 15. The goal is teach them the basics over the course of a semester, and we usually get there. The only downside is that it takes me about 30 minutes to review each assignment (there are two a week) and write feedback to the student. With 15 hours of grading a week, it se…

I'm a high school teacher, and I currently have 4 sections of an intro Java course with 28 students each. (And I also teach an additional 36 students in two sections of the follow-up course.)

Each student does 1-3 small programs per class day, and I grade them all by reading the code and making comments. (I'm grading in another tab as I write this; I have 91 files to mark before 2:15pm today which is the output of a single section for a single class day.)

I've written tools to help me evaluate and make comments on the files extremely quickly. So that's what I do.

Re: Learning programming at scale

#14
post #2

I just had a revelation while reading the OP (who describes a much more elaborate, fully-featured system)...yesterday I was teaching students (about 20) how to do calculations with Pivot Tables using Google Sheets and was struggling with the usual "well-can-you-describe-exactly-what-syntax-error-you-made" problems...and now realize that I could've just had students give me read/edit access to their sheets and I could…

Access to the lab computers via screen sharing protocols might get you a general version of what you're describing.

Re: Learning programming at scale

#15
post #4
post #2

I just had a revelation while reading the OP (who describes a much more elaborate, fully-featured system)...yesterday I was teaching students (about 20) how to do calculations with Pivot Tables using Google Sheets and was struggling with the usual "well-can-you-describe-exactly-what-syntax-error-you-made" problems...and now realize that I could've just had students give me read/edit access to their sheets and I could…

It's maybe not perfect, but can you have them working in a shared dropbox directory in class? (Or something equivalent.) Then just open or refresh the file... IPython notebooks running on a central server is potentially another option for some languages. edit: if you do find a working solution, please write it up and post it. I'd love to hear what works.

Ah...that's pretty smart, too. It wouldn't be as slick of a collaborative environment, but at least I can grep the entire class folder in one go. I will seriously consider this!

Re: Learning programming at scale

#16
post #7

These things look neat, but wouldn't this be teaching programming at scale? The phrase "learning programming at scale" leads to the idea of someone trying to learn how to program who is also able to repeatedly enlarge the amount of stuff that s/he is able to learn at once. That's...not really what's going on here.

Also, doesn't this only work with intro materials that only have a few lines? How's this way of teaching programming going to work if the program is hundreds of lines long, across multiple files, or have more than one correct solution? The debugging time alone would go up very quickly

Right and that's why there's things like AirPair where the cost of tutoring goes up and is paid per minute due to the complexity. This scaling has a limit but it's the same as any other field; how many artists go on to be great artists after all?

Re: Learning programming at scale

#17
post #6

This is very timely. For the past few years I have been teaching a programming course to small groups of beginning students, generally no more than 15. The goal is teach them the basics over the course of a semester, and we usually get there. The only downside is that it takes me about 30 minutes to review each assignment (there are two a week) and write feedback to the student. With 15 hours of grading a week, it se…

Are you aware of softwarecarpentry.org ? Unlike OP, their curriculum is based on education research, and refined over more than a decade.

Re: Learning programming at scale

#18
post #6

This is very timely. For the past few years I have been teaching a programming course to small groups of beginning students, generally no more than 15. The goal is teach them the basics over the course of a semester, and we usually get there. The only downside is that it takes me about 30 minutes to review each assignment (there are two a week) and write feedback to the student. With 15 hours of grading a week, it se…

I teach Java and Python intro courses at two different colleges (both In the first few weeks, I use JUnit and System Rules (I am currently build Python unit tests) to let them only work via the main method. Once we introduce methods, I show them how I call them via my tests.

I have also started implementing typing exercises into my weekly work, so students can get a feel before getting thrown to the wolves on the week's assignments. If I head to PyCon next year, I hope to present on whether it was successful or not.

I am looking to automate grading ala Open edX style submissions, as the biggest problem I have is not being able to give students a grade/notes until around Friday when I grade.

One trick I do is lecture all of Monday (2 hour class) and then let them work on their assignment for the week on Wednesday (3 hours). Most students don't realize how much time outside of class needs to be spent in the initial semesters of programming. I use that lab time to let them work and act as a helpful tool if they have questions. For example, this week, we'd gone over building Objects, but the idea of constructors are still shaky to some people. Today, when they were working on their labs, I spent some time with the 1-2 students that needed a little extra help understanding the work to get everything.

Re: Learning programming at scale

#19
post #18
post #6

This is very timely. For the past few years I have been teaching a programming course to small groups of beginning students, generally no more than 15. The goal is teach them the basics over the course of a semester, and we usually get there. The only downside is that it takes me about 30 minutes to review each assignment (there are two a week) and write feedback to the student. With 15 hours of grading a week, it se…

I teach Java and Python intro courses at two different colleges (both In the first few weeks, I use JUnit and System Rules (I am currently build Python unit tests) to let them only work via the main method. Once we introduce methods, I show them how I call them via my tests. I have also started implementing typing exercises into my weekly work, so students can get a feel before getting thrown to the wolves on the wee…

Thanks to everyone for their excellent suggestions.

One of my reservations about going to an automated testing and grading approach is that the course evaluations consistently say that the personalized feedback is an important reason that they took the course. But the fact is that line by line analysis of every submission does not scale, and teaching X times as many sections means that compromises will have to be made.

I am not worried about the top and middle thirds of the students, they largely sail through on their own with pretty minimal guidance from me (it is an intro course and many of them have strong backgrounds). The bottom third of the class is new to programming though, so hopefully they will take more advantage of lab and office hour time to solicit help.

Re: Learning programming at scale

#20
post #18

Earlier quoted context omitted.

I teach Java and Python intro courses at two different colleges (both In the first few weeks, I use JUnit and System Rules (I am currently build Python unit tests) to let them only work via the main method. Once we introduce methods, I show them how I call them via my tests. I have also started implementing typing exercises into my weekly work, so students can get a feel before getting thrown to the wolves on the wee…

Thanks to everyone for their excellent suggestions. One of my reservations about going to an automated testing and grading approach is that the course evaluations consistently say that the personalized feedback is an important reason that they took the course. But the fact is that line by line analysis of every submission does not scale, and teaching X times as many sections means that compromises will have to be mad…

The bottom third is where I hope to see improvement with the introduction of typing exercises, lecture exercises (multiple choice/true-false/fill in the blank style questions) and also I include YouTube videos of that week's material. My logic is that like sports, you need to stretch and warmup before doing a physical activity, so the same should be applied to a new concept. If the student is still having trouble implementing the concepts on their own, by having a prebuilt, functional version can help them see how it works.

Here's the current exercises for my Java 1 class: http://imgur.com/a/boc6h

So far, the students are responding favorably to the exercises and the only fall out I've had are students that fail to show up or do any work. Grading wise, the typing exercises are 10%, lecture exercises are 10% and the actual programming assignments are 30%. Since the problems are a smaller chunk of their overall grade, it alleviates the pressures of the 'all or nothing' structure of the unit tests.

In my evaluations last semester, many loved the introduction of the YouTube videos and I plan to ask them about the typing exercises this December.

I definitely agree on the personalized feedback portion though, that's why I make the second class meeting only programming, no lecture. This way, they can get their hands dirty with an experienced person to help them.

Post reply on HN