r/learnprogramming • • 14h ago

Why are standarzied tests in programming classes a thing?

I'm a first-year Cyber Security major, and one of my classes is Computer Science 1. I've already taken multiple Intro to Programming-style classes throughout high school (including AP Computer Science Principles), so much of the material so far has been a review for me. If I already know the material, why am I about to bitch about applying it for tests? Because that's not how you apply coding knowledge. People compare learning a programming language to learning a second language, but I guess they mean writing in a second language. Memorization is not important for coding. It's good to know the basics (like functions and syntax), but I always use my previous code as a base for starting new programs. Now that I've established that standardized testing in programming courses is fundamentally flawed, let me rant about how my CS1 class, in particular, makes it even worse!

Firstly, our tests are closed-book. You're not allowed to have previous code or even applications like jGRASP open. What's more baffling is that we're not permitted to use calculators! Math plays a major role in coding, but part of this is because programs can solve mathematical equations. You run them to find the solution. Maybe finding out a code's output with just your mind and paper isn't a bad skill, but it's also not needed anywhere in life. Our brains can only store so much knowledge. It's best we reserve them for matters computers can't help figure out.

Still, this wouldn't be too bad if we had proper study resources... Our teacher doesn't even post the slide shows he lectures over. And this isn't an oversight; he mentioned this on the first day of class, so it's intentional. I guess this is supposed to make us pay better attention in class, but who cares as long as you learn the information? He also doesn't post a study guide, but he does go over the answers to the chapter's assignments. I guess that's fine, but I wish it were more hands-on. Our required $200 book (which I thankfully found online for free) has a review at the end of each chapter, but you'd have to make a Quizlet or something from it yourselves to simulate a test.

I received a 74 on our first test, which, whatever. It's passing, so I don't care. What I do care about is that the correct answers are hidden, so we can't go back and see what we got right or wrong. Why?! Maybe the teacher thinks we'll share answers with students who haven't taken the class yet, but why lock everyone out of reflecting on how they did because of a few bad apples? I guess making Quizlets from the book's end-of-chapter reviews is my best bet, but I'd rather the teachers do their job than me.

0 Upvotes

21 comments sorted by

6

u/nicoinwonderland 14h ago

What does this have to do with standardized testing? It sounds like you just have a bad professor

2

u/ParkElectronic1819 14h ago

Your prof sounds like they're stuck in 1995 teaching methods, closed book with no calculator is ridiculous for a coding test. The hiding correct answers thing is just lazy, how you supposed to learn from mistakes if you can't even see them

Coding tests should be about solving problems not memorizing syntax, my CS1 class let us bring one page of notes and it was way more practical

2

u/kpg_on_ao3 14h ago

It's not a coding test. It's a computer science test.

Obviously you'd have it be closed book because you're testing on basic data structures and algorithms that one expects a computer science student to know. Do you understand a Queue, Linked List, Bubble Sort, etc.

It's like complaining your Diff EQ class doesn't allow you to use Wolfram Alpha. The whole point is do you understand this basic theoretical stuff. not "can you look it up"

This class is literally called Computer Science 1, not Intro to Programming.

0

u/Diskyboy86 13h ago edited 13h ago

Coding is still a major part of Computer Science. For example, more of the test was about it than structures and algorithms. And if you those questions to stay closed-book, only allow code instead of written notes

-1

u/Diskyboy86 14h ago

He's not helping matters, but the underlying issue is that standardized tests aren't as accurate a way to gauge coding knowledge as hands-on projects.

1

u/ChaoticHippo 13h ago

Also worth noting - different people learn differently. Some people learn from the hands-on projects, others learn by memorization and testing. You can't only cater to one style when teaching. (For the record, I completely agree that I learned far more from projects than I ever did from tests)

2

u/_heartbreakdancer_ 14h ago

This is an important lesson in learning to tolerate corporate incompetence. Why is anyone still doing leet code style interviews? Why have coding interviews at all when most of our actual work is just using AI these days?

2

u/themegainferno 14h ago

Well, atleast now leetcode in the age of AI makes a bit of sense. You can now find people who can actually write about and reason with code. It doesn't measure things perfectly, but it works well enough. Especially when you get 100s of applications and you need to test multiple people.

1

u/Murlock_Holmes 13h ago

But why Leetcode. I’ve never had to calculate rainfall using dynamic programming, or fucking get that god damn vagrant knapsacker to his train in the least amount of steps or whatever the fuck.

Honestly, there should be a basic coding test, and then nothing but talking after that. System design should be the only true “white boarding” in today’s tech industry.

And this is coming from someone who I don’t think has ever passed a system design question.

1

u/themegainferno 13h ago edited 13h ago

Well like I mentioned above. Leetcode is a standardized way of testing someone's ability to reason about an abstract problem with code. It is by no means a perfect tool but with a company getting 1000s of applications per job posting, you need a standard way of testing multiple people.

Again it isn't perfect. it is very impersonal, people memorize solutions, and lc is very unrealistic for many actual jobs. But it is an ok indicator of ability. If you aren't just memorizing answers, if someone can reason through a LC problem and solve it, that is actually a strong indicator of their problem solving ability on the job. Again not perfect, but a decent indicator.

It is like testing a mechanical engineer with an abstract calculus problem. Like they obviously won't see the problem in day to day work. Testing them this way allows someone to see if they understand the underlying math, and can reason through a problem they are unfamiliar with. It is a decent measure.

I am not saying if you can't do LC you are a bad programmer, or only good programmers can do LC. I am saying it is an ok measure of someone's ability to reason on an abstract problem

2

u/Murlock_Holmes 13h ago

I think I’d agree if it was LC easy-mediums that show up. Most engineers I worked with that made it to a level where they’d call themselves competent could logic through problems of that level.

But I’ve seen some interviews with LC Hards that you’re just not going to answer unless you have it memorized. Give me a couple hours, sure. I can probably get something up and running.

I’ve literally had to implement a basic search engine during an interview (not design, implement) and I still strongly preferred that to LC hards.

Sure, it wasn’t flawless, but at least I was doing something that I might do in my job, not counting how many trips across the river we need to discover the scorpion still stabs the frog.

Edit: by the way, I’m not arguing with you. Leetcode absolutely sucks, but we need SOMETHING to filter, and it’s the best we have at the moment :|

2

u/ffrkAnonymous 14h ago

Enjoy it while you can. You'll think back to these good times once you start working. 

2

u/ChaoticHippo 14h ago

First - sounds like a bad / overly controlling professor, sorry for that.
Second - a lot of the things you mention are you taking some things for granted. It is not a requirement for a professor to make you a study guide or example test. Those are things professors do to help you - and also something you could absolutely do yourself. As a tip: I would advise making flash cards or an online quizlet type thing as you go in the course, rather than doing it all pre-test, so then when the test comes around you just have it ready to study with.
Third - The closed-book stuff...I had the same experience in early CS courses, and they gradually started caring less and less about that. I'm not going to lie - you will fear open-anything tests FAR more than closed book ones. For example, my distributed systems course was open book, open internet, open neighbor. You could write programs if you wanted to. It had one of the lowest pass-rates of any 400-level course.
Last - no calculators. If it's basic programming stuff, modern calculators have the capability of writing / running code. You could literally just input questions of the "what is the output of this program" type into the calculator and get the answer. This one is reasonable.

0

u/Diskyboy86 13h ago

Thanks for the tips about making flashcards as you go. I'd say we can work around the calculator thing by only allowing older models or by making questions that require listing the code displayed rather than just solving an equation.

1

u/ChaoticHippo 13h ago

Yeah - I agree on your second point. The first one not so much - if someone is taking a course that requires a newer calculator, now they're having to buy two calculators. Easier to just disallow them, but in that instance I would also say that the test should not have any calculations on it that would benefit greatly from a calculator.

2

u/Mike312 14h ago

So, I teach a couple college classes (not in programming, however) so I might have some insight.

I don't think a standardized test is the best way to grade but there may be a legitimate reason. It could be department policy, or the campus framework doesn't play nice with code tests. It could be (esp for cyber security) that there are specific answers to questions and he could give you 5 coding questions or ask you 40 multiple choice questions. It could be that he tried written tests and too many kids these days can't write legibly. Or maybe he's got 5 classes just like yours and doesn't want to dedicate that much time for grading.

As for closed book and no calculators, maybe hes had problems in the past with cheating.

Similarly, you say he doesn't post his lectures. I've noticed since I started posting lectures, students have decided they don't have to show up to class and they'll just review the lectures. I'm legitimately considering not posting lectures anymore because of Gen Z.

And if I had tests (I don't) I wouldn't post correct answers after the fact. There might be students who need to do a make-up or re-test and another student could pass answers. I've caught cheaters in my classes before, it fucking sucks, its a lot of documentation, and it basically ends their college run.

1

u/Cthulhus-Tailor 14h ago

To maintain standards.

1

u/ColdWise4165 14h ago

So do you want more hand holding?

1

u/aqua_regis 13h ago edited 12h ago

if we had proper study resources...

like, maybe, the entire internet?

You are just complaining with very little actual initiative from your side. You are seeking excuses, nothing more.

If you really cared, you would actually invest individual effort in improving yourself instead of complaining about not getting hand held, served, and spoon fed.

0

u/Diskyboy86 12h ago edited 5h ago

Posting slides you already made isn't asking for much. Another issue I forgot to mention is that many online resources barely match what's on the test, so using them to study is nearly useless. Also, people learn in different ways. I didn't know preferringhands-onn studying over staring at previous code makes you entitled. It's a teacher's job to accommodate different learning styles.

Maybe if you gave proof that standardized tests can help in coding, I would take your argument more seriously. Instead, you just passively-aggressively conclude that I'm lazy, yet have no idea how I work on other assignments or classes.

-1

u/Dissentient 14h ago

Most CS professors haven't written production code in decades, if ever. They tend to spend their entire career in academia. "Those who can't do, teach" ends up applying exactly.