Slashdot Mirror


Resources for Programming Course TA?

cndrr asks: "I'm a Teacher's Assistant for intro to Java at my university again this fall. The last time I taught, all the TAs had students turn in their assignments through email. I'm thinking about scripting a site that will let students turn in their programs automatically and in some cases, run the program and (based on the output) automatically grade it. Has anyone else TAed and found a good solution that they would recommend?"

13 of 97 comments (clear)

  1. Don't do it. by Andrew+Sterian · · Score: 4, Insightful

    You'll waste as much time setting up and tweaking the system as you will doing it manually. Automatic submission and sorting into folders by course section is simple enough, but running the program and automatically grading the output??? That's madness.

    Besides, trying to distance yourself from your students as much as possible by using technology is the exact opposite of what teaching is supposed to be about. If the students know that a real human will be reading the output and providing constructive feedback, they're much more likely to take it seriously.

    1. Re:Don't do it. by Anonymous Coward · · Score: 4, Insightful

      You'll waste as much time setting up and tweaking the system as you will doing it manually.

      It really depends on the setup at his school. When I was a TA, we had one "head TA" who would take care of making automatic grading tools, and as a result the rest of us probabaly spent a lot less time doing tedious grading then we needed to.

      Besides, trying to distance yourself from your students as much as possible by using technology is the exact opposite of what teaching is supposed to be about.

      Agreed, but when grading programming assignments, part of the grade comes from being able to produce the correct output, and a good automated grading tool can make sure that students are graded consistently on that. Sure, you should still grade on style and give feedback and all that, but when strictly grading the output, who really cares if it was graded by a machine?

    2. Re:Don't do it. by kbielefe · · Score: 4, Insightful
      It's not madness. I actually preferred my classes with automated output checking, for the following reasons:
      • It forces the teacher to make very clear program specifications.
      • It forces the teacher to make a reference implementation of their own assignment, so they will see for themselves where potential problems are.
      • Teachers provide some sample test cases and solutions, so that students can get instant feedback on the correctness of the program, even in the middle of the night. The final grading used those test cases, and some surprise ones to make sure the students thought about the entire algorithm and didn't just write to the test cases.
      • The automated grading only ever counted for maybe 70% of the grade. I never had a class with automated grading where a human didn't check for style, implementation, simple mistakes, etc.
      • The grader can still look at the output of failed test cases to provide constructive feedback, but they don't have to waste their time looking at it when the student got it right.
      • I always knew exactly what a certain percentage of my grade would be, before I turned in the assignment.
      As for implementation, all you need is a script that compiles the student's program, runs it against the test cases, then does a diff against the output from the reference implementation, and records how many test cases passed.
      --
      This space intentionally left blank.
    3. Re:Don't do it. by wed128 · · Score: 2, Insightful

      If he were to implement a system like this, i'm sure he'd use a secure sandbox. When teaching programming courses, anything more complex then "hello world" should be run as part of the grading process.

    4. Re:Don't do it. by feed_me_cereal · · Score: 3, Insightful

      If any student taking this class is good enough to circumvent the security for grading, they don't need to be taking the class and certainly don't need to worry about their grade.

      If any student taking the class actually tried something like this, they would be severely busted as all the evidence would be right there in their code (so long as the system is like ours, where submissions are handled and logged externally from where they're tested).

      --
      "Question with boldness even the existence of a god." - Thomas Jefferson
  2. Umm... by Angst+Badger · · Score: 2, Insightful

    Are you sure it's a good idea to let students execute arbitrary code on your unattended machine?

    I mean, I know *I* would get ideas...

    --
    Proud member of the Weirdo-American community.
    1. Re:Umm... by Anonymous Coward · · Score: 1, Insightful

      I've TA'd 3 Intro Java courses that use automated grading and I've never had anything bad happen by running the code. In fact, I've never ever heard of that happening at my school with anyone. It's not very common that kids in an introductory programming course have the know-how to destroy your computer when they can't even get a for-loop working the way they want.

  3. A Student Perspective - DON'T DO IT! by AaMcT · · Score: 2, Insightful

    I had a class last fall in which the prof used an automatic grader. He had a couple page document describe all the nit-picky formatting requirements we had to follow so that his automatic grader could run it. And, if we missed even a signle req, we got docked for it (generally in multiples of 10% of the assignment). Many people scored below-average to failing on their first couple of assignments because of this system, even though their code was flawless. So, please, please don't use automatic graders. They're more trouble than their worth, and you students will appreciate and specific comments you give. Even if it runs perfectly, comments can still sometimes be useful to make it even better.

  4. Suggestion ... by Monkelectric · · Score: 3, Insightful

    How about doing your job instead? Automated turn in is fine, automated grading is bullshit and a perversion of academic principles.

    --

    Religion is a gateway psychosis. -- Dave Foley

  5. no-no by Anonymous Coward · · Score: 1, Insightful

    Automatic grading is unethical.

  6. So... by Anonymous Coward · · Score: 2, Insightful
    Let me get this straight. Professors no longer teach most classes, they're too important to teach something so basic I suppose, and have dumped that task on TAs. You, a TA, are now too lazy/unwilling to do this as well and instead are trying to farm it out to an automated process?

  7. My school uses a combination by WatchTheTramCarPleas · · Score: 2, Insightful

    We have an automated submission system that requires the program to compile for subnission. It also has the capacity to run the program and check its output (command line stuff only). It also ensures that the work is turned in on time and that it contains all of the files required (unless of course we are given an assignment giving us free reign on the class structure etc.) Though, the TA does go through all of the code levaing coments where appropriate and those comments have been a massive help. Overall I like my end of the system, and I can see how it could be likede on the TA's end. With those considerations, if you believe that you wouldn't waste more time setting a system up than you would save with it ,I would go for it.

  8. 7 points on why this is not such a great idea by deltacephei · · Score: 2, Insightful

    1) At least one student will either be lazy or make repeated mistakes trying to get their submission into the correct format. Because you are the TA and have no power, students will complain to you and demand that you make a special exception for their code. You'll find yourself making multiple variations to handle all the ways people screwed up your basic turn in instructions.

    2) Studying code from other people is yes time consuming, but very valuable for you as a student. You will see patterns of solutions emerge and you'll see first hand where people had problems, and where they are inefficient. This gives you excellent data to share with students during recitation. It's valuable for everyone to discuss the different ways the problem was attacked and you being in the position of seeing everyone's code can make thoughtful assessments of what were ultimately good and bad choices.

    3) Spending time automating can turn into a black hole; better to just spend time automating a turn in procedure that sorts people's submissions into folders.

    4) Why not put testing the code onto the student's shoulders? If you have the need for seeing output why not instead post a series of expected inputs and outputs and ask students to turn in results that document this. Yes, it is more work for them. But becoming careful about work and careful to check it before turning in is or should be a key goal in a programming course.

    5) Too much automating can set you up for grief from the professor if several students privately go complain to him or her about your choice. If they perceive your methods are unfairly depriving them of points, even if it is not true, you'll get complaints and depending on the character of the prof, he or she may not defend your actions and choose to make you out as a bad TA.

    6) Take care not to go against the prof, it would be advisable to directly ask what their opinion is - it is after all their class.

    7) Studying the code, rather than pushing it through an automated checker, is a good way to see who might be cheating and unfairly copying code. It's also quite hysterical to see the lengths that some desperate people will go to hide this from you like changing variable names and being very fancy with comments, but logic is logic and after looking at code you'll see cheaters really easily. Unless it's a group assignment where this was allowed, cheating shouldn't be tolerated. Some TAs have automated searching for cheating in coding assignments - perhaps this might be a better use of your time.

    Good luck and have fun with those late night emails begging for help 8 hours before the assignment is due...