This is an opinion piece. The views expressed in this article are those of the author alone and are not a reflection of Ping! as a whole.
First things first, Shashwat has put a tremendous amount of effort into his article. We all know there have been many problems with how the course(s) (C-Pro and Data Structures) work, and stepping up to point them out is worth immense appreciation. The article is also nicely written and interesting to read, and I agree with many things mentioned in it while disagreeing with some. It was essential to take action, and that’s what Shashwat has brought into the light.
I write this article as someone who was the head TA for the DSA course last semester during his third year as a CSE student here. I developed my interest in competitive programming in my first semester in college and have been practising it as a college life goal.
This article is a personal criticism of the Ping! article “The OJ Conundrum” published in its August release.
General Criticism of the Article
The article missed some significant points, and primarily talked about issues faced this year that were not present during previous iterations of the course. But the article went on to make the reader believe that the problems were ever-present with the course. So a reader should be made aware that some of those things only happened this year, and are not general issues with the system.
1. There was a new professor: The course was being taken by Prof Lini Thomas earlier, and this was the first time that the new professor was taking the course.
2. Due to the Covid-19 pandemic, almost 30-40% of the course DSA was online and resulted in major emergency changes spawning many of the issues, and the article never acknowledges this fact.
3. The problems aren’t specific to this course: Many things mentioned in the article are pointed out as problems with this course, but instead, they are present in almost every course of IIIT.
4. Methodological issues: Also, the data presented using forms is based on only 35-45% of the batch in the CPRO course and barely 25% of the batch in DSA. We can get some idea from it, but it is well known that people who have problems with the system tend to vote more than the people who don’t, which could be why numbers worsened from CPRO to DSA. This low number of entries can be misleading. In short, the data is not reliable.
5. One of the biggest issues I have with this article is how it assumes how TAs work/worked! And how it makes you think that TAs who are pro-CP are the problem. I can’t talk for everyone, but I am very pro-CP, and I was very aware of what difficulty problems we should give, and how this is not a Codeforces contest but a CPRO or DSA course. I think people who are good at CP can have more knowledge on how to analyze the difficulty of problems and what level of difficulty should be given to people at the early stage of learning. The most challenging question I set was how people had to implement tries, a data structure not taught in labs (only due to COVID). All the problems I gave were logic wise and very easy. Moreover, the problems like ‘Alien dp’ and ‘The tree dp problem’ were given by people who barely do CP regularly. I think the article’s assumptions about the TAs of the course are, in plain words, awful.
Responding to each section
Now, I’ll just do a topic by topic analysis of the article as I read through it.
2.1 Course motivation and 2.2 Course goals
Well, Section 2.1, when read as the general public’s motivation for taking the course just adds on to the stereotype. In fact, in DSA, they cover other things that aren’t really required for interns. Many people don’t do it for internships, and the core fundamentals might be a top priority instead, which is not mentioned anywhere in Course goals (Section 2.2). But the first paragraph establishes, aka “assumes”, this as a fact.
Looking closely at the disadvantages listed,
“Binary grading and subtasks”
In my opinion, it isn’t wrong to motivate people to write perfectly working code. The OJ mechanism is ahead of other courses in the sense that it allows you to submit until your code is flawless and ensures you don’t lose marks during evaluations for what you can fix with a little more thought. Even if you fail to clear all the test cases, you don’t lose much considering each problem has a weightage of only around 1.25%, which is a decent penalty considering you’re given the opportunity to correct it.
Also regarding subtasks, lab exams have always had subtasks and were introduced in last assignments too because the TAs realised this disadvantage during the course itself.
“No feedback on coding practices, approach, possibilities of making the code easier.”
There are 3 hours of lab sessions every week where
- Assignment-like problems are given, and students are asked to code (and most of the time, submit on an OJ) during the lab itself.
- Two TAs are present and actively discuss approaches, what students are thinking, and how to improve their current logic. I even pointed out on code improvements if I found them during lab hours on a personal level.
Hence, if X part of a course isn’t teaching you Y, it doesn’t mean the Y aspect of learning is absolutely ignored, it may have been covered elsewhere.
“No way to check if the student actually understands the code submitted and how much help was taken.”
This problem is fundamentally much bigger and is shared by almost every course. Plagiarism is rife in most courses. And efficient plagiarism detection in itself is a big challenge. It is omnipresent and comes down to the honesty of every individual. Removing such assignments or largely reducing the difficulty will reduce plagiarism, but be unfair to people who actually want to learn.
“It clearly shows how people who only do CP being TAs are a harmful phenomenon“
Only 3/15 TAs did CP as a life goal. There were other TAs who are insanely good at different things.
And, as stated in point 5 of my introduction, it is very wrong to assume that pro-CP TAs are unsuitable, let alone “harmful”, as they are able to understand the core concepts of problems the best..
3.3.1 Why Hard-core CP?!
“The percentage of people who found prerequisite coverage less than sufficient.”
I think this situation exists in other courses with coding assignments too. And sometimes even several times more than what happened in OJ. A course like SSAD (DASS) makes you learn a programming language on your own, and then you have to design software for a client with little to no help.
Learning on our own is not the problem. The difficulty of the concept we are asked to learn is. And again, reducing difficulty will solve this problem too. We already cover all relevant data structures in the course, and it’s not expected to learn any other on your own, just some standard tricks, and I agree that anything more than that should not be there.
Also, this was worse this year due to COVID. We could not take labs after quarantine (making it harder to give feedback and teach the prerequisites), and some things asked in assignments weren’t appropriately taught, but asked to learn from the given Youtube tutorials (like tries).
3.3.2 Alternative perspectives
Once again, I’ll bring up the fact that only 74 people voted in the DSA form. That’s just 25.2% of the people who took the course. It is a strong possibility that more percentage of the people who were vexed with the system, voted. Maybe that’s why ‘OJ has discouraged me from problem-solving’ % has increased. Sorry, but the data is insufficient, and one can’t draw conclusions from these results.
“On similar lines, an interesting perspective is that of Lateral Entry students. They don’t have to go through the ‘OJ grind’, yet they don’t face any coursework and hiring disadvantages. “
Lateral entry students are arguably some of the best students from their respective colleges, and it isn’t ideal for drawing a comparison between them and already existing students. It would be more logical to compare them with the brightest people who went through the ‘OJ grind’. Moreover, the term ‘grind’ has an implied negative connotation that does not exist. Most courses with coding assignments require you to put in a lot of effort to get the code to work, and others like OS and DASS sometimes even a lot more. Compared to them, OJ often requires less coding and more logical thinking.
3.4.1 How excessive collaboration leads to more challenging problems
Valid point. Reducing the difficulty will, in turn, reduce forced plagiarism.
3.4.3 Need: Being robust to plagiarism
“Alas, students were not informed of this till before the very last OJ.”
This used to happen every year until the last. It was a well-intentioned move motivated by a feeling that announcing it in advance would make students less likely to try the five harder problems. I agree in retrospect that it shouldn’t have been done and that students should have been made aware of the 30/35 rule way in advance.
“The only way it benefits the students, in my opinion, is that they now know who to ask for solutions”
While the author makes a fair point about the leaderboard promoting unnecessary competition and aiding plagiarism, I believe the system has some redeeming aspects that he has failed to mention.
It often motivates people to keep working, especially when looking at submissions of peers with similar thinking abilities getting accepted. No system is black or white, and we may be able to soften the negative aspects of its competitive nature by reducing the difficulty, and consequently the gap between a beginner and someone with two years of prior experience in CP.
Most of the students who come through JEE must have had multiple exams in a month with their ‘leaderboards’ posted on their coaching institute walls. This is everywhere and again is a fundamental aspect of the education system and is widely studied and debated under the topic “Gamification of education system”.
4.2 TA and Jerry
I agree that the mails were wrong and a tad too harsh, but it is commonly known that it was mostly one or two TAs who were involved.
The course structure indeed makes it more probable that a sadistic TA slips in some very hard questions, and should be checked by the prof. Great point.
However, I’d like to reinforce once again that that one person isn’t necessarily a seasoned competitive programmer, and it is possible that they themselves couldn’t solve the problem.
5. Author’s Take: Some possible Solutions
1: Releasing official editorials with hints, solutions, well-written codes and proofs should be a bare minimum requirement. Additionally, the problems should be kept open for submissions later.
I’ll return to point one at the end to elaborate on why this isn’t regular
8: A more diverse (in terms of intellectual interests) set of teaching assistants should be selected.
It was diverse. Only (3 or 4) out of 15 were hardcore CP people.
8: Based on my sources, this is easier said than done as applicants for TAship are mainly students interested in CP
This year no one of the TAs who applied are core CP people.
All in all, I agree with :
- Regular editorials (5.1)
- More lab assessments (5.2)
- Temporal Moss and being strict with plagiarism from day 1. (5.6)
- Adding subtasks (5.7)
- Easier difficulty and tighter checks on problem sets
Now some general Responses:
- More challenging problems, harder observations, and advanced CP tricks should be removed or minimized. I completely agree with that. In fact, I asked everyone to give easier problems. Even though I did hardcore CP in my college life, I always gave the easiest questions and advocated towards easier OJs because I knew we are not promoting CP.
- I think the problem mentioned in the article that prof takes very little interest in the assignments is a significant cause of this. There is no one to regulate the difficulty of problems set by each TA, and some TAs can go on and put things like ‘Alien dp problem,’ which can be disastrous for students taking the course.
- ‘THE’ emails sent should have been seen by the profs, and they should have taken some action afterwards.
- Another cause of some of the article’s problems is the amount of time this course demands from a TA on average than other classes. On average, a quarter TA is expected to spend 5 hours every week for a course. But in general, it’s probably around 6 hours for a CPRO TA and much less than 5 hours for most of the courses. Even worse if you are a head TA. Hence things like editorials (mentioned in 4.2), creative real-world problems (section 5.5), testing vigorously (section 5.9) couldn’t get implemented even if we wanted. The amount of time is why the head TAs couldn’t personally read and verify the difficulty of every problem.
I think the biggest issue is the difficulty level of the questions, and that should be eased. More challenging problems should (it’s also important) be given for bonus marks. And there should be some checks on the problem set by the prof which were completely absent this year primarily due to the new prof.
OJ is a brilliant method to help students learn C-programming and practice the Data structures and Algorithms required in various fields of computer science. It also helps them develop their general problem-solving ability. The influence of competitive programming should be reduced but should exist to some extent. OJ, and the amount of core C programming practice it makes one do, is, I think, what is unique about IIIT-H’s first year and if implemented nicely will only go on to give tremendous short and long term benefits to the budding computer science engineers.
Now I’ll sign off with a quote from my brother (former computer science student from IIT/ISM Dhanbad) who kept repeating this throughout my first year: “I wish we also had OJ.”
A big thanks to Gaurang Tandon and Arjun P for refining some of my views, all the programming club admins, the Ping! team for providing visibility to my views and Sharadha Iyer for fixing my Inglis.
Author: Arnav Juneja
Editor: Zubair Abid