Resources for Programming Course TA? 97
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?"
Don't do it. (Score:4, Insightful)
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.
Re:Don't do it. (Score:2)
Re:Don't do it. (Score:3, Insightful)
Re:Don't do it. (Score:2)
Re:Don't do it. (Score:4, Insightful)
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).
Re:Don't do it. (Score:2)
Re:Don't do it. (Score:2)
Re:Don't do it. (Score:2)
Re:Don't do it. (Score:4, Insightful)
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?
Re: (Score:2)
Re:Don't do it. (Score:2)
Re:Don't do it. (Score:5, Insightful)
Re:Don't do it. (Score:2)
That's great and all, but wait until you're taking a compilers course and are subject to the restriction that your generated code be precisely identical to some reference code, because grading was automatic.
I'd say while taking that course, I spent 20% of my programming time on making the output CORRECT. The remaining 80% of the time was spent making it EXACTLY MATCH the reference. What a pointless waste of time.
And to anybody about to suggest that I gained experience "programming to an exact spec," wel
Re:Don't do it. (Score:2)
Ironically, both my undergrad and graduate compiler courses had very little programming. Doing compiler optimizations by hand for a whole semester can really make you appreciate compilers.
Do it, but don't do *only* it. (Score:4, Interesting)
They don't need to be a substitute, and they can help a great deal in doing a lot of the manual checking you would be doing anyway, as well as the organizational part. I'm a TA, and I use a script to check for just about every simple mistake I can think of, and then I go over every assignment by hand, with a printout of my test-script's results. The script doesn't so much grad ethe work, but point out any output that might not be exactly what I expect, over an assortment of tests. The students often comment that these scripts, which I also hand back with the assignments along with output from the scripts, help a lot to identify not only what their problems were, but what sorts of things they should have in mind when writing their programs. I then *carefully* go through their code by hand to insure they were using good style and didn't coincidentally happen to pass any test with code that isn't technically correct.
When you have over 60 students in a class and have to grade long programming assignments every week, these scripts are essential to getting my work done in a timely manner. My personal attention and comments are not replaced by my scripts, but are enhanced by my scripts. My time spent grading is made *more* effective.
Also (for cndrr): I might be able to provide the main part of the script we use, I'd just have to check with my instructor. The test scripts we use are fairly easy to write using it, if you don't mind doing it partially in scheme... (our department is in love with that language). Let me know if you're interested.
Re:Do it, but don't do *only* it. (Score:4, Interesting)
This cut down the time required by almost 80% . The correct programs were easy to grade (automatically) and most programs with 'standard'(expected) errors did not take too long either. Once a while some one would have weird errors and the TA's would have small challenge finding those. It was the most fair system I could think of and took care of most of the drudgery without being unfair (the only important caveat was to make sure that test cases for the tester script were solid and the students couldnt cheat their way out, by pre defined responses).
Re:Do it, but don't do *only* it. (Score:1)
Re:Do it, but don't do *only* it. (Score:1)
Funny Story (Score:2, Funny)
We had a T.A. automatically grade assignments at the school where I worked. He wrote an automatic scanner to count the number of words in the comments, and to automatically run the programs and compare the output. He then assigned grades appropriately, computing the grade only on the number of words in the comments.
He then quite proudly stood up in front of the class as explained to them what he had done. He had no idea what was about to happen. Essentially, everyone in the class simultaneously work
Re:Don't do it. (Score:1)
Re:Don't do it. (Score:3, Informative)
Do the work. (Score:4, Interesting)
If universities were all about automated stuff, students can very well learn from course textbooks such as those prescribed by ocw.mit.edu by themselves. They go to university so that they can interact with their professors, get their amateur evaluated properly to shape their future work, and collaborate with their classmates.
Re: Do the work. (Score:2)
(Of course, you'd then need to write a program to write the programs...)
Re:Do the work. (Score:2)
Make it a public interface (Score:2)
If you expose your automated grading system so that anyone can run it (at least with some subset of the standard test data and expected results) you let every student check their grade as they go. You also make it more like the real world.... run your program against several d
Beware automatic grading... (Score:2)
Said students got to keep the grades, too...
Re:Beware automatic grading... (Score:2)
Programs with bugs. What a fscking novel revelation!
(fork off a child process that sleeps for a bit then overwrites the grade file, then just output whatever)
What that means is that their security process sucks eggs.
Re:Beware automatic grading... (Score:1)
one of the benefits of Java: security! not only could they not do malicious things, we had defenses against DOS: time limit and non-instant execution. Instead, submissions were queued up and executed one at a time. also, if you refreshed the status web page faster than was automatic, you got demoted in the queue.
Umm... (Score:3, Insightful)
I mean, I know *I* would get ideas...
Re:Umm... (Score:2)
student's mom: "why doesn't johny have a grade for your class?
you: "well, um, i had this idea about asignments, uh, and now i don't have anybody's work
mom: "lawyer!!! i want a lawyer!!!
just read through it, seriously, it'll much easier than unbreaking whatever the kids wind up doing to you
Re:Umm... (Score:2)
Re:Umm... (Score:1, Insightful)
Re:Umm... (Score:2, Interesting)
From a security standpoint, that generally would be a bad thing to do. However, there are a few simple things that can be done to minimize the problem. In addition to the sandboxing mentioned elsewhere, you can create a normal user account that is the "grader" account. The TA/Instructor copies the source into that account and then can run it and will have no more privs than the student did -- so any badness
RoboTA. (Score:1, Funny)
Grade what? If they can automate it, then you're out of a job.
Re:RoboTA. (Score:2)
A Student Perspective - DON'T DO IT! (Score:2, Insightful)
Re:A Student Perspective - DON'T DO IT! (Score:1)
Students always complain about this stuff, but the bottom line is, if you're not comfortable paying attention to details, you should consider sociology or something.
Re:A Student Perspective - DON'T DO IT! (Score:2)
The last thing we need in the software busine
Re:A Student Perspective - DON'T DO IT! (Score:1)
> In my opinion, errors that can be fixed by a well-known script or program (e.g. indent)
Then why didn't you just run the script on your badly formatted code before you handed it in? Sounds to me like you lost a couple of points are trying to blame the grading scheme after the fact.
Re:A Student Perspective - DON'T DO IT! (Score:2)
As far as I can remember, I've only had one programming course where whitespace conventions were enforced and, even then, the effect on the grade was much less than the penalties mentioned here. Over here in
Re:A Student Perspective - DON'T DO IT! (Score:2)
That's why you go through and apply weights to the various things you're scoring. "Consistent indentation" might be worth, oh, 3 points ( 3 = consistent indentation, 2 = minor lapses, 1 = made an effort, 0 = randomness ), while "accomplishes the task" might be worth 30 points.
Re:A Student Perspective - DON'T DO IT! (Score:2)
Re:A Student Perspective - DON'T DO IT! (Score:2)
Automatic graders are better for both students and teachers, because the teacher/TA can focus on the essence of your program, and let the machine worry abou
Suggestion ... (Score:4, Insightful)
Re:Suggestion ... (Score:4, Interesting)
Sadly, automating any part of the grading process means you end up giving a lot less feedback to the students concerning their errors, but that's the prerogative of the instructor and assistants. In some classes, however, the student-to-TA ratio is so large that it would be impossible to grade every homework manually.
Also keep in mind that some TAs don't actually get paid for their efforts - and those who do usually make peanuts. At some schools, and in some academic programs, being a TA is a required part of your graduate degree. And since they're working on their own degree, the TAs actually have a lot of their own work to do in addition to grading hundreds of homeworks every week.
Re:Suggestion ... (Score:3, Interesting)
Of course, if y
Re:Suggestion ... (Score:2)
Re:Suggestion ... (Score:2)
Re:Suggestion ... (Score:2)
At my place of business, we just hired a junior engineer (over my sternious objections) who just graudated from college and asks questions like "How can I compare variables?" ... I have to think that automated grading is part of the problem that creates people like that :)
Re: Very True (Score:1)
hehe, jk.
Re:Suggestion ... (Score:1)
no-no (Score:1, Insightful)
So... (Score:2, Insightful)
Re:So... (Score:2)
Now if he'd aske
My school uses a combination (Score:2, Insightful)
All my classes do it (Score:3, Interesting)
Every class I've taken at UCSD does some sort of automatic grading on the programming assignments. It would be impossible to grade everything otherwise... Last quarter we wrote a compiler that ended up being a few hundred KB of source. There were over 200 test cases ran by the autograder.
All of the assignments are turned in from a unix prompt using a TURNIN command after prepping for the appropriate class.
The class I'm working on now (Operating Systems, using NACHOS) even has autograder() methods in the skeleton of the code that are used during grading...
I agree for a first class some feedback and hand grading might be necessary, but even with autograding you can add comments after looking at the code that causes similar test cases to fail.
Re:All my classes do it (Score:1)
A few hundred KB of CUP/lex autogenerated source... c'mon, don't let people think we're reinventing the wheel over at UCSD. =P
WebCT, university script (Score:1)
Re:WebCT, university script (Score:2)
Why not just hunt the guy down, blind him, chop off a few extremities, and leave him in a ditch? It would be a kindness in comparison to WebCT.
I haven't had the best experiences with their software.
One size doesn't fit all (Score:2)
The CS Department At Yale (Score:3, Informative)
In a large part, it depends on how big your class is, and if you plan on continuing teaching. One professor, (whom I idolize) has been doing this long enough to have set up an extensive and all-inclusive framework. Can't go (too badly) wrong when you roll your own, but YMMV.
-b
Required Environment? (Score:2)
If your students are all writing CGI-style programs, maybe reading and writing a file or two, why not set up a Linux or FreeBSD box for them? Open ftp and ssh for them and require them to build their programs there. Your requirements for each class will be that they compile and run their programs on your server, do a run under script(1), then hand in all source, output, data and log files via a script you wrote called handin assignment [file...], wh
Re:Required Environment? (Score:1)
Re:Required Environment? (Score:2)
Obsessing over the worst possible outcome is usually a waste of time. We're talking about a system where only students have accounts. And it's a beginning programming course, for crying out loud. In Java
short answer (Score:1)
Re:short answer (Score:2)
Version control: your greatest bacon-saving device (Score:4, Interesting)
In COMP 314 [rice.edu] (Rice University's [rice.edu] sophomore-level programming & algorithms class, taught this past spring [rice.edu] by Prof. Dan Wallach [rice.edu]) we TAs solved this problem with Subversion.
An important part of real-world programming is teamwork; in 314 we embrace this and randomly sort students into groups of two for pair programming. The groups change for each project, and each project group gets a spot in a svn repository [rice.edu] set up for the course. ACLs keep groups from peeking at one another's changes (for example, see this team list [rice.edu], which is actually just a slice of our Subversion access control file). Students were required to tag their submissions for each of the project milestones: specification, prototype, final; this was how students submitted code [rice.edu] for these deadlines. From timestamps we could easily see which groups incurred "slip hours" for late turnins.
There were a number of reported incidences of lost work or conflicting changes which would have been disasters if not for svn, which saved their bacon. Groups that learned to check in early and often knew that accidental deletions or disk failures posed no threat to a successful project submission. A few enterprising teams even used tags and branches to help organize complex development efforts. In all, it was quite a successful adventure [rice.edu] and we'll probably do something similar in the future.
Re:Version control: your greatest bacon-saving dev (Score:2)
Re:grading by source (Score:2)
you might need this too.. (Score:1)
Source checking (Score:2)
I don't know about everyone else, but the instructors that I've had for programming will read through the code first before compiling and running it.
There's 3 reasons for this. 1. To make sure you followed coding standards. 2. To make sure you weren't doing something destructive. 3. To make sure you were actually using the programming constructs that the instructor wanted you to.
To expand on 3, for simple programs like you run into in an Introduction class, it's possible to do a recursion assignment
Re:Source checking (Score:2)
As I already mentioned, a good sandbox (OS or VM level) should handle the security aspects.
The real reason to read the code is that
UC Berkeley Does It (Score:3, Informative)
Tufts University, provide (Score:1)
Well, you could always ask other proffessors... (Score:2, Informative)
Don't know if it's of any help but you might try contacting a Dr. Sun [calstatela.edu] since he was the advisor.
It doesn't automatically grade the homeword, but it does let you set time limits and since it uploads directly to the server, you won't have to deal with students saying they got the wrong email address.
The system, currently, is only for homework and old code retrival but many other things are planned for it.
How about... (Score:1)
TRY (Score:2, Informative)
Automarking/Manual and the big negative (Score:2, Informative)
I am also a TA for an introductory course to JAVA. I am not sure how many others here are but I have found auto-marking to be essential. I am a single TA and I have 180 students. Each assignment has 3-4 substantial programs. Trying to mark them all by hand would be impossible given time limitations. I do have to agree with others though in that feedback is always nice. Therefore what I have done is I mark half of each assignment and the other half is automarked. I have automarking compare output given inpu
UTexas TA here: do it. (Score:2)
When the program was submitted, it was compiled and trivially rejected if it failed to compile. This is worth the price of admission right here, since people whose code "compiles on their machine" get multiple chances to recognize the error of their ways. (Some people think students should get points taken off for this; that's a philisophical discussion I won't g
Why are you asking? (Score:1)
Check out the Stanford CS106a program (Score:3, Informative)
The TAing program became so famous that Silicon Valley companies would recruit people that had been TAs and pay big bucks for someone that had been head TA.
7 points on why this is not such a great idea (Score:2, Insightful)
2) Studying code from other people is yes time consuming, but very valuable for you as a student. You will see patterns of sol
Automated Testing/scaffolding vs Automated Grading (Score:2)
Second is automated testing. This is good for when you can test for the program working in general and also for specific errors you anticipate. However, this automated testing should NOT just be plugged in as a grade. Instead, a thorough review of the code should be performed. Not only does this help provide better feedback, but it helps you to spot cheating. Finally,
Purdue (Score:1)
TA Suggestions (Score:2)
Use CVS or other version-control system. Set it up so that each student gets their own module, and each student has access _only_ to their module [if individual assignments -- group assignments should naturally be set up for group access]. Then you can obtain and compile the code by performing a checkout rather than the student running a turnin program.
Teach 'em how to use Make or Ant. Specify the directory structure and the name of the build-control file. This lets you automate the "checkout, compile,
Automarkers (Score:2)
First semester the automarker wouldn't accept unless the output was character perfect!
Took off a mark each attempt too!
Spending more time making sure . _ and