#StopUsingTAsForSlaveLabor
Explore tagged Tumblr posts
Text
Computer Science departments need to actually teach how to i teract with Linux.
I’ve been a part of the computer science programs at three major universities in the 2010s, and none of them have taught students how to interact with Linux before they force the students to work with Linux. All three departments have just run Linux on their grading servers and encouraged or mandated that students use Code::blocks in the default config on their personal machines to write code, and then those same students wonder and sweat about why their program from Code::blocks works perfectly on their laptop and then segfaults out on the grading machine.
Dear CS departments, please at least teach students how to at least pull your g++/gcc config down from your Linux machines, so they can set their own environments up accordingly. Otherwise, these students are just out here submitting entire projects that they haven’t compiled once in the actual testing environment. If I did that at work and then posted that PR to the git, our team lead would fight me in the parking lot.
Having seen the departmental grading server systems for CS at Baylor, UNT, and UTDallas, I can say that Baylor had the best system for student submissions that I’ve seen yet; it was a submission web client that the students submitted their files to, the system compiled it on a Linux box, then the console output was returned to the student. Great for testing, and highly accessible, and intro-level students weren’t trying to learn how to decode poorly-formatted error messages from gcc 97while they were using g++ 14.
UTD’s was the one I didn’t use as a student, but it was obviously set up for efficiency, due to their massive undergraduate engineering population. It was also automated, but with some grad student work in the background, parsing code and providing comments for the ones that wouldn’t compile.
UNT’s system is the worst I’ve seen, by far. Student projects are zipped and submitted on Canvas (!!!) as a .zip, whereupon the grad student TAs for that class pull down the file, unzip it, drag and drop it onto the system via either Putty or MobaXterm, and then try to run it off the student’s instructions in their README. If the students want to do testing beforehand, they have to connect to a single port (!!!) on a departmental server through Winscp, PuTTy, or MbXtm, and then try to g++ compile through there. This is a cluster from A to Z.
1. WHY ARE YOU TEACHING STUDENTS ROTE COMMAND USAGE? Almost none of the 108 students in the class understand what “g++ -std=c++11 *.cpp” actually DOES. Teach them that on the first day of class, it’s not hard. It’s an intro to super-basic regex, what g++ is, and what a flag/switch is. They’ll have to learn that eventually, so please just teach it to them early.
2. Submitting a .zip of program files through Canvas, then having grad students unzip those and then copy and paste the student’s runline from the README. Why not just automate it to always run on c++14? You obviously already have it installed, and nothing from 11 won’t run in 14. It’s nuts. Also, why all the manual labor? A couple of bash scripts will let them run the output for whole lists of projects, why not just put that on a front-end of a super basic web client that’s attached to the departmental site? Have the student login, upload their files, and hit “run”. It’ll just run the g++ on *.cpp for that directory behind the scenes and redirect console output to the student’s port, so it’ll output to the student’s window.
And also, why does the system take a full 30 seconds to compile a single .main “hello world”? Is this 1986? Do you have your beleagured TA’s running around being the scenes with punch cards, feeding the ENIAC you keep in the basement?
2 notes
·
View notes