Slashdot Mirror


Are Written Computer Science Exams a Fair Measure?

me! asks: "I seem to have this inability to write substantial chunks of code (500+) in exam conditions (for uni). I have been writing code for years for open source and commercial applications, so I know a thing or two. There is just something about exams and code that does not work for me. I find that I need to be sitting in front of a computer to get a problem out, to get in the 'vibe', have you will. I have done exams on computers (closed environment) that involve coding, and it work so much better for me. So what I am asking is...how do people tackle exams that involve solving problems on the fly, on paper, in exams?" I have this exact same problem, and I've never thought written tests were a fair way to measure someone's knowledge of coding. It's fine when you are asking questions about design and structure, but when you need to write code it falls way short. How do you feel about it?

11 of 695 comments (clear)

  1. Re:simple by The+Kow · · Score: 4, Interesting

    Yeah, that works really well in the current job market. I dare you to try to find a job right now with what you had on your resume when you first got into the industry.

    --
    Moo
  2. Hate it! by Tadrith · · Score: 5, Interesting

    I personally hate it when they require programmers to write code on an exam. Every programmer knows that part of programming is debugging, and it's very difficult for many people to get chunks of code correct the first time. I can see, perhaps, requiring a small snippet of code, but large chunks are difficult to deal with in writing.

    Due to complexity, programs simply cannot be written 100% perfect the first time around. Not only that, programming is very individual and specific to the programmer. Just because one person writes something one way, and the other writes it another way, doesn't mean either of them are wrong or right.

    Written exams should be limited to syntax and concepts, to see how well you know the language. If you want to test a programmer's skills as a programmer, you should at least allow them to excercise their debugging skills...

  3. Hopefully the prof will cut you some slack by CodeMonky · · Score: 3, Interesting

    Hopefully the instructor will realize that everyone drops a ; occasioanlly (however forgetting ; altogether is something else), or misspells a variable. I think that as far as written tests go they should be more based on making sure you understand how the concept works and not so much on not forgetting a ;. Questions like are better suited for questions like "What is wrong with these 4 lines of code" imo.

    --
    --"Karma is justice without the satisfaction"
  4. Written exams are fine... by cperciva · · Score: 5, Interesting

    Written exams are fine for computer science; Coding exams are dumb.

    Remember, computer science is about methods and algorithms, not about learning syntax. If you forget a semicolon when you're writing a program, you'll remember about it as soon as you try to compile it; if you code a bubblesort where a quicksort would be more appropriate, you're going to be stuck with a slow program until someone more clued fixes it.

  5. Exams by lrichardson · · Score: 3, Interesting
    The exam SHOULD be testing your grasp of concepts, not the ability to write large programs on papaer.

    That said, I remember one of my worst exams ... Pascal. Got the paper back with a mark around 30% ... which, after talking to the Prof, jumped to a 90 ... since the damn markers didn't actually know what routines were on the system, and my code used them extensively.

    Like an english paper, marks should be given primarily for content, with spelling (and grammar) subtracting from that slightly.

    The best advice is to do a question in three steps:

    1/Shetch out the flow of what you want to do.

    2/ Write the code, and

    3/ At the end of the exam (assuming you have the time), go back over each answer checking the spelling

  6. Definitely not fair! by BlindSpot · · Score: 3, Interesting

    Yes! I'm glad somebody finally brought this up.

    Paper is just plainly the wrong medium for CS exams that involve programming. That became plainly obvious in my first CS exam and only got worse.

    CS students should be tested on computers in at least a simulated development environment. (Controls would of course be needed to prevent cheating). Reference manuals should also be allowed as using them is a vital part of being a programmer. Forcing students to remember the parameters to fopen() or whatever is just pathetic.

    If athletes were tested like computer programmers, the teams would be made up of those who could write the best description of how to play the sport, not of those who could actually play it the best. The worst part is that the intersection of those two groups is probably not very large, especially in CS, so I think some truly good programmers are being punished.

    In first year CS our prof once asked us how to make the course better and I suggested the exams be held on computer. She was actually quite receptive to the idea, but as we both knew it was impractical. Computers cost $$$ and take up extra space, and testing 400 or more students on computers is just too ugly.

    However, we are getting to the point where it's starting to become a lot more feasible, so I dearly hope educational institutions will start to upgrade their evaluation methods.

    In the meantime, I hope instructors treat handwritten code more like a sketch than a masterpiece. We were lucky that the profs here didn't worry too much about syntax in handwritten code and instead looked for understanding of what we were doing. If we were a bit off on the syntax that was okay as long as we had the concepts down well. But we still did have to memorize a lot of stuff that was quite unnecessary and that's just Wrong.

  7. One more thing I'd like to add... by Kashif+Shaikh · · Score: 5, Interesting

    I've already finished my CS degree and one thing I like is writing code on an exam makes me happy. I mean of all the other exams I have to write with various degrees of memorization, writing code is *thinking*. So it means for me, less memorization bullshit.

    Also another thing I would like to say: many would like online exams almost exclusively. But they are missing one crucial point: TAs and Profs mark such tests in "black & white", meaning if it compiles and passes the test cases you get most of your marks.

    But if your program doesn't even compile, your mark starts at 0. And depending on the mercy of the marker, they *may* go back and look at your code and give you a mark here and there.

    In such tense situations, I've seen people literally cry 'cause a) the program was too hard and b) they can't get it to compile. Where you literally get in a hack-peck/compile frenzy to get your program to spit out some correct output before the test is over.

    In such tests we usually have 9 questions and gotta do about 6 of them. And the worst thing: they issue such online tests during the first year, where many are having their first crack at programming. Thank god, I was able to do the questions, but alas some individuals who struggled couldn't.

    At least if the test was written you could get the core logic of the program done and you'll get most of the marks anyway.

    But, I did enjoy online tests they were fun. The positive of such tests: if it compiles and spits out the correct output you've got 90% of your mark if not 100%.

    Oh boy....talked too much...

  8. Re:ABSOLUTE BULLSHIT!!! by CaseyB · · Score: 3, Interesting
    The problem and the object model created to define it will provide the solution. That's the ONLY way to code it.

    You think that programming is a completely deterministic process? That there is only one way to model a given problem? You're the moron.

    Write code so the machine will NEVER do ANYTHING it doesn't need to.

    That means NEVER EVER use ANYTHING but hand written assembly language, that uses every shortcut in the book. It is assumed that maintainability has ZERO priority.

    Cache every execution result that you will need again. RAM is cheap.

    It is assumed that you have an infinite amount of RAM. Google should optimize by storing both the page cache and the HTML output of every single query ever executed in RAM, in case the exact query is repeated twice.

    But RAM is not so cheap that you need to waste money and time filling it unnecessarily. Only cache what you absolutely need again.

    Wait, what I just said, do the exact opposite.

    I loathe moron who keep saying that software development is an individual's preference.

    It's not all individual preference. But your attitude that there is only one way to solve any given problem, and that optimization is always the only priority, is equal bullshit. And your posturing and ranting bespeaks a religious zeal that kills development teams in their tracks. You'd be off any team of mine in a matter of days.

  9. May not be fair but helpful. by jellomizer · · Score: 3, Interesting

    Is there any type of CS Testing that is fair. Me personally will do better on the coding questions then on True False statements because I personally over read the answer and I miss enterprit the queston and put the wrong answer. But the trick for coding questions is to read the question. Make Psuto Code then convert it to the language that the class is teaching with. The problem I find with a lot of CS Students they enter the degree with the mind set that sience they can program and make advanced programs they assume that they are good at it. While they may be able to make it work it may not be the best algorithem. I get this from the parent post because 500+ lines for a test is way to much. I would think it may be 60 lines or so. And you havent studied the algorithm that they wanted to teach you.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  10. The best professor I ever had by eples · · Score: 3, Interesting


    The best professor I ever had could do everything in his head, hundreds of lines of code. He knew exactly how the compiler would react to anything.

    He didn't just teach us the syntax and the languages, he taught us how to do *that*, and *that*, to me, is a f-ing awesome skill.
    Dr. Caviness. We used to joke about him being the "human compiler". He ruled.

    --
    I'm a 2000 man.
  11. Re:Learn this skill by e40 · · Score: 3, Interesting

    I've worked for almost 20 years under tight deadlines. Stress is the enemy of getting a good job done, not the friend. The smart programmer will learn how to work in a fast paced environment while not being stressed.

    If you have, in fact, experienced this type of environment and lived with the stress, I feel sorry for you. You've missed the entire point.