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?

695 comments

  1. simple by Anonymous Coward · · Score: 0, Funny

    do what i did.. drop out of college.. become a "go getter" get a good job like me ($300000+ w/ a ton of benefits) and be happy :-)

    college is overrated.. you'll realize sooner or later

    1. Re:simple by Anonymous Coward · · Score: 0

      i realized it sooner, i dropped out of highschool

    2. 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
    3. Re:simple by Anonymous Coward · · Score: 0

      apparently you can't read.. i am CURRENTLY employed.. and not to mention.. i won't be losing this job anytime soon..

    4. Re:simple by Anonymous Coward · · Score: 0

      or perhaps school is what makes you happy, so you stay in school. some people feel that there is more to life than "$300000+ w/ a ton of benefits", but I am sure your wife is proud.

    5. Re:simple by Anonymous Coward · · Score: 0

      Sounds like an ATDer. Lucky bastard!

    6. Re:simple by Anonymous Coward · · Score: 0

      ya, an i droped out of grade skool an i dooin jus grate :)

    7. Re:simple by Anonymous Coward · · Score: 1, Funny

      Why is CmdrTaco posting anonymously now?!

    8. Re:simple by Anonymous Coward · · Score: 0

      wife?! please.. i'll be frank.. i'm still your typical doof.. who goes home.. sits in his apartment playing Jedi Knight 2.. go figure..

      btw, who needs women.. they're too bitchy and crabby :-\

    9. Re:simple by Anonymous Coward · · Score: 3, Insightful

      The greatest thing about college for me was NOT the CS, Engineering, and math courses that eventually got me the job I now enjoy...

      It was the total mind-opening academic scene that surrounded me 24/7 for 5 years, the chance to really go out and party my brains out to relieve the stress, the hour long conversations with professors who are true geinuses in every sence of the word.

      You might get paid a lot of money, but if you see college as simply a means to that end, I strongly suggest you take a year off and attend full time. Because you certainly do not get the point.

      And, through so many experiences, I learned that your final career and salary doesn't define you, your worth, or how much you can get out of life.

      but congrats on your job, though. Pretty sweet deal.

    10. Re:simple by Anonymous Coward · · Score: 0

      Wipe the jizz from your eyes and read, the poster said "find a job right now with what you had on your resume when you first got into the industry."

      Damn dolts like you are an extremely annoying waste of space.

    11. Re:simple by Anonymous Coward · · Score: 1, Interesting

      i agree with you.. but what really ticked me off about college.. were the core requirements.. i mean.. please.. i hated sociology.. it was a waste of my time and a waste of a seat in that class.. someone else should've taken it.. but i was stuck unfortunately.. that was my last semester.. then i dropped out.. one professor in particular (my intro to cs professor) was a really cool guy actually.. we still keep in touch, sort of.. but in any case.. the environments great.. the core requirements suck..

    12. Re:simple by Anonymous Coward · · Score: 1

      well.. i don't need to "find a job right now with what i had on my resume when i first got into the industry" because you don't realize.. there is still opportunity in the "industry".. have faith in yourself and listen to Napoleon Hill motivation tapes.. helped me a lot :-\

    13. Re:simple by Anonymous Coward · · Score: 1, Insightful

      DUDE!!!!!

      sociology, and all those core classes totally sucked but those were the ONLY classes that i took that ever had hot chicks...

    14. Re:simple by Anonymous Coward · · Score: 0

      ATDer?

    15. Re:simple by Anonymous Coward · · Score: 0

      Word.. I haven't seen a hot chick since my freshman year taking those classes.

    16. Re:simple by Anonymous Coward · · Score: 0

      i looking for the employment this time also. the napolene tape tell how? I can by them on the amazon.com? they have the tapes withthe aduio that i can from the saying your?

    17. Re:simple by xtremex · · Score: 1

      Then you have met the wrong women.....

      --
      If you're not a Liberal in your 20's, then you have no heart.If you're still a Liberal in your 30's you have no brain.
    18. Re:simple by larry+bagina · · Score: 1
      btw, who needs women.. they're too bitchy and crabby :-\

      nobody ever got crabs from a blowjob. Unless the blower had a big bushy beard....

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    19. Re:simple by Anonymous Coward · · Score: 0

      Sounds like a good plan -- I may look into it. So, um, you work where exactly? And do what?

    20. Re:simple by Anonymous Coward · · Score: 0

      No, just download the mp3s.

    21. Re:simple by Anonymous Coward · · Score: 1, Insightful

      Step 1: Drop out of college
      Step 2: ???
      Step 3: Profit!!!

    22. Re:simple by Anonymous Coward · · Score: 0

      can i just say something?
      im an AI major at a big university here and i am having a problem entirely with the teaching practise

      i have actually just mailed them and said that it seems 'dysfunctional' to me

      considering they're teaching cognitive science this should be a problem

      anyone want to discuss this issue mail me at
      mynewemailaddressitis@yahoo.co.uk

      just mail me anyway cos i've like opened the discussion with them or at least their newsthread which may be quite embarassing wot the hell i just wanted to discuss

      as far as i can see (and i am also a commercial progammer) there is a lot WRONG

    23. Re:simple by Anonymous Coward · · Score: 1, Interesting

      If you go into some king of engineering, the core requirements will tend to be less annoying and more technical. They will make you learn calculus and stuff, but at least they don't usually require foreign language courses in High School as prerequisites to get a degree, unlike many liberal arts & sciences degrees.

    24. Re:simple by Anonymous Coward · · Score: 0

      Indeed!
      wife: do you need anything before I get home? Beer, Cigarettes, something to eat?"

      Me: Yeah, a case of beer, a carton of cigs, and pizza.

      wife: Ok honey, I'll be right home, and be ready for me.

      Me: I'll be ready after I've had my pizza, drunk a few beers and topped it off with a cig, or two.

      wife: Ok, honey. I'm yours when you want me.

      Me: You're mine when I say so and you'll do as I say when I say it.

      wife: ooohhhh.. I love it when you talk that way!

      THAT is a WOMAN... all else are little girley-girls. A REAL woman knows whats important and does what she knows is good for her.

      Ummm.. what? Oh, thanks for the beer hon, I didn't even have to ask you for it. You get to suck my dick for that one.

    25. Re:simple by Anonymous Coward · · Score: 0

      I tell her to make the sndswich and she say to "drop from the dead"! she is american womane adn she not to hear what man say. I make her then U.s sayes noadn to put ME! in the bars! I say her didn;t do what i say and she sayes she cant haveto.

      Whos sayes the top thing? the man or the women?

    26. Re:simple by Anonymous Coward · · Score: 0

      Hey...didn't I get about 10,000 emails from you?

    27. Re:simple by nil_null · · Score: 1

      The core requirements may suck, but once they are over its nothing but hardcore computer hacking fun. Get them out of way first when you're fresh out of high school and used to taking useless courses. My last semester was a fall semester with two CS courses (only 6 credits), it couldn't have been a better last semester.

    28. Re:simple by Anonymous Coward · · Score: 0

      Just what the world needs, another dork with a motivational tape. Be a real man and start your own company; if you need some help, I will sell you a package for four hundred dollars.

    29. Re:simple by Anonymous Coward · · Score: 0

      I hope that you do not plan to make children with a woman like that. Your kids would be weak and get their asses kicked by my kids.

    30. Re:simple by Anonymous Coward · · Score: 0

      For $10,000, I will take two classes in your name and will get at least a B in each.

    31. Re:simple by Anonymous Coward · · Score: 0

      My sons would slip a shiv into yours before they knew what happend.
      My daughters would have you arrested for child rape while they brought you on your knees.

    32. Re:simple by Anonymous Coward · · Score: 0

      yes.. amazon.com should have it

      go here for more information

    33. Re:simple by Anonymous Coward · · Score: 0

      You got crabs from RMS, too, huh?

    34. Re:simple by Beliskner · · Score: 1

      You are correct. If I had mod points, I'd mod you up, but you've got karma where it really counts anyway. Although I'll admit it would feel good to look at my bank account and have it not in the red for a change.

      --
      A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
    35. Re:simple by Anonymous Coward · · Score: 0

      Step 2: Know people :-)

  2. Amen by Anonymous Coward · · Score: 0

    yes

  3. Agreed by the_mystic_on_slack · · Score: 2, Interesting

    I cannot say that I have this problem so much, though every time I have taken an exam which forced me to write code, we were allowed to cite a previously written function or whatever. In the cases where a completely new solution is needed though, I agree, the paper thing does not work. I feel much more comfortable on a computer than writing frantically. Giving exams on computers provide significant challenges for honesty though too. My two cents worth.

    1. Re:Agreed by Anonymous Coward · · Score: 0

      Is any test really a fair measure of skills, though? Any format is always going to favor some people more than others. I do well on tests, handwritten or otherwise, but have always felt sorry for the people who were hard workers rather than test takers. But I guess they've always got the homework to make up for it.

    2. Re:Agreed by Anonymous Coward · · Score: 0

      Not to pick on you in particular, but I'd rather not bury this response on page 4. Every so often we have a Slashdot article whining that CS classes should allow students to collaborate on their programming assignments. Now we have an article complaining that coding on tests is too hard. So how the f**k SHOULD CS students be evaluated?

      Maybe we should just give everyone a 'C' and be done with it. The better ones will find a way to succeed, and the bad ones will become MCSEs anyway.

      I think programming assignments should test individual ability to implement algorithms and solve problems while tests should be used to evaluate student understand of the uses and limitations of those algorithms. So, the homework should have students implement stacks and linked lists. The test should expect the student to be able to explain when to use which.

    3. Re:Agreed by iapetus · · Score: 2
      I cannot say that I have this problem so much, though every time I have taken an exam which forced me to write code, we were allowed to cite a previously written function or whatever.

      Answer 1
      Refer to method public void passExam()

      --
      ++ Say to Elrond "Hello.".
      Elrond says "No.". Elrond gives you some lunch.
    4. Re:Agreed by PotPieMan · · Score: 3, Funny

      I think you left out part of your answer:

      package dataStructures;

      public class FinalExam {
      public boolean pass() {
      return true;
      }

      public int grade() {
      return 100;
      }
      }

    5. Re:Agreed by nil_null · · Score: 1

      I had to take a ton of exams that required writing code or pseudocode. I didn't have too much trouble and just got good at it after a while. A lot of times they aren't trying to test how well you code, but how well you approach a problem. The comments in the code was often the more important part. Writing assembly on paper was probably the easiest because you could run through it in your head easilly. Having said all that these tests were quite a challenge, though in a good way.

      My problem is with reading code. I don't learn much from reading code and often get lost in reading relatively complex code. Computer books are only good for reference for me, I can't learn much from reading them. Its not until I sit down and write some code for myself that I get anywhere. Also, trying to figure out someone else's code can be difficult.

    6. Re:Agreed by Anonymous Coward · · Score: 0

      Coding on paper for exams should not be measured on syntax, but on thought and logic.
      It's important for students to recognize planning and layout rather than 'diving in and coding'.
      I believe that is what is meant for paper exams on coding ... In college, I usually gota away with putting in 'comments' in my written exams explaining my plan, rather than rush out syntatical garbage in a mad frenzy ...

  4. AP Computer Science by jeeryg_flashaccess · · Score: 2, Interesting

    When I took the AP computer science test in high school we had to code on paper! I'm just like you...I get my vibe when I am in front of the computer coding, not with a pencil and paper.

    My highschool had 2 computer labs that would work perfect for such tests. I'm glad you brought this up, it always irritated me.

    --
    Life is like pants... fit in or you don't fit in.
    1. Re:AP Computer Science by Anonymous Coward · · Score: 0, Interesting

      I had a teacher for AP computer science who felt that because most of the class answered essays better he would go back on his word about being straight out code for the final, and decided that we would write programs on paper with no references allowed, who he then had students of his who didn't take computer science copy off of the paper to the computer and then he would compile them. Because no one compleated the task, including me, except for one person, and because he decided to curve the grades in a fassion that made no sense to anyone, I lost my various computer oriented scholarships because of my low grade on my final. Being in that little group of people who are basically too poor to afford college, and not poor enough to be able to get aid, and because my fathers employeer finally worked out a contract with the union and my father got several thousand dollars in back pay which was heavily taxed and most definaly made me not in a "Need" situation. I did not go to college. yea, there are alot of contributing factors, but the main one was that one teacher thinks that code on paper is just as good and efficiant and everything as acctually putting it into the computer, I work for my former school district as the interdistrict mail man. Untill I can get enough money together to attend the cheapest local collge. I thought about suicide after all of this went down, to think that the level this went to was acctual that drastic.

    2. Re:AP Computer Science by Anonymous Coward · · Score: 0

      Just make your code totally annoying and frustrating to look at, but still correct:

      for(int i=0;i<1000;i++)
      ... A[i] ...

      becomes

      int i=11;
      while(i<8003) {
      ... A[(i-3)/8] ...
      i+=8;
      }

      (http://www.acm.org/crossroads/xrds4-3/codeob.ht ml )

      (among other obfuscation techniques)

    3. Re:AP Computer Science by Anonymous Coward · · Score: 0

      Shut the fuck up you whinging cunt. Why DON'T you kill yourself? It'll clean up the gene pool. In fact, even if you don't die, just fucking never breed. No child would want a father like you. You pathetic, spineless piece of shit.

    4. Re:AP Computer Science by DMDx86 · · Score: 2, Insightful


      When I took the AP computer science test in high school we had to code on paper! I'm just like you...I get my vibe when I am in front of the computer coding, not with a pencil and paper.


      Well, I will be taking AP Computer Scince next year. I have seen copies of the test, it seemed pretty resonable, IMHO. How did they grade your exam? Did they give you oppritunity to contest the grade if you felt it was graded incorrectly?

    5. Re:AP Computer Science by heybrakywacky · · Score: 1

      Just make your code totally annoying and frustrating to look at, but still correct

      I don't know about you, but where I went to school, it wasn't just about making the algorithm correct; you had to demonstrate a straightforward, efficient design too. Obfuscation like that would have just cost us credit on the problem.

      --
      I'm sorry sandwich! --Brak
    6. Re:AP Computer Science by Anonymous Coward · · Score: 0
      I work for my former school district as the interdistrict mail man. Untill I can get enough money together to attend the cheapest local collge.

      Well, I was going to flame you, too, until I saw the second sentence I've quoted above.

    7. Re:AP Computer Science by dlc915 · · Score: 1

      I just took the exam a few weeks ago.
      None of the subject matter is really that hard if you know your stuff. If you take the AB level, it requires you to know concepts such as on linked lists and binary trees, etc. The A level doesn't cover any of this really at all, and is more on how well you know basic programming basics. However, the bigger question is can you write new code and decipher other people's code in the given time and w/o a debugger?

      I know some people who really knew their stuff and didn't even finish the writing part. I suppose what it tries to do, is teach you confidence in your ability to code without the debugger or a test execute. Anyways, I can't really speak about the grading since I haven't gotten it back yet.

      --
      I still haven't found the "any" key.
    8. Re:AP Computer Science by Anonymous Coward · · Score: 0

      That's a terrible idea! The first rule of programming classes is YOU DO NOT PISS OFF THE INSTRUCTOR! It's like English classes, the instructor can take marks off, wherever and WHENEVER they like!

      In this case, you'll lose marks for not being efficient. Part of what they teach is "proper coding style" so that others can read your code.

    9. Re:AP Computer Science by Peculater · · Score: 1

      I took the (harder) AB test last year, and coding on paper was definatly the hardest part for me. I'm so used to having syntax checking be a click or test-run away that it was very weird to have to remember all of it. The multiple-choice section of the test had harder questions, but was probably easier overall.

      How did they grade your exam?
      2 parts: Multiple-choice and free-response (coding). The final score is on a scale of 1-5, with 3 being "passing" at most colleges. (*coughs* and gestures to his 5) %)

      Did they give you oppritunity to contest the grade if you felt it was graded incorrectly?
      Nope. You don't even get to see how you did on each question, so you really have no basis for contesting. That was always my biggest problem with the AP system in general, though overall I think it's REALLY a good thing.

    10. Re:AP Computer Science by DMDx86 · · Score: 1

      That was always my biggest problem with the AP system in general, though overall I think it's REALLY a good thing.

      Well, the problem with this is that you have some person giving a hopefully fair analysis. If you get marked off for something that should be right, or get knocked off a few points because they didn't like the way you did something, that is not fair at all.

    11. Re:AP Computer Science by pctainto · · Score: 1

      umm, they do for all of the APs, but, they grade the Comp Sci exam on a "do this, get a point" basis, rather than taking away... so, I foudn that you can write perfectly good code, but, not get all the points because you didn't do one thing that they thought you should've. Oh well. I'll get my grades in July, and we'll see.

      --
      I think my principles are reachin' an all time low
    12. Re:AP Computer Science by chris_mahan · · Score: 1

      Try to indent properly on paper... Dang. Is that a tab or actual spaces?

      When I did those things I would just use tons of extra paper, and then rewrite it all nicely at the end. I didn't care about the format when hashing out the logic, and later just wrote it out nice and pretty. That two step process has worked well for me.

      Granted, modern computer programs were not meant to be written on paper. No even printed.

      --

      "Piter, too, is dead."

    13. Re:AP Computer Science by VertigoAce · · Score: 1

      I just took the AB exam (no results until July). For BC Calc and AB Comp Sci the free response questions are not really about style. If the code runs (or if you proved the answer for Calc) then you'll receive full credit. It doesn't matter if you wrote a wacky recursive solution for something that could have been done in a simple loop. It's to your advantage to do something sensible however, because they can give you substantial partial credit if you can show that you were on the right track.

      Free response on other subjects is more subjective, but every teacher has emphasized one thing: You get credit for what you do right, not what you do wrong (ie, they're looking to add points, not take them away). Sure the written can be hard, but it shows your problem solving skills.

    14. Re:AP Computer Science by Anonymous Coward · · Score: 0

      Well, you can have them do a "hand-count" like in the FL presidential election ;)

      My latest AP Student Guide (heh) says that they will not even look at free response again; except I think they will add the points in a calculator again to make sure the grader didn't fsck it up.

    15. Re:AP Computer Science by zorander · · Score: 1

      The AP Computer science test is the most worthless exam I have ever taken. For the record, I challenged the AB and got a five with about forty minutes of preparation the night before (a practice exam).

      It doesn't test real computer science. In the real world theres a lot more to it than coding in c++. At work (I work for a small company that does embedded linux based realtime control. I designed and implemented a complete control system in six months with one other person). If I were at my liberties to I'd let y'all in on the details but I'm not. Lets just say that it is not a simple system.

      The first thing I had to do was not write code, but come up with a mini linux distribution custom to our task, get it into solid state storage and get it running *reliably*...Then figure out the realtime issue and make the computer embedded. Was I writing c++ code most of the time? Though that would be my official position, I'd say I spent more time messing with hardware issues than coding and definitely more time dealing with sysadmin issues in the embedded system (making it maintainable, etc.) than coding. I realize it is an intro course...but the real job of a computer scientist is to be versatile. Why is it that when the printer breaks in a room full of cs people, the only ones who know enough to fix it are me and an electrical engineer who happens to have a knack for it (furthermore, it's invariably a softare probem)....heck the APCS teacher at my school couldn't even deal with a printer offline on her own...IT ISN'T REAL COMPUTER SCIENCE....setting up a linux box (not Mandrake), maintaining it, developing for it, and learning how to use it (bonus if you can set up a network at home) will be much better prep for cs than anything else.....

      If you can do all that then the AP exam will be no problem for you....if you find yourself needing to study (and the exam being anything but common sense) then it isn't ingrained enough for actual practice yet...

      I hate it how the teachers pump the kids up as if they can actually get work coding...makes me laugh

      The APCS doesn't measure anything more than your ability to learn and regurgitate...CS is a problem solving field...they should be sitting you down in front of a broken computer and making you fix it..writing code as neccesary, not asking you to regurgitate a linked list function you've seen a thousand times in your sleep...

      Brian

    16. Re:AP Computer Science by RobHornick · · Score: 1

      The graders come together and divy up 9 points per free-response question -- that is, they decide what part of the question is worthy of a point. Generally, you don't lose any points for missing semicolons or parenthesis or using a period instead of a -> and that type of thing. But depending on how hard the question is (maybe it's a light one without much material) they can be pretty picky. Once the 9 points are divvied up for each question, the graders grade your test. Two graders grade your test and if they don't concur then the "head grader" for the room of graders will grade it and decide a final grade. There is no opportunity to contest your grade, but if you know you did poorly you can tell them not to score it as you leave. I felt it was pretty easy if you know the material (I took the "AB" test... there's also an easier "A" test which most colleges don't give credit for.) - Rob

    17. Re:AP Computer Science by nil_null · · Score: 1

      When I took the AP computer science test in high school we had to code on paper! I'm just like you...I get my vibe when I am in front of the computer coding, not with a pencil and paper.

      I enjoyed taking my AP Computer Science test (1995). It was the only AP test I felt totally comfortable taking. I would much rather write code on paper, than write an essay on paper about some passage that I just read. Writing *anything* on computer is going to be easier of course. You write an essay on computer, you can type faster than you can write, you can go back and cut and paste and edit easilly, and you can run a spell/grammer check.

    18. Re:AP Computer Science by NeoOokami · · Score: 0

      The AP Computer Science test is only there to help you get college credits early on. It's not meant to help you get a job, it's there to get you through college faster, skipping the most basic CS classes that would bore you out of your mind.

    19. Re:AP Computer Science by jedidiah · · Score: 2

      What? They don't have student loan programs where you live? Learn how to effectively exploit them. This may require moving to another state to establish residency there if your own state schools are too expensive.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    20. Re:AP Computer Science by zorander · · Score: 1

      I know this. I only mentioned it because the teacher at my high school liked to make everyone think that they were capable of it (and that she was teaching a very large part of computer science)....

      In reality most of the time is spent in environment specific things. When I look at the code for a real project, it rarely calls any standard library function more than once as they are abstracted in a layer within the piece of software. Most of the time by the time a developer joins the project that layer has been written and isn't being touched. The skill that's neccesary is adaptability...the ability to learn how to work with that layer be it an in house library, Qt, SDL, the Palm SDK, or whatever. Being known as versatile opens up opportunities (knowing more than one language opens up opportunities to be involved in multilanguage projects and is a must today. Knowing libs helps too).

      Brian

    21. Re:AP Computer Science by Yunzil · · Score: 2

      but the main one was that one teacher thinks that code on paper is just as good and efficiant and everything as acctually putting it into the computer

      Well, it's like this. If you can't explain yourself clearly in plain text then you don't understand the problem. No one exists in a vacuum. If you get a job in the industry, some day you will have to write a report on why your company should buy certain piece of software over another, or stand up in a meeting and explain to your manager why the proposed timetable is ludicrous. And you will have to do it without writing code.

      The true test of whether you fully grasp a concept is if you can explain it to someone who has no knowledge of the subject. Your teacher's test is an interesting idea.

      Ob spelling flame:
      Your post was filled with spelling errors. Are you sure you're ready for college?

    22. Re:AP Computer Science by Joel+Ironstone · · Score: 1

      I don't knwo about that I used to love coding on paper, as its so hard for the peopel marking you to find bugs, and missing brackets and stuff. If you thought the thing out right, you'd probably get full marks. And plus if your stressed during a test and make some silly mistake, you don't get caught up on it for the rest of the hour, you don't even know you've made the mistake.

  5. ..treat as real code? by Archon-X · · Score: 2, Informative

    ..I too used to suffer this - we used have to write chunks of code, and it was frankly painful. I found the best thing to do was use copious amounts of scrap paper, and develop the code like you normally would on a workstation...

    ie, get your structure down, then start to flesh it out, a page for each method etc. That way you can 'grow' your code a syou normally would, and don't feel pressured to write it all top-bottom-with-no-mistakes.

    1. Re:..treat as real code? by xtremex · · Score: 2

      I get test anxiety. For example, I have WRITTEN tests for UNIX, and I've been workign with UNIX for more than a decade. However, I had to take a "test" for a job interview, with a pencil and a timer no less. Something as simple as the lpd port..I went blank. I start to sweat and I panic. That's why I had to take my finals over 4 times in college! I have a friend who is a lawyer..a damn good lawyer..he has to take his 27 times! Because of test anxiety. He can quote the NY State Law books from memory, the minute he's "tested", he turns to Jelly...

      --
      If you're not a Liberal in your 20's, then you have no heart.If you're still a Liberal in your 30's you have no brain.
    2. Re:..treat as real code? by morgajel · · Score: 1

      I don't care what anyone says, you hit the nail on the head... coding is like painting, you lay down a base, throw in the basic structures, fill in the details...
      it's an art AND a science. you can't treat it as one or the other.
      writing code on paper is like asking a woodchuck for directions- and if you understood that example, then YES, you are a coder.

      --
      Looking for Book Reviews? Check out Literary Escapism.
    3. Re:..treat as real code? by Anonymous Coward · · Score: 0

      overcome test anxiety.

      That's a part of learning. If you have test anxiety and you can't overcome it, what's to make an employer think you won't have some similar anxiety in the workplance. I'm sure in that big presentation, or when you're working on that mission critical piece of code, your boss will understand. He'll say, hey, its a good thing schools got rid of all those stressful tests, or else I'd have hired someone else who doesn't choke under pressure, and then where would we be?

  6. Error checking by compiler by Anonymous Coward · · Score: 2, Insightful

    Is the reason you don't do well on the tests because your hand gets tired writing so much code or because you don't know if you are doing things right because you can't compile and see where your errors are. For me it is easier to think of my code as communicating with other programmers my ideas. Writing in this style is easier on paper.

    1. Re:Error checking by compiler by ROBOKATZ · · Score: 1

      That's like saying grammar isn't important because you're just communicating with other people.

    2. Re:Error checking by compiler by bpfinn · · Score: 1
      Why my handwritten code sucks:
      • My handwriting is not very good.
      • I type faster than I write.
      • I never bothered to memorize functions when I could look them up with "man" or in a book. (No books during the exam.)
      • I can't insert code very well on paper when I forget a small, but crucual step.
      • The compiler checks for errors much better than I do.
    3. Re:Error checking by compiler by Anonymous Coward · · Score: 0

      error checking in compilers is like spell checking in word processors, but why do they get so pissed when you use the error checking, but they teach you nowadays to use the spell check when writing a paper and dont really care if you have a few spelling mistakes in timed exam essays? Ultimately, the error correction is not going to write the program for you, and in the real world, you are not going to have to write your code by hand.

    4. Re:Error checking by compiler by packeteer · · Score: 1

      first of all your teacher does not want a compiler to check your work.. you are supposed to do it yourself... and second, you should not be looking up stuff with man if you ever get a job... just wait untill the boss finds out that your spending your payed hours learning how to code when school should have taght it to you...

      --
      unzip; strip; touch; finger; mount; fsck; more; yes; unmount; sleep
    5. Re:Error checking by compiler by heybrakywacky · · Score: 2, Insightful

      first of all your teacher does not want a compiler to check your work.. you are supposed to do it yourself...

      You're supposed to write perfect code the first time around? I agree that it's an interesting test of your knowledge of a concept, but it's completely unrealistic from the standpoint of what you would do in real life (as much of academia is, I'm afraid). I can write code that is pretty close, debug through compile and runtime errors, unit test for missed functionality, etc., and have something working in half the time it would take me to attempt to do all that on paper, analyzing each statement "by hand." Is this not the way that 99% of all developers work?

      and second, you should not be looking up stuff with man if you ever get a job... just wait untill the boss finds out that your spending your payed hours learning how to code when school should have taght it to you...

      I use man as a reference, as I would imagine most people do. I don't keep every last detail of every function or program I'm going to have to use in my brain.

      I know that both of these arguments are somewhat counter to the purpose of academia. I have an HP calculator that will do integrals for me too, but can obviously see where that wouldn't be allowed on a calculus test where you're demonstrating your ability to integrate. But as for writing code on paper, it just never made much sense to me. It's completely outside the medium for which it was intended, and completely counter to the process which most developers use to write code.

      If you want to test someone's knowledge of a computer concept/algorithm/etc., have them write detailed flow charts. Get 'em used to it. Make UML requirements. These are the kinds of things that not only make for good development practices, but also will have a practical application when students actually get out of school and start working.

      My $0.02

      --
      I'm sorry sandwich! --Brak
    6. Re:Error checking by compiler by Iffy+Bonzoolie · · Score: 2, Insightful

      just wait untill the boss finds out that your spending your payed hours learning how to code when school should have taght it to you...

      Well, I don't think that's fair at all... You are paid to do a job, and it's easy to be effective without memorizing tedious information. Compilers are better at finding missing semicolons or parentheses that you are. Why not let them do it? You might know what a library function does, and how to use it, but maybe you forgot the order of the arguments. Sure, a guess probably won't compile, but it doesn't mean you are a bad programmer. I'd rather work with someone who has a strong grasp of OOAD and can learn the specifics on the fly than someone who can write code that compiles every time out of the gate, but doesn't "get" the whole "objects" thing. (At least in my case, where we work in an OO environment.)

      Part of being a good programmer is using the right tools to maximize your effectiveness. The compiler is a great syntactic and semantic validator. Let it do that for you. The manual is much better at retaining information about specifics. Let it do that for you. As long as you can use these tools to craft quality code, then you are being effective. There's insignificant cost to running the compiler twice as often, or looking something up in a manual or on the web. You tend to memorize the things you use really often, but what you use can change from project to project, or release to release. It's hard for an employer to find someone who already knows everything exactly that they want... and when they get them, they may not be as effective/productive as someone who has to learn part of it on the job.

      If it's a class in Specific Language X Syntax, then maybe that makes sense, but that's a useless class. At my school, we did a lot of hand-writing code on tests, but usually pseudocode was sufficient to get full marks, and you could get good partial credit if you had the basic idea. The focus was not on details like syntax, but on the concepts, ideas, paradigms of the subject (compilers, operating systems, computer graphics, or whatever).

      You are hurting yourself if you stop learning once you are out of school. Technology is always moving and changing, and what's available and how to use it might change on you, you have to adapt. You should always be learning, 1 year after school, 10 years after school... why stop? No one I know at anyplace I've worked ever expected anyone to know everything about what they were supposed to do. They care about results... providing those requires being able to learn effectively on the job, because who knows what you might be doing next release, next project, next company... Being versatile will get you exceeding expectations all the time. Success is rarely about what you know, but how quickly and how well you learn, and whether you can make use of it.

      -If

      --
      Run a pencil-and-paper RPG campaign with your far-off friends: Gametable!
    7. Re:Error checking by compiler by Anonymous Coward · · Score: 0

      see, the real problem here is that coding on paper promotes bad practices. I like to have my braces closed, and then code in between. Try that on paper :)

    8. Re:Error checking by compiler by dakoda · · Score: 2, Insightful

      "Part of being a good programmer is using the right tools to maximize your effectiveness. The compiler is a great syntactic and semantic validator. Let it do that for you. The manual is much better at retaining information about specifics. Let it do that for you. As long as you can use these tools to craft quality code, then you are being effective. "

      Exactly =) Programming, as a career, is _not_ memorizing all the man pages, but knowing how to use them quickly, and learn on the fly. Every task you do is likly to be different, so why bother memorizing everything? i, for one, use them for function argument order, which i never remember because all the libraries i use have slightly different orders.

      I suppose it'd be better to think you get it right, only to find a logical error somewhere down the line when you provide the source and dest structs in the wrong order..? right ;)

    9. Re:Error checking by compiler by susano_otter · · Score: 2

      No, it's more like saying "grammar is important only where it supports communication". Normal people don't set out to create grammatically perfect sentences. That way lies madness. Instead, they try to communicate. They use exactly as much good grammar (or local idiom) as necessary, and don't sweat the rest of it.

      --

      Any sufficiently well-organized community is indistinguishable from Government.

    10. Re:Error checking by compiler by phossie · · Score: 1

      What, you want to use *computers* to do something useful? What are you, a *programmer*?

      Seriously folks, in a field that *exists* to let humans do things humans are good at, and machines do things machines are good at, it does seem a bit stupid not to take advantage of the very tools you're working with.

      :) (Yes, I'm agreeing.)

      --

      [|]
    11. Re:Error checking by compiler by tauntalum · · Score: 1

      In our company, we use a lint-esque tool. It's use is encouraged, and in fact, required prior to code review. C can allow many painful mistakes by simple misspellings. Further, there are some counter-intuitive ways that it behaves under certain conditions.

    12. Re:Error checking by compiler by calethix · · Score: 1

      just wait untill the boss finds out that your spending your payed hours learning how to code when school should have taght it to you...

      ok, I don't know if you're a troll or just a total fucking tard with no clue of how things work in the real world but here's my thoughts.. In my job, I write stuff in PL/SQL, C on Unix, Cobol on Unix, shell scripts on Unix, Perl on Unix, Cobol on VMS, DCL on VMS, C and batch scripts on DOS/Windows, HTML and Javascript.
      That doesn't even touch on the different systems I have to understand or my hobbies like PHP and Postgres.
      And you're telling me I should be a 100% expert in each of those so I never have to look in a manual?
      My company buys us books so we can look stuff up and make sure we're doing it right. just wait until the boss finds out his paycheck is half what it should be because you didn't look up how to do something that you weren't sure about.

    13. Re:Error checking by compiler by Alex+Belits · · Score: 2

      I cane sink of a Lott of cases very a spell checkers Voodoo worse Zen a hue man.

      On the other hand, when a time is limited, compiler helps with misspellings and minor errors while not affecting things that exam is really for.

      --
      Contrary to the popular belief, there indeed is no God.
  7. We did these at the Rochester Institute of Technol by Anonymous Coward · · Score: 2, Informative

    It really depends on how it's graded. I had some Prof's that would grade based more on the understanding of the problem. They would look at the code as more of a structured psuedo-code, rather than something they thought would compile.

    I've also had profs that would take a point off for each syntax error...

  8. I feel the same way by scode · · Score: 3, Insightful

    I have no resect for any exam that involves writing actual code on paper. Asking about fundamental principles is fine; asking for pieces of code or specific API details is IMO rediculous.

    Granted, you can never design a perfect test. But you can at least do away with the totally obvious imperfections like asking people to do things in ways they never do and never will do in the future (except on other tests).

    The few times I was subjected to these tests, I sure felt primitive erasing entire chunks of code after having realized I needed to insert something in the beginning. And it's a hard thing to avoid; I don't think any reasonably experienced programmer writes code entirely from top to bottom. Just a simple thing as placing braces becomes a hurdle in writing unless you know the length of the code you need to put between them!

    --
    / Peter Schuller
    --
    peter.schuller@infidyne.com
    http://www.scode.org
    1. Re:I feel the same way by MobiusKlein · · Score: 2, Insightful

      Jeeze, it's not so bad. In upper division and graduate math classes, they have you write proofs in exams.
      You have to
      1) Remember definitions.
      2) String statements together in logical, consistent groups.
      3) Reach the proper conclusion with the hypotheses given.
      4) Justify interesting or tricky steps.

      Sounds a lot like creating code in an exam situation. A reasonable professor (or TA more likely) will read the code/proof looking for the the correct ideas and flow more than perfect pedantic correctness. At least that's what I did when I graded for upper division classes.

      rbb

      ps - use scratch paper to avoid erasing.

    2. Re:I feel the same way by ROBOKATZ · · Score: 1
      Just a simple thing as placing braces becomes a hurdle in writing unless you know the length of the code you need to put between them!

      That's why God invented indenting.

    3. Re:I feel the same way by Anonymous Coward · · Score: 0

      any really good programmer has a pretty good idea what they're going to write before they start coding.

    4. Re:I feel the same way by scode · · Score: 1

      Eh? Indenting is irrelevant. This is about the amount of vertical space the code is going to take.

      --
      / Peter Schuller
      --
      peter.schuller@infidyne.com
      http://www.scode.org
    5. Re:I feel the same way by scode · · Score: 1

      The math situation is different, because that's how you normally do math. It's as simple as that.

      If I normally wrote code on paper, it wouldn't be a problem. But I don't. And I won't start in order to defeat some exam.

      --
      / Peter Schuller
      --
      peter.schuller@infidyne.com
      http://www.scode.org
    6. Re:I feel the same way by Anonymous Coward · · Score: 0

      For FUCK's sake, it's spelled:

      R *I* DICULOUS !

      WHERE do you people get these misspellings from?

    7. Re:I feel the same way by Anonymous Coward · · Score: 0

      I'm really puzzled here. If you're having trouble estimating the vertical space you need, why are you writing the closing brace ahead of time? You don't even have to specifically remember to do it since the unindenting cues you.

      This is actually a serious question in case one of my students has the same problem.

    8. Re:I feel the same way by AJWM · · Score: 3, Insightful

      You miss the point.

      Indenting is relevant to this for the same reason that Python uses only indenting, not braces or begin-end, to indicate block structure.

      Yes, one school of coding in a text editor is to place the open/close braces first and then fill in the code. As you say, that's tough to do on paper. It's also a crutch.

      Another school says indent your code properly and the braces are superfluous, just there for the compiler (for non-Python languages).

      If you follow the latter train of thought, you just put in the closing brace when you're done filling in the intermediate, indented code.

      --
      -- Alastair
    9. Re:I feel the same way by ginsu · · Score: 2, Interesting

      Really, it is very very rare that a professor or grader could care less if you have correct syntax or even correct function names. As anyone who's tried writing code in a editor which doesn't balance parentheses (after being used to one which does) knows, today's editors (vim/emacs/IDEs) make it easy to lose simple syntax skills. That's not what they are testing you for.

      What you are being tested on is your ability to pull, from your own head Algorithms, Data Structures skills, etc. (Can you sort without cutting and pasting code from somewhere else? Can you create a good linked list in 10 minutes on paper?) You are also being tested on your ability to do a design (in this case, a VERY SIMPLE design most likely) and execute it. If you, as the poster mentioned, feel the need to erase "large blocks" of code, you probably didn't think the program out well enough ahead of time.

      Can you create new ideas/code? Or are you a 'clay pusher' -- one who can make any 1 block of code do any other thing, but has a hard time creating it from scratch.

      As previously mentioned, these skills are, more importantly than on exams, used during job interviews. I've yet to have an interview where I didn't at least write some code. And you think it's hard to do it in a lecture hall where you have 2 hours to finish the whole test? Try doing it in an interview with the interviewer sitting across the table from you watching you think, and you have a 5 minute time limit :)

      There are a few tactics which make this a lot less painful.
      (1) Whip out a design before you start writing code. This could be anything from a flowchart to a picture of the memory buffer you'll be modifying.

      (2) Remember the old 'Basic' trick of line numbering? (Start by numbering things 10, 20, 30, 40 ... -- then if you have to edit code later, instead of re-entering the whole program just add a 'line 11, 12 and 13.') Apply that to paper. Space things reasonably widely, write small. You can also write blocks of code and 'insert it' into the correct place with arrows. As long as its readable, graders usually could care less.

      (3) When you write your own code, try to practice coding it without refering to any other code. Pull what you can out of your own head without referring to that marvelous brain-extension, the internet (Hard discipline to keep if typing 'google.com' is as natural for you as it is for me!) or referring back to already-written code.

      My biggest problem with handwritten tests is irrespective of having to write code or not . . . after all these years on a keyboard, my handwriting SUCKS. :)

    10. Re:I feel the same way by scode · · Score: 2, Interesting

      Of course they have - a pretty good idea. You don't write the entire program line-by-line mentally first (at least, I've never heard of anyone doing that).

      Part of programming is creating abstractions and factoring code. You don't keep the source code and state of the entire program in your head at one time. You deal with the relevant parts. For example, suppose I were to write a method that answers the absolute age difference between two people.

      First, I'd worry about the method at hand:

      absoluteAgeDifference: aPerson
      ^self (ageDifference: aPerson) abs.

      This implementation is completely independent of the implementation of Person>>ageDifference. After writing that method, I would implement #ageDifference - unless it already existed:

      ageDifference: aPerson
      ^self age - aPerson age.

      This is my normal way of doing things. If I had to do this on paper, I would have to think through dependency methods first in order to calculate what will fit where.

      But to get back to the issue of braces. Suppose I needed to write code that answers the most wealthy relative of a person. First, I'd probably write:

      mostWealhtyRealtive
      "Answers the most wealthy relative of the receiver, or nil if the receiver has no relatives."

      self hasRelatives ifTrue: [
      ] else: [
      ^nil.
      ].

      After having written this, I would fill in the code block. The implementation may be extremely simple, or mit may be relatively complex, depending on the methods already available to me and to which extent I want to factor the implementation for usability (i.e. divide into more methods).

      It may sound simple; but when doing this on paper, the whole process of writing code just becomes different. Suddently you need to concentrate on pety details of syntax instead of the problem. It wastes time, and is annoying.

      All IMHO of course...

      --
      / Peter Schuller
      --
      peter.schuller@infidyne.com
      http://www.scode.org
    11. Re:I feel the same way by scode · · Score: 1

      So sue me.

      I originally wrote something else, and changed it to ridiculous. I failed to changed the entire word correctly.

      --
      / Peter Schuller
      --
      peter.schuller@infidyne.com
      http://www.scode.org
    12. Re:I feel the same way by scode · · Score: 1

      I do it because it works fine using a text editor. It finishes the outer parts of the code; only the inner parts need to be considered.

      I've seen people write entire Java classes entirely from top to bottom. The results are usually not very pretty... :)

      --
      / Peter Schuller
      --
      peter.schuller@infidyne.com
      http://www.scode.org
    13. Re:I feel the same way by scode · · Score: 1

      >If you, as the poster mentioned, feel the need to erase "large blocks" of code, you probably didn't think the program out well enough ahead of time.

      See my other response on this subject. It's not about inability to think the program out well enough ahead of time; it's about having to do so to a different extent - and in a different way - than normal. When writing code on paper, certain things suddently become relevant that are irrelevant when using a text editor. One such thing is the number of lines of code a code block will end up taking.

      (Of course, if you end up with code blocks a hundred lines long it's probably badly desgined in some languages etc, but that's another issue.)

      --
      / Peter Schuller
      --
      peter.schuller@infidyne.com
      http://www.scode.org
    14. Re:I feel the same way by Coward+Anonymous · · Score: 2

      "... Asking about fundamental principles is fine; asking for pieces of code or specific API details is IMO rediculous"

      Unless this is a language course, or an introduction to computing...

      "The few times I was subjected to these tests, I sure felt primitive erasing entire chunks of code after having realized I needed to insert something in the beginning ... I don't think any reasonably experienced programmer writes code entirely from top to bottom"

      True, but any reasonably savvy college student (or, now that I think of it, anyone who has programmed BASIC with line numbers) would know to put nice large spaces between his lines of code to accomodate the occasional insert. That and the uncanny ability to write in ever smaller hand writing...

      Quit whining about why you can't do tests and just slog through them like the millions who did it before you

    15. Re:I feel the same way by dumpster_d · · Score: 1

      I had a prof. who used this and multiple choice--and he could compile the result and you were graded down for every mistake you made, syntax or otherwise, including your whitespace formatting.

      I wound up being good at the hand-written code, but I disliked it because it seemed so non-applicable. Especially since you may forget to initialise a variable and then have to insert that line amongst code you've already written where there's no room. It was horrible.

      But, what he was testing first and foremost was whether or not you planned out your code before you started writing it--a fact that would become painfully obvious if you did not.

      In that regard, it worked quite well.

    16. Re:I feel the same way by Anonymous Coward · · Score: 0

      I believe this is known as defensive programming, the idea is simply to remove simple errors when it is easiest to correct them. Another example is adding matched pairs of braces to calculations and then inserting the terms between them.

      Adding the closing bracket as soon as you declare the construct means you can't forget it later, i.e. when your construct runs over several screens and goes up and down several levels of indentation.

      Also it allows you to start laying out your conditionals and loops inside a function which can help to split the problem the function is trying to solve into smaller and easier subproblems.

      If you want to know more about this kind of programming get Code Complete by Steve McConnell, a book which should be mandatory reading on any programming course.

      AJWM - I'm not sure how getting into habits which help reduce the number of syntax errors you make could be considered a crutch, are you saying that you never have any syntax errors and your code compiles perfectly first time?

    17. Re:I feel the same way by Doctor+Memory · · Score: 1

      I sure felt primitive erasing entire chunks of code after having realized I needed to insert something in the beginning.

      JFC, dude, it's paper! Just write it off to the side and stick an arrow to where it needs to go. You're feeding it to a TA, not a compiler.

      Just a simple thing as placing braces becomes a hurdle in writing unless you know the length of the code you need to put between them!
      Whoops, didn't realize I was feeding a troll...my bad.

      --
      Just junk food for thought...
    18. Re:I feel the same way by scode · · Score: 1

      Put spaces? Ok, if you want to burn lots of paper. It's difficult to do when you are given two pieces of paper filled with questions and a specific amount of vertical space to answer each one.

      As for whining, I *should* whine if I believe there is a flaw in the system. Just accepting fact and living with it instead of *thinking* is the reason Hitler got away with it...

      --
      / Peter Schuller
      --
      peter.schuller@infidyne.com
      http://www.scode.org
    19. Re:I feel the same way by Anonymous Coward · · Score: 0

      The flaw here isn't with computer science, it is with *your understanding* of computer science...

    20. Re:I feel the same way by scode · · Score: 1

      Oh really. I'd be interested in what you base that on, Mr. "Anonymous Coward".

      --
      / Peter Schuller
      --
      peter.schuller@infidyne.com
      http://www.scode.org
    21. Re:I feel the same way by Coward+Anonymous · · Score: 2

      I have never heard of a computer course where additional paper was refused a student. If this has occured, then you have a much bigger problem with the course staff. They are out to get you to begin with so you might as well opt out of the course and wait for better people.

      Your Hitler invocation is gratuitous and as such merits no response.

  9. Re: code on exams by anonymous_wombat · · Score: 1

    I once had a job interview where they asked me to write a C program on paper. They gave us an hour, and it took me 57 minutes. Writing code makes sense as a homework assignment. I feel that multiple choice questions are best for computer science examinations. There is no point in trying to write a program under that kind of time pressure.

  10. Psuedo-Code by XBL · · Score: 2

    Does doing things in a not-so-rigid manner help? I think so.

    Students can focus on the problem, and not writing the syntax, complete with all the () {} etc.

    1. Re:Psuedo-Code by Anonymous Coward · · Score: 0

      Agreed! Focus on solving the problem is the whole idea. Anyone can fix syntactic errors during the compilation/interpretation process.

  11. 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...

    1. Re:Hate it! by amstrad · · Score: 1

      I personally hate it when people rely on the compiler and shotgun debugging to help them get their module working correctly.

      Debugging should be for getting bugs out, not experimenting until you find the right algorithm.

      That aside, I agree that it is rediculous to expect 100% syntax free code on a written exam. My professors expected pseudocode on exams, since they are looking for correct semantics, not correct syntax.

    2. Re:Hate it! by seanadams.com · · Score: 2

      Due to complexity, programs simply cannot be written 100% perfect the first time around.

      A slight modification of the infinite monkey theory states that given infinite time, a compiler, and complete test cases, anyone can write a correct program.

      If I'm going to hire you, I want to know that you can code quickly and correctly. That doesn't mean your code has to work the first time through, just that I don't want you sitting there all day jumping from your text editor to gcc while you work through syntax errors, off by one errors, etc.

      This is why pen & paper coding is a fantastic test.

    3. Re:Hate it! by Neon+Spiral+Injector · · Score: 3, Insightful

      So make it a timed test.

      The only language I can write 100% on paper is COBOL, and I hate COBOL.

      With C I need a compiler to catch the few typos or what ever I made. But I don't need all day, one or two compiles does it.

      Luckly at my school the COBOL tests were on paper, and the C test was on a computer (and timed).

      I liked my OS class. The UNIX tests were held in front of terminals. I couldn't remember the quite how to use the non-GNU `sort` command. So `man sort` saved me there. I told the teacher what I did after the test, he said, "excellent."

    4. Re:Hate it! by denial · · Score: 2, Insightful
      Exams that ask for written code aren't testing for syntax errors, generally they are marked with lenience in that area.

      But written code tests something very important, which is whether you can design a solution and describe the solution in essentially correct code. That's something very different from just slowly crufting a solution together because you can build it up. I've seen so many programmers commercially who can't design, describe, or communicate their approach to solving a problem, and I think quality suffers directly.

      Obviously there are other important things to test that require prac exams to test, but asking for written design, pseudo-code or even code in some exams is, imo, a good idea.

    5. Re:Hate it! by Anonymous Coward · · Score: 0

      I think mediocre is a little optimistic for most of the people posting here. Having taught for a few years, I've found that most of the people that can't successfully write a few 10 line linked list functions are closer towards the piss-poor end of ability than mediocre. The only thing the surge in CS students has done is lower the average; the number of students actually good at the field doesn't seem to have increased significantly. It seems that no matter how big the class roster is, the number of good students is always around 3-5.

    6. Re:Hate it! by AJWM · · Score: 2

      Yes.

      I swear I've known alleged programmers who, for any given problem, with start with a "hello world" and follow the edit/compile/test cycle until it does what they want.

      For hobby programming, fine. If I (or my employer) is paying them, I want something a bit more efficient.

      --
      -- Alastair
    7. Re:Hate it! by shd99004 · · Score: 1

      I dislike writing code in an exam as well. Not only cause it's so much to write, but if you write a page full of code and you realize you made some error, somewhere... and you have to erase lines, insert lines. Very fun, not. But usually the profs tell us that the code is not expected to be 100% error-free, that if we make minor syntactic or other such errors, it could be ok if the *solution* is correct.

      Ofcourse I agree with you, debugging is a huge part of programming (one of the most time consuming, depending on the circumstances), and if they want to try our abilities there, they have to do it otherwise than on paper.

      --
      Will work for bandwidth
    8. Re:Hate it! by seanadams.com · · Score: 2

      So make it a timed test.

      No, give them plenty of time. Any decent programmer picks up a pen maybe once or twice a week - it might take them a while to remember how to use it!

      Seriously, knowing the syntax inside and out is important, but not half as important as knowing the algoritm and not needing a dozen passes to get it to work right.

      Interview questions should NOT test obscure specifics. They should test problem solving and attention to detail. One of my favorite interview questions is:

      Write a function to reverse the order of the letters in each word in a string of arbitrary length, using a finite amount of memory. eg "This is a test" becomes "sihT si a test"

      If you can write that function out with pen and paper, given plenty of time, then you're a pretty good programmer.

    9. Re:Hate it! by Anonymous Coward · · Score: 0

      And I've known alledged programmers who, for any given problem, will sit down and start UMLing it, pseudocoding it, flowcharting it (often in committees) in such a way that by the time they're ready to start coding, I have a working program compiled and ready to go.

      There is something to be said for really thinking a design through ahead of time, especially for a very large application. It's usually done for maintainability, expandability and is pretty much a requirement if there are multiple people writing pieces of the program. However, "efficiency" is an entire different can of worm...

    10. Re:Hate it! by Anonymous Coward · · Score: 0

      Okay, I've got to respond to this one:

      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 don't enjoy exams, but I also realize that they serve an important purpose: they test proficiency.

      To imply that programming must be done interactively (e.g., via debugging) is like arguing that hunt-and-peck typing shares an equal footing with touch typing.

      You already have an opportunity to work in an interactive setting when you do your labs (assuming your undergrad courses have labs, assignments, and exams). Many students, who aren't otherwise cheating, waste this opportunity by turning themselves into random statement generators and using the computer as a fitness function. They learn very little from this experience. What you should be doing is creating a model of the language semantics, so that you know what the program will do even before running it. Any errors at this point should be minor in nature, and the better the language model that you create in your mind, the more proficient you will be at creating accurate programs.

      You should also be able to reason about the behaviour and quality of an algorithm without testing. Testing can never take the place of a formal (or even informal), proof of correctness.

      Exams are the verification that you have built up this model and have these reasoning abilities. I know that there are things "not to like" about exams, like the stress levels, and their contrived nature (in the real world you could consult other documentation); however, the skills they test for are VERY important.

      If you believe that debugging makes the programmer, you have only discovered a genetic algorithm, one were you are not even playing the leading role. It is possible to do MUCH better, and written exams encourage this.

      An finally to respond to:

      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.

      Actually, if the semantics of the program match the given specification, then the program is correct - no two ways about it. If the program is overly complex, there may be other considerations which come into play. An elegant solution is much prefered to a complex one -- in real life programming projects too.

      As a side note to exams. In many of the exams I have taken, and given, there have been programming problems. Almost always, the relevant built-in functions are given, and minor syntactic issues are often ignored. Programs are rarely larger than a few functions or objects. Elegant solutions are usually already known, though it can be hard to come up with one when under time pressure.

      I hope your skills will develop so that you need less debugging in the future. Good luck!

      PS. First Post!! ;-) For me.

    11. Re:Hate it! by Real_Mce · · Score: 1

      Actually it's only 8 lines of code to make a function in PHP to do that...
      Wrote it out in about 2 min on paper.
      it works, and I'm not a great coder by any means.
      So I don't know if that's truly a good test.

      function revWords($instr) {
      $tmp_ara = explode(" ",$instr);
      $itr = sizeof($tmp_ara);
      $for($i=0;$i$itr;$i++) {
      $rev_wd .= strrev($tmp_ara[$i])." ";
      }
      return $rev_wd;
      }

      --
      All employees must wash hands before using the bathroom. - The Mgmt.
    12. Re:Hate it! by AJWM · · Score: 2

      usually done for maintainability, expandability and is pretty much a requirement if there are multiple people writing pieces of the program

      All of which can be pretty much assumed to be the case if you're getting paid to code. Not always -- some jobs (eg sysadmin, and others) might require a fair bit of "quick bang out a script to do X" where the code will never be used again. But even there you want somebody who can think on their feet, not develop the script by stepwise refinement from "echo 'hello world'".

      --
      -- Alastair
    13. Re:Hate it! by seanadams.com · · Score: 2

      $tmp_ara = explode(" ",$instr);

      I don't know PHP, but it looks to me like like your function allocates memory proportional to the size of the given string. Did you read the question?

      Hint: you have to modify the string in-place. Try it in C.

    14. Re:Hate it! by denial · · Score: 1
      But his comment was in the context of being able to code on paper. If you have mastered the skill then of course for certain classes of problems you can do the design stage quickly in your head and move to coding. But that is a very different thing from the person who can only do it by coding, incrementally fumbling towards a solution that is only correct in the sense that it seems now to work.

      The other point to be made here is that even where you can design in your head quickly, if you never manage to communicate the design, your code is in many senses worthless if it has any degree of complexity. No sizeable and non-trivial code is perfectly correct, it all needs maintenance, and if you haven't written down the design, chances are that the person will either have to redesign and rewrite the code, work out the design from the code, or more typically, just build on the code in a way that causes rampant code entropy. UML is the standard language of design, and an appropriate way to document design decisions.

      There are of course people who seek to hide the fact that they cannot code through endless design sessions. However, since we are talking about examining people's ability to code, just in a different medium/manner, I think we can exclude those people from the set of students who are advantaged by written code exams.

    15. Re:Hate it! by leshert · · Score: 2

      I don't know PHP, but it looks to me like like your function allocates memory proportional to the size of the given string. Did you read the question?

      Actually, not to be pedantic or anything, but his answer does fit the letter of the question. You specified "using a finite amount of memory", not "using a constant amount of memory."

      Given a finite input string, any algorithm that uses any finite amount of memory (whether it be O(n), O(n^2), or O(n!) ) passes.

      :-)

    16. Re:Hate it! by seanadams.com · · Score: 1

      Actually, not to be pedantic or anything, but his answer does fit the letter of the question. You specified "using a finite amount of memory", not "using a constant amount of memory."
      Given a finite input string, any algorithm that uses any finite amount of memory (whether it be O(n), O(n^2), or O(n!) ) passes.


      Semantics, they are a bitch. You got me. :)

    17. Re:Hate it! by Fryboy · · Score: 1

      Even coding in slashdot comments becomes non-trivial:

      I think you mean 'tset' :)

    18. Re:Hate it! by Colol · · Score: 1

      You're absolutely right. It's insipid. Especially when they spend a week lecturing on how the waterfall method of development simply doesn't work, but then expect you to essentially use it on a test.

      Hello? Why waste your breath saying it's impossible to get a program perfect the first time if you expect us to be perfect?

      I think this all goes back to the "Academia vs. Real World" argument so many people get into about Comp Sci education.

    19. Re:Hate it! by Colol · · Score: 1

      To clarify, I haven't had many problems with writing code on tests. However, it's hellishly annoying to have a piece of paper in front of you and not a screen and keyboard -- make a typo, and you'd better pray you have enough eraser left to fix it.

      Oops, left out a variable initialization because you were working out logic for a method while writing down the easy stuff? Erase two lines, cram three in using smaller print. And being left-handed, I'm surprised the TAs grading the exams could ever read my code by the time I got done smearing graphite all over with the edge of my hand and inserting comments that shouldn't have been needed but were worth precious points.

      Perhaps most annoying of all, though, is when you have a heavily-weighted question about a topic that was barely touched upon in both class and book. It always makes for an interesting final when you're asked something for a decent chunk of your grade that simply wasn't covered in the level of detail it expects in your answer.

    20. Re:Hate it! by DEBEDb · · Score: 1

      One of my favorite interview questions is:


      Write a function to reverse the order of the letters in each word in a string of arbitrary length, using a finite amount of memory. eg "This is a test" becomes "sihT si a test"


      I'd rub your nose in it if you asked me that,
      and used the worst possible algorithm. Any string you give me will be finite, so memory I use
      will also be finite. You meant constant, eh :)

      --

      Considered harmful.
    21. Re:Hate it! by DEBEDb · · Score: 1

      (Constant not counting the string size
      of course).

      --

      Considered harmful.
    22. Re:Hate it! by Anonymous Coward · · Score: 0

      > If I'm going to hire you

      Bad pretense. The question as asked originally had nothing to do with getting jobs, it was about questions on tests for a class. They are completely different.

    23. Re:Hate it! by Theom · · Score: 0

      I bet you hate when people rely on a compiler to COMPILE the code too.

      --

      mp3: l33t term for empty.
    24. Re:Hate it! by Mike1024 · · Score: 1

      Hey,

      Due to complexity, programs simply cannot be written 100% perfect the first time around.

      Indeed, but is is seems unlikely that they would type your code out to check it compiles without errors, or suchlike. They want to know you can write code that functions.

      Michael

      --
      "Goodness me, how unlike the FBI to abuse the trust of the American public." -- The Onion
    25. Re:Hate it! by 0x0d0a · · Score: 2

      large chunks are difficult to deal with in writing

      90% of the time, anything over 100 lines of code is going to have at least one mistake in it, be it a syntax error or a bug.

    26. Re:Hate it! by avdp · · Score: 1

      I agree that a design needs to be worked out ahead of time, either in the programmer's head or on the paper (based on the complexity and requirements of the project). On the other hand, I think to write code of any other way than incrementally is stupid. I guess maybe the original poster was talking about designing incrementally as the code gets written or something, I am not too sure how that'd work anyway.

      As far as UML, I don't know much about it. It seems to be kind of a rather new invention, and not being a comp sci by training (I am an EE) I am not familiar with all the buzzwords of the trade, I rely on the good old comments in the code and possibly some flow chart for documentation. Seems to work just fine. If a programmer can't enhance/maintenance of a program unless he's given UML documentation (or any documentation, really), I'd suggest he's not much of a programmer to begin with.

      I guess the bottom line is that I disagree with the whole thread about what makes a good programmer. As far a testing/interviewing a programmer, I think give him a problem, and see if he can work out a design for a solution and explain it to the interviewers (possibly with the use of markers) and that should do the trick.

    27. Re:Hate it! by Anonymous Coward · · Score: 0

      Its not difficult to get chunks of code correct the first time if you spend the time to do some proper planning and designing prior to coding. That's the problem with all you code monkeys - so quick to start typing away instead of spending a few minutes or hours coming up with a good plan first.

    28. Re:Hate it! by Ayende+Rahien · · Score: 2

      Assuming you meant a constant ammount of memory, and not finite, that isn't very hard.

      //Assumes, str is null terminated.
      void revStr(char *str)
      {
      int start,end=strlen(str);
      char tmp;
      do
      {
      tmp = str[start];
      str[start]= str[end];
      str[end] = tmp;
      }while (++start!=--end);
      }

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    29. Re:Hate it! by Ayende+Rahien · · Score: 2

      What did we say about never getting it right the first time?

      Here is the version that works.

      //Assumes, str is null terminated.
      void revStr(char *str)
      {
      int start=0/*forgot to do this before*/,end=strlen(str);
      char tmp;
      do
      {
      tmp = str[start];
      str[start]= str[end];
      str[end] = tmp;
      }while (++start /*using != will work, but will segfault on string with len of 1*/ --end);
      }

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    30. Re:Hate it! by Ayende+Rahien · · Score: 2

      forgot to set it to code style.
      Damn!

      Re:Hate it! (Score:2)
      by Ayende Rahien on 17/06/02 13:08 (#3714251)
      (User #309542 Info)
      What did we say about never getting it right the first time?

      Here is the version that works.

      //Assumes, str is null terminated.
      void revStr(char *str)
      {
      int start=0/*forgot to do this before*/,end=strlen(str);
      char tmp;
      do
      {
      tmp = str[start];
      str[start]= str[end];
      str[end] = tmp;
      }while (++start < /*using != will work, but will segfault on string with len of 1*/ --end);
      }

      --

      --
      Two witches watched two watches.
      Which witch watched which watch?
    31. Re:Hate it! by lucifuge31337 · · Score: 2, Insightful

      All it takes is someone to grade the test that actually knows what they are doing.

      But if they knew enough about coding to do that, they'd have a real job and wouldn't be grading written tests.

      Oh well...it was a nice idea.

      --
      Do not fold, spindle or mutilate.
  12. I don't mean to sound mean.. by Fixer · · Score: 2, Insightful

    .. but you should know the language you are using well enough to be able to simulate what's going to happen in your head. Yes, it takes a lot longer, and you have to double and triple-check things, but it's a good skill to have.

    --
    "Avast! Prepare for the rodgering!" THWACK! "Arrr.. me nards.."
  13. Written exams are stupid by Jobarr · · Score: 1

    Half the time I forget a semicolon or somrthing, but on the computer...it doesn't matter because it tells you. Every single decent compiler will tell you when you mess up...paper doesn't.

    1. Re:Written exams are stupid by Verizon+Guy · · Score: 1

      Every single decent compiler will tell you when you mess up...paper doesn't.

      Ever see the look on someone's face when they use gcc for the first time? It's horrific. One semicolon gone and you get 5,000 errors, none of which are "Syntax error on line 14" or "You forgot the fucking semicolon on like 14, moron."

      --

      Aw, fuck it. Let's go bowling. - The Big Lebowski

    2. Re:Written exams are stupid by Anonymous Coward · · Score: 0
      Every single decent compiler will tell you when you mess up


      That isn't always true. The compiler will only tell you when you mess up in a way that produces code that can't be compiled.


      Example:


      if (foo == bar)


      If you accidentally left out one of those equal signs, the code would still compile.

    3. Re:Written exams are stupid by DEBEDb · · Score: 1

      So why the hell not add a little feature
      to the compiler to say "Would you like me to
      insert the semicolon into your source code now?"

      --

      Considered harmful.
    4. Re:Written exams are stupid by Anonymous Coward · · Score: 0

      And a calculator will give you the correct multiplication tables, but should you be allowed to use a calculator in grade school while learning to multiply?

  14. There is no fair way... by march · · Score: 1

    There is no fair way to test someone's knowledge. Some are better at written tests, so are better at "projects", etc.

    Written tests do test certain kinds of knowledge while projects test another type of knowledge.

    Your professor should be using both to judge your abilities (and hence your grade - which is another false metric, but better than nothing).

    And... in life, you *do* have to do thing you don't like / aren't good at, so I'm afraid, you are going to have to get used to it.

    That said, don't drop out - the formal education is invaluable. It will be the only time you get to cover a significant part of a subject. The learn-as-you-go model, while getting you a salary sooner, doesn't round you out enough. Don't forget the humanities and economics courses as well (I can't believe I just typed that!) - I did and have paid the price.

    1. Re:There is no fair way... by DaveAtFraud · · Score: 1

      Exams primarily test how well you take the exam. There are some people out there who test "well" and there are others who don't but who, by other measures, know the material equally well. Unfortunately, exams are one of the few metrics available in a formal education environment that give some measure of the individual's knowledge with little or no room for cheating and can be accomplished in a reasonable amount of time.

      I used to teach math at the junior college level and never liked it that some people just had trouble under the pressure of a test. I gave them the benefit of the doubt to the extent I could but the bottom line was that, if somebody could do the work AND show they knew the material on a test, I had to grade them higher than someone who seemed to know the material but had trouble taking the test. I didn't have a brain probe to use to see if the people who couldn't take a test really understood the material.

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
  15. I agree by Bob+Kronkel · · Score: 0

    Writing code on paper is definitely not the same as using the old keyboard. Its kind of rediculous that they would make you code on paper, actually.

  16. dumb testing by Anonymous Coward · · Score: 0

    I try not to worry about it too much personally and just get the basic structure and as much of the syntax as I possibly can right.

    It's a stupid way to test if you ask me. I find the same strategy even more annoying in the job interview format. You're asked a bunch of nitpicky technical questions while sitting around a table with a bunch of people staring at you, and no computer in sight. With a system at your fingertips you'd be able to find the answer or solve the problem in minutes, while at the same time demonstrating your methods.

    I've noticed this interviewing technique has become more prevalent since the downturn. The idea seems to be to make you feel stupid so they can offer you less money.

  17. 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"
    1. Re:Hopefully the prof will cut you some slack by ROBOKATZ · · Score: 1

      But that's not what he's talking about. He is basically saying, "I'm incapable of writing code when I'm not sitting in front of a computer."

    2. Re:Hopefully the prof will cut you some slack by alanwj · · Score: 1
      Hopefully the instructor will realize that everyone drops a ; occasioanlly (however forgetting ; altogether is something else)

      I never, ever, forget a semicolon. The problem is usually the other way around for me. I tend to find semicolons at the ends of my sentences in Lit papers while proofreading, or at the end of equations in math classes.

      - Alan

    3. Re:Hopefully the prof will cut you some slack by Anonymous Coward · · Score: 0

      when you're writing you don't misspell things very often... there are a lot of missed keys on the computer

    4. Re:Hopefully the prof will cut you some slack by be-fan · · Score: 2

      How true. I think they should just formally introduce the semicolon as the method of seperating statements in math problems. Makes life so simple. Besides, if Perl does it, it must be right!

      --
      A deep unwavering belief is a sure sign you're missing something...
  18. stravinsky by splorf · · Score: 2, Interesting
    Stravinsky wrote in his autobiography about his composing habits. As a student, he'd sit in front of his piano picking out melodies, playing them different ways and changing them til he got them the way he wanted, and then he'd write them down. He envied composers like Mozart, who'd compose entirely in their head and then write the composition directly on paper, and he thought maybe he wasn't doing something right. So he asked his composition professor about the problem.

    The professor replied basically "there are two kinds of composers: those who use an instrument when composing and those that don't. You're one of the ones that does. Don't worry about it". Stravinsky stopped worrying and did fine.

    Sounds like it's the same way with programming.

    1. Re:stravinsky by aequivoca · · Score: 1

      Actually even Mozart didn't compose entirely in his head--he'd spend plenty of time working out his ideas at the piano before committing them to paper. The notion that he composed in his head has been reinforced by "Amadeus" and a long tradition of over-romanticized biography, which recent musicological scholarship has refuted.

      This is not to say Mozart wasn't a genius, of course. And he certainly could compose in his head much better than, say, I could write code in my head.

    2. Re:stravinsky by Xife · · Score: 1

      It's Computer Science not computer artistry.

      Do Fluid engineers stick bigger and bigger elbows on a pipe until they get laminar flow?

      No they estimate the viscosity, angle on the pipe and flow rate and they calculate it.

      Algorithms aren't artistic magic (like music, photos, stories and other right brained endeavors that appeal to mood and the human soul). They are structured and require forethought with the proper amount of big picture direction.

      Programs are fairly similar to geometric proofs. You assemble simple statements of truth to derive a larger truth. (simple tests and statements of behavior to create a larger test or behavior).

      --
      ---- Smokin' another sig.
    3. Re:stravinsky by splorf · · Score: 1
      Algorithms aren't artistic magic (like music, photos, stories and other right brained endeavors that appeal to mood and the human soul). They are structured and require forethought with the proper amount of big picture direction.
      Yes but the part requiring forethought is often tiny compared to the details that need to be written down. Programs are more similar to traffic directions than geographic proofs. Think of how you could get to London if you had to leave tomorrow (fairly obvious steps form in your head immediately). Now start writing them down: pick up the phone. Call travel agent. Reserve a ticket. Hang up the phone. Go to your front door. Open the door. Walk through the door. Close and lock the door. Walk to your car. Get in the car. Start the car. [Insert another 20 or so steps that could be summarized as "drive to the airport".] You get the idea.

      Some people like to visualize all the code before they even start typing it. I do that sometimes. Others like the feedback of seeing each statement on the screen before entering the next one. Either way, the individual lines of code are so many levels away from the idea you're implementing that the bits about structure and forethought are just a platitude. Yes of course you need structure and forethought--the "compose at the keyboard" question is about what you do after you've done the forethought part.

    4. Re:stravinsky by Xife · · Score: 1

      You have a valid point.

      Every CS exam I ever took was a lot closer to: Pick up phone, call travel agent, etc.

      Than it was to:

      fd = open(/dev/AmericanExpressTravel);
      send(fd, reservation);
      etc.

      1) Paper with no reference materials drives the CS student towards a language neutral sequence that provides a building block for his future as a programmer.
      2) If you attend class and take notes you'll have a good feel for whether you can say "Drive to Airport" as a shorthand for 20 odd steps. If examined by computer you would be compelled (by compiler or by ease of entry) to enter and debug functionality that was not the point of the Prof's testing purpose.
      3) In this environment you cut to the meat of making sure your binary tree balances correctly making for less text for you to write and the prof to grade. This makes it easier for you to prove to the prof that you're a Software Engineer not a keyboard banging monkey.

      --
      ---- Smokin' another sig.
  19. This is A Big Problem... by Mad+Browser · · Score: 3, Insightful

    This was my least favorite thing about CS at school...

    I am much better at solving a programming problem in front of a computer.

    Also, they are nothing like real world conditions... Do you know any programmers without reference books on their desks? That have the whole Java API memorized?

    --
    RateVegas.com - Vegas Reviews
    1. Re:This is A Big Problem... by Anonymous Coward · · Score: 0

      In my College we have written tests on the Java API (1.3). For each test, we are supposed to know one package, say java.io.*. They will then give you a couple of random classes from that package and ask you fill out all the missing methods, protected variables and whatnot.

      It forces you to learn the language you are using and it helps a lot when you are actually sitting there doing real work.

    2. Re:This is A Big Problem... by Doctor+Memory · · Score: 1

      nothing like real world conditions

      Bah. I once wrote a couple hundred lines of code while sitting in a bar. I had an idea, grabbed a band flyer out of the trash, borrowed a pen from a barmaid and cranked it out over a couple of beers. Real Programmers write code any time, any where, on any thing.

      --
      Just junk food for thought...
    3. Re:This is A Big Problem... by DEBEDb · · Score: 1

      Real Programmers write code any time, any where, on any thing.

      I wonder if there's a geek with a "Hello, world!"
      tattoo anywhere out there...

      --

      Considered harmful.
    4. Re:This is A Big Problem... by 0x0d0a · · Score: 2

      Yes

    5. Re:This is A Big Problem... by 0x0d0a · · Score: 2

      I have a sudden suspicion that Sun gives this school funding...

  20. 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.

    1. Re:Written exams are fine... by Dr.+Zowie · · Score: 2

      Likewise if you code a quicksort where a bubblesort would be more appropriate! (those constant terms can sure kill...)

    2. Re:Written exams are fine... by e40 · · Score: 2

      My course work goes way back (80-84). We never had to write anything other than small snipits of code at UC Berkeley.

    3. Re:Written exams are fine... by bwhaley · · Score: 1

      Here at CU in Boulder I have never had to write a real code segment on paper. Sometimes we have to fill in a line here and there but never come up with a sorting routine. They tend to test us a lot more on fundamentals and realize that implementation comes with time and experience. I feel that this is the right approach.

      Now if only math exams were the same way.. err wait, I guess that's what proofs are for.

      --
      "I either want less corruption, or more chance
      to participate in it." -- Ashleigh Brilliant
  21. No need for large portions by jacobjyu · · Score: 2, Insightful

    I find that the CS tests that I have encountered don't require me to write a large portion of code, just snippets and tiny routines. Usually, a test problem leads us down a long list of sub-problems that, at the end, proves to the professors that you can indeed reason about programming, even though you haven't written a large portion of code.

    Testing the ability to write large chunks of code is not reasonable on a written exam, and then, usually your grade is determined by your handwriting speed and neatness :)

  22. Blah by fizban · · Score: 1

    Get used to it. When you get in the real world, you oftentimes have to take a written test during an interview.

    If you can't think on the fly, you'd better start practicing.

    --

    +1 Insightful, -1 Troll. What can I say, I'm an Insightful Troll.

  23. Writing code (not typing it) is *hard* by seanadams.com · · Score: 5, Insightful

    ... because you don't have a compiler to tell you when you make mistakes.

    This is why it's an outstanding way to test people's knowledge. Anyone can make a program work given a compiler and sufficient time. If you can do it with just pen and paper, and remember the syntax without having other code in front of you, then you know your shit.

    This is why it's a great test for interviews. You'd be amazed how many "senior C developers" we interviewed at my last company who couldn't write push() and pop() for a linked list.

    1. Re:Writing code (not typing it) is *hard* by Sloppy · · Score: 1

      because you don't have a compiler to tell you when you make mistakes.

      Please tell me you don't actually zing people on missing semicolons and undeclared variables, in your interviews.

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    2. Re:Writing code (not typing it) is *hard* by MrBandersnatch · · Score: 1

      Funnily enough in the last 6 years of programming (C++) I have never ONCE had to write a linked list ...mainly because I have a set of reliable containers available via the STL. In fact if I hadn't have been giving myself a refresher on C++ recently I wouldn't be able to do this myself. Waaaaaay back when I was coding in C I STILL wouldn't have been able to do it without resorting to a reference book because I had a set of libraries which implemented this. Its something I did ONCE when learning C and have NEVER had to impliment myself again.

      And this is the problem with coding/programming/interviews/tests these days.

      There are so many things we now will do ONCE and then never touch again because technology/jobs move on. All a test/interview shows is what a candidate may know about a narrow topic area at a given time. It shows NOTHING about their ability to solve problems in real world conditions under their own recognisance.

      If youre going to judge how good candidates are based upon something that they may not have touched since graduation then I suggest you stop looking for senior developers and start hiring graduates who have more recent experience in the subject area you are testing; rather than the diverse areas which they should have.

    3. Re:Writing code (not typing it) is *hard* by seanadams.com · · Score: 2

      Please tell me you don't actually zing people on missing semicolons and undeclared variables, in your interviews.

      I certainly do, but what's more important is whether (s)he got the basic algorithm correct. Writing a linked list is something they teach you in high school programming courses, and even if you've done all your programming in Perl since then, you ought to be intimately familiar with the *workings* of push and pop. Did you get the special cases right for empty lists and lists with only one item? Are there any places where you might derefence a NULL?

      This is basic, basic stuff, and I swear at least 90% of our applicants for $70K+/yr programming jobs couldn't do it.

    4. Re:Writing code (not typing it) is *hard* by WhaDaYaKnow · · Score: 1

      Writing code (not typing it) is *hard*

      I know, I haven't lifted a pencil in years.

      I thought writing (by hand) was officially declared obsolete.

    5. Re:Writing code (not typing it) is *hard* by seanadams.com · · Score: 2

      Are you kidding me? A linked list is something you'd forget since graduation? You might not remember the code verbatim, but if you've been programming for many years, you should have no trouble at all figuring it out in a few minutes.

    6. Re:Writing code (not typing it) is *hard* by iabervon · · Score: 3, Informative

      Writing code on paper is easy. What's hard is creating it out loud. Of course, I have no idea why you'd want to do that (although it's kind of fun).

      I know Java, C, and Scheme (and some others). I don't know Python. But I wrote most of the code of a useful utility in Python by looking at existing code. I can't think of anything wrong with doing that. If you're always writing new programs without basing them on anything previously existing, you're just wasting the work that's been done previously at your company.

      A senior C developer shouldn't need to write push() and pop() for a linked list. A senior C developer should be able to find versions already in the code base or in a library, or copy the version they usually use. It's a far more relevant test to have someone implement something complicated with a computer (and an explanation of the algorithm, even) than to implement something simple in difficult conditions.

    7. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      Heh... this year, I took the CompSci AP course at my high school. We decided in class to do the A portion, instead of the full AB curriculum (I was the only one who wanted to do AB, but didn't feel like arguing for it). The main differences between the two are that AB covers linked lists, binary trees, queues, stacks, and big-O notation, while A only covers basic arrays and matrices, etc. (AB is inclusive of A). I've been programming several years on my own in basic c/c++ and perl (okay, I started off with vb), but never got into complex data structures such as these.
      Anyways, test day arrives, and what do you know, but they've ordered us the AB test, of which we know less than half the material! I sat there and worked my ass off, and I easily figured out queues and stacks, cause they gave us the header files for their own custom classes (that was easy). For the linked lists and binary trees, I knew what a pointer was, and it took all of about 3 minutes to figure out what each was supposed to do. Writing actual code to do stuff was a different story, but I think I figured out enough to actually get a respectable score on the test. If I was able to do this, anyone who is trying to get an actual job sure as hell better be able to figure it out.

    8. Re:Writing code (not typing it) is *hard* by NullPointer · · Score: 2

      This is why it's a great test for interviews. You'd be amazed how many "senior C developers" we interviewed at my last company who couldn't write push() and pop() for a linked list.

      Sorry, but that is complete BS (bullshit for those that are acronym averse) and probably off-topic. Sure, writing push() & pop() is trivial, but for some of us it is impossible under certain circumstances. Some of the best programmers out there suffer from "stage fright" when interviewing for jobs, and sitting in an alien environment with a bunch of folks you've probably never met before doesn't help. I've got a BS (a degree) in CS and have been writing C (among other things) code for more than 15 years now and I still can't sit down and write it out on paper. I can write an algorithm description in pseudo code, but real code must come from my fingers banging on a keyboard. In other words, habits are hard to break and how many people write their code out on paper before typing it? Maybe I live in a bubble world, but I don't know anyone who does that.

      If you really want to find the best candidate for a position in your company, don't ask them to write code on paper, ask them for some samples from previous work they've done and check their references. If you're suspicious of the source they've provided, put them in a room alone with an editor (no compiler or debugger) and ask them to reproduce something.

      My worst experiences interviewing for jobs have occurred when some arrogant jerk has asked for an on-the-spot regurgitation in compile-able code on paper of an algorithm that is trivial for any first year CS student. Some of us simply can't do it.

      Again, I'm sorry, maybe I've got an attitude problem and/or should see a therapist...

      --
      NULL
    9. Re:Writing code (not typing it) is *hard* by Furry+Ice · · Score: 1

      I'm not sure how you code linked lists, but the easiest way I know to do it only has a special case for empty lists. One item lists are like any other list.

    10. Re:Writing code (not typing it) is *hard* by nolsen · · Score: 1

      Dude, we are talking about fundamental data structures here... They're not going away. This is basic stuff, and understanding them is fundamental to being able to use them properly and write efficient algorithms. Needless to say it is pretty scary to know someone could have 6 years of programming experience and be unable to write a linked list.

    11. Re:Writing code (not typing it) is *hard* by Sloppy · · Score: 4, Insightful

      in the last 6 years of programming (C++) I have never ONCE had to write a linked list.. [snip] ..Waaaaaay back when I was coding in C I STILL wouldn't have been able to do it without resorting to a reference book because I had a set of libraries which implemented this. [snip] ... It shows NOTHING about their ability to solve problems in real world conditions under their own recognisance.

      Ugh. You've got everything backwards; I almost can't believe you're serious.

      It's fine to have to resort to a reference book, but the thing you should be forgetting and having to look up, is how to use your library (e.g. the names of functions, the order of their parameters, etc), not how elementary data structures conceptually work.

      If you can't implement a list or stack, it does show an inability to solve problems. Here's the problem: solve it! Can't? Then you're not a problem solver.

      It's ok to forget libraries and syntax; seanadams is in the minority in thinking that matters. But stacks and linked list aren't things you should have to remember -- they're something you should be able to derive and re-invent on-the-spot. If you can't whip them up ex nihilo, then your problem solving skill is ..um.. frumious.

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    12. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      I'm not sure how you code linked lists, but the easiest way I know to do it only has a special case for empty lists. One item lists are like any other list.

      That's not true for a doubly-linked list.

    13. Re:Writing code (not typing it) is *hard* by Furry+Ice · · Score: 1

      This is just silly. If a coder is hired to implement something complicated, he should be able to implement something simple. Maybe you don't recall the algorithm off-hand for linked lists, but if you can't figure it out with a few minutes thought, you're not going to be able to solve complicated problems in a reasonable amount of time. You're right that you shouldn't *have* to implement linked lists, but it's a good test of simple problem solving skills.

    14. Re:Writing code (not typing it) is *hard* by DaveOMatic · · Score: 1
      You'd be amazed how many "senior C developers" we interviewed at my last company who couldn't write push() and pop() for a linked list.
      Thank you for making a guy whose only programming experience is a high school course two years ago feel smug and clever. Much appreciated.
    15. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0
      Are you kidding? You seriously could not write a simple linked list? I mean come on. I could understand forgetting how and AVL tree works but a linked list? I mean, other than a simple array, this is as basic as you can get. I'm sorry man, but I think you need to review your basic data structures and algorithms. I mean, what if you had to write this stuff from scratch because you were an an embedded environment.
      I agree that write code on paper isn't necessarily a reflection of how well they can solve problems in "real world conditions", but a singly linked list is about as basic of knowledge they can have. If you've forgotton how to write one, it means you don't remember how they work. And if you don't remember how something as simple as that works, then what else don't you remember. Part of programming is KNOWING your basic data structures and algorithms and when to use them. Maybe you were using STL very poorly if you didn't know how they operated.

      Would you trust a doctor that said they could do organ transplants and brain surgery, but if they had to do CPR they would have to look it up?

    16. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      While I agree with your overall point, push() and pop() are for stacks, not linked lists, you dummy!

    17. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      I wouldn't hire you. I might be missing out on a good programmer, but that's OK. I'm also weeding out a TON of BS candidates. As long as it's a good differentiator, it's sufficiently accurate for an interview. We're not talking 'beyond a shadow of a doubt' here--interivews are based on a preponderance of evidence.

    18. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      Yes and no. You can implement a stack as a linked list, in which case the algorithm should be pretty straightforward, if a bit weird. Thus, the question would be both listening comprehension AND coding on the fly. One of the questions I routinely ask in interviews is "What's the difference between a bridge and a switch?"--I'm usually merciful and stop them if they start talking layer 3, but it's a good test of who heard the ACTUAL question, vs. the question they expected to hear.

    19. Re:Writing code (not typing it) is *hard* by Equinox · · Score: 2, Interesting

      There is one thing my AP CS teacher in High School did that I like. After we all bitched and moaned about handwriting code, he would, from then on, disconnect all machines in the room from the network, image them, then let us go. Here's the caveat: the compiler would only run 5 times, print the code, then delete itself. It didn't matter how long it took us (one guy took three days to complete the test,) but you only got 5 compiles. Incidently, under that pressure, I usually only needed 2 or 3. :)

    20. Re:Writing code (not typing it) is *hard* by SilentStrike · · Score: 0

      It isn't suprising to me that the person who stresses the ability to write compileable code without a computer also things push and pop are linked list operatings, not stack operations. Yes, I know a linked list can serve as a stack, but they are different concepts entirely.

    21. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      Doubly linked lists shouldn't need any special handling for 1 length lists. Do you mean circularly linked lists? I can see one implementation that would need a special case there but you can avoid that without too much trouble.

    22. Re:Writing code (not typing it) is *hard* by WhaDaYaKnow · · Score: 2, Funny

      "What's the difference between a bridge and a switch?"--I'm usually merciful and stop them if they start talking layer 3

      I agree. It's when the start talking cars and lights turning on and off that you want to pay attention.

      (sorry,- I'm in my Friday mood...;-))

    23. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      It's a little OT but unless you do it using a LUT (adding a lot of complexity that only might be worth it if you wrote your own memory manager too), you have to use a special case for popping an item from a list with only one item in.

      Head Ele1 Ele2
      Next: Ele1 Ele2 NULL
      Prev: NULL Head Ele1

      int pop() {
      1: head->next = head->next->prev;
      2: free(head->next->prev);
      3: head->next->prev = head;
      return 1;
      }

      Special case 1: empty list = segv on line 1
      Special case 2: 1 element list = segv on line 2

      I fail to see how you can write it as to merge those two into the same special case or how you can eliminate one of them.

      int pop() {
      if(head->next == NULL) return 0;
      if(head->next->next == NULL) {
      free(head->next);
      head->next = NULL;
      } else {
      head->next = head->next->prev;
      free(head->next->prev);
      head->next->prev = head;
      }
      return 1;
      }

      Ok, I go out of my way to avoid declaring or even naming the struct so shoot me.

    24. Re:Writing code (not typing it) is *hard* by tgibson · · Score: 1
      Anyone can make a program work given a compiler and sufficient time.

      Then why do you need to test them?

      There's a lot of banter about how CS is about theory and not syntax. Yet for the vast majority of students, a BS in CS is their terminal degree, after which they go into the world and work.

      Give the students a take home test that requires them to show that they know their theory by applying it. The take home test deliverables would include at least 2 components:
      1. A written "debate" (or justification if you like) of the algorithms considered, and the one(s) chosen for the given problem
      2. The problem solved through a coded solution
      If the problem is rich, authentic, and complex enough, only those who truly know the theory will be able to apply it.

    25. Re:Writing code (not typing it) is *hard* by numo · · Score: 1

      This is why it's an outstanding way to test people's knowledge.

      It is not. In the real life your goal is to solve a problem with the tools at hand. Syntax is quite unimportant, the compiler will catch your typos and after a few days you don't make this type of mistakes. What is important is to know what your environment provides - e.g. what libraries there are and which methods are appropriate for the particular problem.

      I don't know perl - it's hard to admit it on slashdot :-), but it is a fact. But I wrote a few utilities in perl. I don't remember every aspect of sh, csh, awk etc., but I did solve problems in these languages. I analyse, design and code in C++ - there was at least 6 months to 1 year between knowing the syntax well enough and knowing how to use C++ efficiently.

      Written exams are okay, if the examiner ignores minor syntax errors, accepts the same number of bugs he/she would make and concentrates on the approach to the problem. Otherwise he/she is a bad examiner and shouldn't be examining others.

    26. Re:Writing code (not typing it) is *hard* by sawanv · · Score: 1

      push() and pop() is for a STACK, you dickhead.

      No wonder its a "former company" now.

    27. Re:Writing code (not typing it) is *hard* by MrBandersnatch · · Score: 1

      Ouches :)

      Yes I remembered how a linked list works, yes I vaguely remembered how to implement it; but could I have implemented it well or quickly without having brushed up on it? Probably not.

      Does that make me a bad programmer? Maybe. However if I HAD to implement a linked list I know enough NOT to do it "ex nihilo" - there is more than enough literature out there for me to review and do the job well rather that relying on what I thought I knew. If I didn't do the above then I would consider myself a bad programmer.

      There are many ways of solving problems peeps. An exam (or interview) allows people to only solve problems using minimal resources (IQ & memory). While I'm sure that most programmers have incredible IQs, eidetic memory etc; lesser gifted individuals such as myself have to make do with curiosity, dedication, hard-work and well thumbed books. Yup - I sometimes get pounded into the ground in exam conditions (and interviews that attempt to recreate exam conditions). However in the real world people like me are the ones creating rock solid programs and systems based on tried and tested techniques because there is one thing we DO know for certain :- We dont know it all and what we do know someone might know how to do better.

      BTW, here's a suggestion. Next round of interviews give people a written test to complete before the interview. Make it hard - as hard as possible. In fact get someone else to create one that even YOU cant answer. Then do your normal interview. I guarantee you'll get a better sense of a candidates strengths rather than just discovering their weakness's. Which is what many interviews (and exams) fail to achieve.

    28. Re:Writing code (not typing it) is *hard* by 0x0d0a · · Score: 2

      A senior C developer shouldn't need to write push() and pop() for a linked list.

      I agree (though C is the the language where you'd most likely have to do this yourself) -- however, a senior C developer should be able to write push() and pop() for a linked list.

      They want to filter out idiots quickly. I'm sure that they have more advanced questions as well.

      Also, to the person who said that they'd tell them point blank that this is a bad idea -- if the first thing you do (this is at a *job interview*) is tell them that you're not going to do what they want you to do...well, you aren't making the greatest impression in the world.

    29. Re:Writing code (not typing it) is *hard* by 0x0d0a · · Score: 2

      I hope that's a doubly-linked list.

    30. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      Simple:

      head ele1 tail
      next: ele1 tail NULL
      prev: NULL head ele1

      int pop() {
      if(head->next->next == NULL) return 0;
      head->next = head->next->next;
      free(head->next->prev);
      head->next->prev = head;
      return 1;
      }

      PS Proofread your code next time. Your line one is wrong

    31. Re:Writing code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      Aha! Ok, I see where you're coming from now. Yes, I use a different memory management style so I can avoid the free/check before the free.

    32. Re:Writing code (not typing it) is *hard* by sir99 · · Score: 1
      I have never ONCE had to write a linked list ...mainly because I have a set of reliable containers available via the STL.
      I recently had reason to write my own linked list in place of the STL list. Why? Because profiling my program showed me that about 80 percent of the cpu time was being used allocating and deallocating list nodes, one at a time.

      Now, I could have written an allocator to use pooled memory, which would have improved things a lot. But I figured if I was going to do all that work, I might as well do one better, and write my own list with special memory management. I made it preallocate and create a bunch of lists, so that whenever a list was needed, it just grabbed a complete list from the pool, and when a list was freed it was put back into the pool. The best thing about this was that the pool was a stack, so the list that was grabbed from the pool had probably already been used, and thus was already an appropriate size. Furthermore, no extra linking needed to be done, just a couple twiddled pointers per list.

      It was a pain in the ass, but well worth it; the program had a speedup of about 2.5x.

      --
      The ocean parts and the meteors come down
      Laid out in amber, baby.
  24. I also by Kallahar · · Score: 2

    I also had a similar problem. When I code, I keep reference materials and the web close at hand. Whenever I have a question about syntax, style, examples, whatever I quickly look it up. In a test environment you're expected to have everything memorized and at your instant recall for obscure things. I always hated that I was being judged outside of my normal working environment when I had to code on paper.

    Travis

    1. Re:I also by Arandir · · Score: 4, Insightful

      If the test is asking you to use obsure Motif function calls or NT sockets, then you have a point. But if you're being asked to write a linked list or balance a binary tree, then it is perfectly fair. These are skills you are expected to know as a software engineer.

      Just because you have a calculator is no excuse not to learn how to add.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    2. Re:I also by Anonymous Coward · · Score: 0

      Don't you think it would be a good test of your skills as a coder to see if you can code something as trivial as an exam question without *having* to resort to reference material???

    3. Re:I also by Anonymous Coward · · Score: 0

      I consistently get A's on my take home programming assignments, yet, I mostly get C's on my exams. It's a lot different writing code to your favorite music group, drinking your fav drink, chatting with buddies for breaks, and having resources in front of you to make sure you doing things right, than having to remember every ; for a test. Isn't that why we have debuggers and why many CS Grad Students research on making them better?

      If they want to test on petty stuff, why the hell do they request all the grants for research on debugging?

  25. Seems fair to me by ROBOKATZ · · Score: 2

    If you can't think through a solution before committing it to code then you clearly don't know your stuff as well as you should.

    1. Re:Seems fair to me by Mad+Browser · · Score: 2

      Don't forget you only have 50 minutes to do the whole exam... Not a lot of time to "think through a solution" and then code it (on paper). You have to RUSH.

      --
      RateVegas.com - Vegas Reviews
    2. Re:Seems fair to me by Llywelyn · · Score: 2

      Except if I skip over a line of code in a program I generally catch it before I attempt to compile the code.

      On paper if I catch it later its bad (no space for it) and if I don't catch (because I am in a hurry) it then its worse.

      --
      Integrate Keynote and LaTeX
    3. Re:Seems fair to me by Anonymous Coward · · Score: 0

      lmao.. have you worked as a commercial programmer?

      Do you not think that time pressure exists in the real world?

    4. Re:Seems fair to me by ROBOKATZ · · Score: 1

      Unless your professor is a complete asshole (hey, it happens), you should have plenty of time -- look at it this way, you'll spend a lot less time erasing then everyone else.

    5. Re:Seems fair to me by T-Ranger · · Score: 1
      Then use line number, and cout by 5, and insert new lines at the end with the right line number.

      Yes, my first computer was a C=64, why do you ask?

    6. Re:Seems fair to me by |<amikaze · · Score: 1

      would this be acceptable in, say, C? Basic isn't the only programming language taught these days...

    7. Re:Seems fair to me by Anonymous Coward · · Score: 0

      Did i miss the memo from God saying that humans no longer make mistakes?

    8. Re:Seems fair to me by fuckface · · Score: 1

      Learn to code in unified diff format! :)

    9. Re:Seems fair to me by ROBOKATZ · · Score: 1

      Make a mistake, lose a point. That's what tests are about.

    10. Re:Seems fair to me by metal_llama · · Score: 1

      I disagree. While any experienced programmer should know the basic syntax requirements of any language they work in, an integral part of the whole coding process is the computer. It's a psychological connection: coding and the keyboard/computer. e.g. the physical act of tapping on a keyboard and the sound of keys can help you code more effectively. Coding in such an unnatural way as writing with pen and paper is detrimental to ease of coding and could easily throw off even an experienced programmer. Besides, the thought process of coding ususally overlooks all the little details, like ;s and whatnot. Those are things you add in after you get your thoughts out, if you tend to overlook them the first time through. It's this thought process that makes coding an incremental process, where you start with your thoughts and build them into a form that can be compiled. It's this building process that makes written tests requiring large, accurate blocks of code to be written (especially under a time constraint) to be extremely unfair and innacurate as a measure of any programmer's skill.

      --

      ~metal_llama out.

      ---
      move every sig!
    11. Re:Seems fair to me by ROBOKATZ · · Score: 2
      If you're using an incremental design methodology on a test over material you should know cold, you probably don't deserve to do well on test anyways.

      The point of a test is not to judge your "real world skills" but how well you learned the specific material that the test covers.

    12. Re:Seems fair to me by T-Ranger · · Score: 1
      Whatever. Or write down one side of the exam book on your first pass, and when you come back to make corrections put it on the otherside.

      If your being tested on logic as opposed to syntax... Its about the same as essay questions.. If its a language class, spelling counts. Spelling dosent count with other classes, but if its horrificlt wrong, or you spell the name of budy youve been studying for 4 months wrong then there going to take off points.

      But I definitly hate chickenshit spelling corrections in exams as much as I hate chickenshit spelling flames..

    13. Re:Seems fair to me by jci · · Score: 1

      I don't think there is any shame in the use of the long arrow for insertion of code, or the "carrot". The footnote type thing might work too.

      When I write out code, some items like variables I forget to declare. Usually I have (for example) already declared 3 integers, so making the semicolon to a comma, then appending the new integer to the end works. As for prototyping a function, sometimes 'compressing' some variable declarations to single lines gets extra lines needed as well.

      If you are one to have single lines for brackets, it is another chance to only displace a couple lines, by moving the bracket to the end of the previous line.

      Sometimes a very slight bit of readability can be sacrificed for squeezing in that extra line of code for written code tests.


      As for being hurried, I guess the only way to help that would be to have a good plan/diagram that can be checkmarked for items done.

    14. Re:Seems fair to me by envelope · · Score: 2

      What a bunch of crap. "Psychological connection" ?? Pure bullshit. You're dependent on your environment's syntax checking or statement completion, and obviously unable to think thru a problem. Writing code is nothing more than defining a problem solution in specific syntax. If you can't do it on paper, you have a serious problem.

      --

      appended to the end of comments you post, 120 chars
  26. I can't solve your problem... by Snarfvs+Maximvs · · Score: 1

    ...but I agree it's moronic. I took an accounting class many moons ago, and the exams went something like this:

    "OK. You have to balance this company's books in the next 3 hours, but you aren't permitted to use any reference material whatsoever. And you're limited to a non-graphing calculator, a pencil, and an eraser. Go!"

    For the computer graphics course I took, I got an A in the practicum portion and a C+ in the classroom portion (separate classes with separate grades). So, I demonstrated that I could apply all of the techniques I learned, as well as come up with a few of my own, but since I couldn't remember some formulae I did less than spectacularly on a written exam.

    Whatever happened to preparing people for the REAL world???

    --
    -----------------------

    To understand recursion, one must first understand recursion.

    1. Re:I can't solve your problem... by numbuscus · · Score: 1

      Whatever happened to preparing people for the REAL world???

      If you look at the history of university education, you will notice that it's not about the "REAL world". It's about intellectual prowess. If you want "REAL world - you need to go to a trade school. This is the problem I had at University - especially in the beginning. I was raised with an emphasis on "common" sense. My rural education sucked and college was a major shock - especially since I was in an 'intellectual' major with much emphasis on theory and none on application.

      This is why I think the US needs a major overhaul in its post-H.S. education system (and H.S.).

  27. written exams... by Drakker · · Score: 1

    You know whats worst with written exams? There's no cut n paste, auto indent, backspace, undo button, color changes for variables and stuff. All you have is a loosy pen and an eraser... and I bet anyone that knows how to code actualy types faster on a keyboard than they can write with a pen.

    Maybe once electronic paper is out and used in schools, the situation will be a bit better. :}

    1. Re:written exams... by jcast · · Score: 1

      I don't (generally) type faster than write---because I think faster (yes, that much faster) when I've got something between my fingers :)

      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
  28. Exam Coding Sections by Hheero · · Score: 1

    I also disagree with large sections of 'write the code' on exams too. The profs. should incorporate more creative questions that you have to think about and possibly write pseudo-code to solve. After all they always say, "don't worry so much about syntax."
    And often when I'm gonna write an app at home, I'll just use the ol' pen and pad to get the concept and write some pseudo-code with a few method headers but don't usually write out much code. But maybe I rely on the compiler too much for syntax?

  29. its retarded by illerd · · Score: 1

    having students write out code on paper is assinine. I used to lose all kinds of points for forgetting semi colons. Granted, its a stupid mistake and its my fault, but one trip through the compiler and all is well. Is that mistake really worth losing 2 points? I still forget semicolons all the time. Why wrack my brain over it when the compiler will babysit me? Its kind of like spell check. Who really cares what the correct spelling of necessity is? Close enough will do.

    I think all CS tests involving algorithms should be in pseudo-code. If you want to test a students knowledge of syntax, make them write a program. If you really have to do it on paper, teach them BNF first and then test them on it.

    Before you all start calling me a sloppy programmer, remember i'm just talking about semi colons, here.

    1. Re:its retarded by Anonymous Coward · · Score: 0

      I still forget semicolons all the time.

      Lazy and sloppy. And a cavalier attitude to boot. You know you have a problem but indicate no desire to correct it. Don't apply at my company.

    2. Re:its retarded by Anonymous Coward · · Score: 0

      Wow, for someone in a technical field you're quite half assed.

  30. An anlogy by TrumpetPower! · · Score: 2

    A written, computerless computer exam is like having somebody prove they're a chef by watching what they do in the bathroom. Even if you can meet some definition of success, it don't mean diddly.

    b&

    --
    All but God can prove this sentence true.
    1. Re:An anlogy by jd142 · · Score: 2

      A written, computerless computer exam is like having somebody prove they're a chef by watching what they do in the bathroom. Even if you can meet some definition of success, it don't mean diddly.


      Two things. First, a good chef should know how to create a dish without a recipe -- this means knowing what materials are needed to produce a specific effect and in what proportions. I think it would be applicable to test a chef's knowledge by asking them to write down a recipe using a specific set of ingredients. The good ones and the ones with lots of experience know the way different foods combine in the mouth to create a specific taste, so they don't need a banana and an onion in front of them to know that you won't be able to create a decent desert with those two ingredients.

      Secondly, I believe you meant to write "you'll be judging them on their piddly." Or maybe not. Seemed like there should be some joke there. Judging them in bed. . . if you can meet the definition of success, it's still just diddling? Or something like that.

    2. Re:An anlogy by Arandir · · Score: 1

      Absolutely! A good chef makes his decisions at the grocers. The grocer is out of leeks. What does he do?

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    3. Re:An anlogy by Anonymous Coward · · Score: 0

      so they don't need a banana and an onion in front of them to know that you won't be able to create a decent desert

      Wanna make a bet? Think sauteed bannanas topped with caremilzed onion, maybe served flambee....

    4. Re:An anlogy by jcast · · Score: 1

      ``Computer Science is no more about computers than astronomy is about telescopes''---Dijsktra (more or less). If you want to learn programming without understanding C.S., go take MIS.

      p.s.: /.: Its Friday, I'm tired; I'm going as slow as I can. And STOP CALLING ME COWBOY!

      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
  31. My favorite editor ... by amstrad · · Score: 1

    ... is my whiteboard. I needed a whiteboard at my exams; bastards wouldn't let me bring it

    1. Re:My favorite editor ... by Mr.+Shiny+And+New · · Score: 1

      Amen! I had to write a software engineering exam where most of the exam was UML diagrams. You can imagine how messy these diagrams became after mistakes were discovered and I forgot to add stuff in the "first time around". I personally hate diagramming on paper since I can't easily erase stuff and move it around.

      That said, everyone in an exam situation is under the same circumstances, so I don't think that pencil-paper exams are unfair.

    2. Re:My favorite editor ... by TiggerStripe · · Score: 0

      My favourite editor is your wife but unfortunately she won't give me head during exams.

      --
      --you have been trolled--
  32. Learn this skill by Arandir · · Score: 5, Insightful

    This is a skill that you need to learn. When you go out on a job interview, you will most likely be given a marker and white board and told to code something. If you're going to freeze up without a monitor and keyboard in front of you, the employer will be very hesitant.

    It seems that you've associated syntax and semantics with the visual cues of a computer. That's not the same part of the brain that answers exams. So you need to retrain yourself. Here are some things you can do to relearn programming:

    A) Stop using IDEs. Use the plainest text editor that you can find to write your code. Turn off any syntax highlighting and code completion.

    B) Design your code before you write it. Use UML, flowcharts or whatever, but design it first. Then when it comes time to code you will know where you are going.

    C) Write code away from a computer. Use a pencil and paper. I didn't have a computer when I was in college (very few people did). So I coded by hand on paper, then went to the lab to type it in.

    --
    A Government Is a Body of People, Usually Notably Ungoverned
    1. Re:Learn this skill by nitemayr · · Score: 1

      This sounds about right

      I spent a good deal of time in my primary programming (years one - three) courses writing cod eon paper before being allowed to code it on a computer at all. I have to thank my profs for that becuase they forced me to plan out a chunk of code ahead of time before I sat down and had to puzzle it all out later on. This also alloed me to standardize my variables and their uses WAY ahead of time so that I didn't come up with them on the fly.

      --
      Hello Kettle,
      You, my friend are as black as pitch.
      With love, Pot.
    2. Re:Learn this skill by Hheero · · Score: 1

      So I coded by hand on paper, then went to the lab to type it in.

      Writing code on paper isn't a skill. And as far as your comment of writing it first then typing it in is fine but that has nothing to do with an exam where you don't have the option to use a compiler. Some profs deduct for mismatched parens which is not a logical error but rather a syntax error.
      This would be like if an English prof told you to write a term paper and you did extensive research but lost points for bad grammar. It matters, but is it enough to dismiss the research done?

    3. Re:Learn this skill by Llywelyn · · Score: 3

      "Stop using IDEs."

      No reason to do this in particular--it doesn't help you find problems and it doesn't help you check for errors later in better highlighted code.

      "Design your code before you write it."

      Actually, this is the critical part. If someone hands you a marker and leads you to the white board, draw a UML diagram and write pseudocode. Do complexity analysis, proof of correctness, and draw generalizations and associations.

      If they demand C++, you don't want to be working for them.

      "Write code away from a computer."

      1) I'm dysgraphic, I score in the 30th percentile on handwriting tests.

      2) This is a pointless exercise and serves no useful purpose.

      --
      Integrate Keynote and LaTeX
    4. Re:Learn this skill by Arandir · · Score: 1

      You missed the main point. The reason for not using an IDE, syntax highlighting, and even the keyboard is to retrain your brain. You've learned syntax by associating it with particular visual and motor cues. This is what needs to be changed if you want to do well on paper and pencil coding tests (and job interviews).

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    5. Re:Learn this skill by Arandir · · Score: 2, Insightful

      This would be like if an English prof told you to write a term paper and you did extensive research but lost points for bad grammar. It matters, but is it enough to dismiss the research done?

      Bad grammer on an English test? Gee, that sounds like arithmetic errors in a calculus test!

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    6. Re:Learn this skill by e40 · · Score: 5, Insightful

      I've hired a lot of people over the years and I'm completely against this type of on the spot exam.

      I find that people's performance over the long haul has nothing to do with a 30 minute interview coding session. Some people don't work their best when under pressure, especially when they are interviewing. A lot is riding on that interview, and the stress does very odd things to people.

    7. Re:Learn this skill by prockcore · · Score: 5, Insightful

      "When you go out on a job interview, you will most likely be given a marker and white board and told to code something."

      Most likely? I doubt it. Just because you may have done it doesn't mean everyone does. I've never had to write code on a whiteboard in a job interview. I *have* had them give me a program spec and say "go home, make this work, and email it to me" That was even better in my opinion.. there wasn't a time limit, so they can judge you on how fast you work when there's no motivating deadlines, and the project can be a lot more complex than "write a 5 line routine on a whiteboard"

      Now I'm the one doing the hiring, and that's exactly what I do.

    8. Re:Learn this skill by Hard_Code · · Score: 2

      "Write code away from a computer."

      "2) This is a pointless exercise and serves no useful purpose."

      Well I don't know what a "handwriting test" is, but writing code on paper sure does serve a purpose. It illustrates that you can think through a problem and put it on paper (hopefully with a minimum of mistakes) without being at a computer. It is useful. If anything, if you are bored, you can just code with a pencil and paper for "fun".

      --

      It's 10 PM. Do you know if you're un-American?
    9. Re:Learn this skill by Chandon+Seldon · · Score: 1

      Why the hell would you want to retrain yourself to be better at coding for purpoises other than writing programs?

      That makes absolutely no sense.

      --
      -- The act of censorship is always worse than whatever is being censored. Always.
    10. Re:Learn this skill by Anonymous Coward · · Score: 0

      Go back and read the original post. Then think hard... if you can. A light may go on as you realise that you just fired your mouth (or rather fingers) while disconnected from what little brains you have.

      The guy is a C++ coder, and used C++ as a synonym for code. He wasn't criticising C++, in fact he was praising it by assuming it as a language of choice.

      Looks like they need a sign on slash dot saying "your IQ must be larger than your shoe size to post here"

    11. Re:Learn this skill by Iffy+Bonzoolie · · Score: 1

      This would be like if an English prof told you to write a term paper and you did extensive research but lost points for bad grammar. It matters, but is it enough to dismiss the research done?

      This is why partial credit is so important. Yes, grammar errors on an in-depth research paper should cost points. Should they get an F on the paper because of it? Probably not. The analogy also doesn't work because papers are done ahead of time, not on the fly. (At least research papers.) This would be comparable to compile errors on a programming project, which would be unacceptable. How badly do they take off points for grammar on an essay test question? Not too badly, most of the time. They are more interested in what you have to say.

      A better analogy is arithmetic errors on math exams (like linear algebra, calculus). It should cost points, but not the whole test. You do want to test what they learned in that class - if you want to test whether they know how to do a matrix multiplication, you should give them a grade that reflects that, even if they forgot to carry a one.

      I think it's more important to be able to get a design (API, datamodel, etc...) down on paper than the code itself.

      -If

      --
      Run a pencil-and-paper RPG campaign with your far-off friends: Gametable!
    12. Re:Learn this skill by Anonymous Coward · · Score: 0

      Obviously you never had the teachers I had. Bad grammatical and punctuation errors could be rewarded with an F.

      Wow. What a world.

    13. Re:Learn this skill by Iffy+Bonzoolie · · Score: 1

      As with everything, of course, it depends on severity. I was always fairly good with my punctuation, spelling, and grammar. But, still, requirements for an improvisational situation shouldn't be as strict as those for one where you have a lot of planning time and so on.

      -If

      --
      Run a pencil-and-paper RPG campaign with your far-off friends: Gametable!
    14. Re:Learn this skill by damaged · · Score: 1

      Uhhuh. Stress does things to people. That may be the point.

      If you're working for an really fast paced company that has crazy quick project turnaround times and if buggy can cost the business millions of dollars, you'll be under stress. And you'll have to code. Stress + Time Restrictions = Reality for some companies. Maybe not yours, but some.

    15. Re:Learn this skill by HiThere · · Score: 2

      Yeah... writing code on paper gets it ready to turn in to the keypunch operator.

      And that's ALL the good it's ever done me.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    16. Re:Learn this skill by Anonymous Coward · · Score: 0

      Very true. I find Ide's are a pain in the ass.
      (Except for html editors, they are indispensable)
      Notepad, vim, or kedit.

    17. Re:Learn this skill by billbaggins · · Score: 1
      "2) This is a pointless exercise and serves no useful purpose."

      I have a small whiteboard and set of markers that I use for this "pointless exercise" practically every time that I code something. Working on a computer, I typically can't see enough of the code to be able to tell if I'm doing something completely stupid or not. So I sketch everything on the whiteboard. Ok, not code per se, but flowcharts, or maybe an API listing, or whatever seems appropriate, and usually enough that the actual coding is trivial. Once I've got it firmly set in my head, then I get going.

      Your mileage may vary. It probably does. But IMHO it's a lot easier when zapping out bad code is just a fingerswipe away...

      --
      "The best argument against democracy is a five minute chat with the average voter."
      --Winston Churchill
    18. Re:Learn this skill by kingkade · · Score: 1

      A is the only nonsense rule up there :) I agree with the other two...productivity and maintainabilty is important and thats what and IDE/highlighting/completion are for. Lacking that doesn't make you a better coder, just a slower one IMHO.

    19. Re:Learn this skill by Arandir · · Score: 1

      Funny you should say that (A) is a nonsense rule because I ran across that very situation day before yesterday. I'm teaching a new hire the ropes at my company. The project he will be working on is based on Unix. I asked him to spend some time with XEmacs or Vim, because those were the editors we had. He was horrified. He wanted to know where the IDE was...

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    20. Re:Learn this skill by Llywelyn · · Score: 2

      Odd, but I believe I specifically said to do this.

      When I start to code the first thing I pull out is my sketchpad and out comes pseudocode, UML, and the math involved, among other things.

      There is a huge difference, however, between writing /UML/ on a sketchpad or whiteboard and writing C-code on a sketchpad or whiteboard.

      --
      Integrate Keynote and LaTeX
    21. Re:Learn this skill by tshak · · Score: 2

      I agree. I also have dysgraphia. There also isn't a point to throwing away the IDE. It's there so that you can spend less time on the "nerdy" stuff and more time on the creative and more relevant things. Finally, UML is the way to go. Even Boeing is starting to adopt UML for less technical documentation - it's a very versitile standard.

      --

      There is no longer anything that can be done with computers that is nontrivial and clearly legal. -- Paul Phillips
    22. Re:Learn this skill by DEBEDb · · Score: 1

      A) Stop using IDEs. Use the plainest text editor that you can find to write your code. Turn off any syntax highlighting and code completion.


      What the hell, just do
      cat > a.out

      --

      Considered harmful.
    23. Re:Learn this skill by Anonymous Coward · · Score: 0

      Perhaps I've just interviewed at strange companies. All of the companies I've interviewed at where my primary responsibility was to design and write code asked me to write code on a whiteboard. When I interviewed people I've had them write code on the spot.

      It isn't to see if they can do the syntax. It is to see how they attack the problem. If the person doesn't write working code, it's not a big deal as long as they started it correctly. If you give them a written description of a problem and they can't even get pre and post conditions out of it, they aren't cut out for the job.

      You may argue that it's 'stage fright' or something along those lines. However even if they forgot everything they know about programming, they should still be able to do basic algorithmic type problem solving. Break the problem down into smaller pieces until you do know how to do it. Procede to implement the smaller pieces.

      I once was asked to write code to reverse the order of the words in a sentence. I choked, I didn't think of the now somewhat obvious "reverse the letters in the sentence then reverse the letters in the words." until I walked out the door. However, I was able to break it down into a tokenizer and a stack which was a lot better than sitting there dumfounded.

      I would agree that having someone write a complex code sample gives you a good idea for how they code but they may have spent 10 times longer on the sample than you would have allotted them. Also it's unlikely they didn't at least discuss the task with a friend so you can't be entirely certain that they came up with the design entirely themselves.

    24. Re:Learn this skill by gillbates · · Score: 2
      Write code away from a computer. Use a pencil and paper. I didn't have a computer when I was in college (very few people did). So I coded by hand on paper, then went to the lab to type it in.

      This can't be emphasized enough. When I first started coding, I could complete the whole thing in front of the monitor screen. But now that I'm working in the professional world, I'm coming across problems so complex that they cannot be solved sitting in front of the monitor. More and more often, I find myself actually flowcharting the problem, and then writing my code out on paper. Yes, I could pound it out with the edit/test/debug cycle, but in the professional world, when you are under a deadline, the ability to code it write the first time is essential. I have found that it is always faster from a total development time standpoint to write and debug code on paper and then type it in than to just begin coding. The only mistakes a good programmer makes are syntax errors - because he's already verified the solution before he begins coding.

      --
      The society for a thought-free internet welcomes you.
    25. Re:Learn this skill by 0x0d0a · · Score: 2

      A) Stop using IDEs.

      This is one of the most aggressive things you can tell an emacs user to do. It's akin to going up to someone and saying "blood...blood...blood" over and over to them.

      B) Design your code before you write it. Use UML, flowcharts or whatever

      I recently used UML for the first time, and I have to say that UML is abstract to the point of being useless. I want to be able to change a UML diagram and regenerate code stubs. UML isn't capable of specifying stuff that's fairly important to C++ coders, like, say, typedef. The workarounds for this are really awful -- someone has you create a class called "Typedef" and toss some junk in it...yeech.

      UML is a nice idea, but it needs to be a smidgen more powerful. Oh, and all the editors need to support XMI. I can understand MS not doing it with Visio, but dia not doing it is just embarrasing to the Open Source community (which constantly claims that everyone should use standard file formats).

      C)Write code away from a computer

      I really don't like doing this. I don't even like doing this for English text. I remember in grade school how we were taught in English to write rough drafts on paper and then use the standard markup symbols...ick. Much, *much* easier to do revision as you go through a text editor or word processor.

    26. 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.

    27. Re:Learn this skill by kingkade · · Score: 1

      Emacs does have syntax highlighting right? In fact it seems it overdoes it :) Colors...look...at...all the pretty colors.

      colors enhance the readability so much. Auto-complete is great for beginners so they can browse the interface of a library/class and great for advanced ppl who are lazy and just type the first few chars and then press alt-space.

    28. Re:Learn this skill by Arandir · · Score: 2

      You can turn off the syntax highlighting. But that misses the whole point. This new hire was panicking because he didn't have an IDE to use. He wanted something with tabbed windows, class browser (for C driver code nonetheless), debug window, and MSDN on the side...

      Emacs gives him everything he needs but it's not in the visual style that he is used to. If he is going to get ahead in his career, he needs to learn how to program regardless of the tool set or media. He won't always have Visual Studio or a Visual Studio clone available. He might have to use a whiteboard in a code review. He might be stuck out at a customer site with only a ssh access to the code base.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    29. Re:Learn this skill by kingkade · · Score: 1

      Missing the point? No highlighting, IDE, he panicked, i understand. Just asked a question about Emacs :D Agreed that the "kid" should get used to a variety of dev environment...for somestuff like writing web pages or scripts or simple java classes i just used textpad, ultraedit, (x)emacs...

      ...only a ssh access to the code base

      how cruel ;-)

    30. Re:Learn this skill by awx · · Score: 1

      Of course it makes no sense. Can you point out many things that *do* make sense? This world is all about jumping through hoops. If in your next interview you get asked to write code away from a computer what are you going to do? Are you going to stand there and complain that it makes no sense or or you going to jump through their hoop and do it?

      --
      Feel that power? That's mah MOUSING FINGER
    31. Re:Learn this skill by awx · · Score: 1

      actually, there is a point to dropping the IDE in preperation for this part of an interview. The IDE is there to help you by syntax colouring etc, so you can get on with the more creative side of things. But a whiteboard doesn't have an IDE. You are trying to train yourself to code on a whiteboard, to jump through this interviewer's particular hoop. If you can get yourself used to writing without an IDE then you should be more comfortable writing code on a whiteboard.

      --
      Feel that power? That's mah MOUSING FINGER
  33. It's not the vibe... by grammar+fascist · · Score: 2

    ...at least not for me. I can code on paper, but I really don't like to. At least, I can code if what I'm supposed to be coding is short.

    The deal is that I just don't code from line one to line 5000 sequentially. I define the overall structure and then fill things in - and that's at every level (class, method, loop, conditional).

    When I was making exams for an assembly language class I taught once upon a time, I opted out of having them write much code. (A few lines is fine, I think.) If there was any serious amount of code involved, I was asking them to trace through it and give me the result, or I was giving it to them and asking them to incorporate something short in it, or the other way around. That's a better use for the static medium (paper), IMNSHO.

    --
    I got my Linux laptop at System76.
  34. 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

  35. masturbation by mangu · · Score: 1

    writing software on paper is like doing sex by hand. What's the point?

    Seriously, how is the teacher supposed to evaluate it if it's not run? I think software students shouldn't be tested by traditional exams, but by doing software projects, in the course of a few weeks. That's how they will work in their professional life, anyhow.

    1. Re:masturbation by Anonymous Coward · · Score: 0
      Seriously, how is the teacher supposed to evaluate it if it's not run?


      By looking at the code and reading it and seeing if it should work. Just because the code is complicated to you doesn't mean that it is complicated to the person marking it. Plus the marking sees quite a few of these programs all of which will have similar style and a similar way of solving the problem. You can also get a sample answers to compare against as well if you want to.

  36. it's not that bad by iamkrinkle · · Score: 1

    yeah, it sux to right on paper compared to actual coding, but i think that it is good to be able to work completely one paper becuase that way you don't use the compiler as a crutch...after all, if you get a little sloppy with your code, the complier will show ya the syntax error, but you shouldn't RELY on it... avoid code entropy!

  37. How much to write? by www.sorehands.com · · Score: 2
    Usually in exams, it is
    But, there are more than one way to test, sample code can be provided and you correct it or determine the potential problems. Or, give the results after execution.


    It is important for the grader to keep in mind that it is on paper and that in the real world you are using a compiler that will warn you about some errors.

  38. Ought to be a fundamental theorem of programming by blair1q · · Score: 2

    It ought to be a fundamental theorem of programming that the program isn't done until it's tested.

    This includes all subsets of the program. File, class, function, line, expression, term, token, character, syntax, etc., etc.

    Your version of this process, like mine, includes getting the tested code to assist our understanding.

    --Blair

  39. Get Real by newt_sd · · Score: 1

    I agree IDEALLY we would assess our abilities in the manner most fitting for each individual but we are currently struggling just to pump out people with degrees regardless of whether they can read write or dance. How many times have you heard on /. you need to have more than just a degree to be a programming god, you don't learn what you need in school just how to learn. Well that is because they don't have the resources to teach you the most effective way. Good luck getting a school to dump resources into tailoring education for you.

    --
    ***I GOT NUTHIN***
  40. I used to hate these by Subcarrier · · Score: 2

    A written test like this requires a more systematic approach than just coding with an editor (which is essentially design by coding). A written test has a purpose in the sense that it measures your ability to systematically plan how to solve a problem, design the code and then write it.

    I don't think it is entirely a fair test of innate talent, though. The most gifted programmers I know can keep it all in their heads and keep enhancing the code incrementally as they go along. This results in a *much* faster development time and often the code is as good or better as a solution developed using a stricter process.

    As all tests, these are also designed for the average programmer, not the brilliant one.

    --
    "I have opinions of my own, strong opinions, but I don't always agree with them." -- George H. W. Bush
    1. Re:I used to hate these by Anonymous Coward · · Score: 0

      I don't see how it's more systematic, except for the fact that using an eraser compared to hitting the delete key, well.

      Worrying about semicolons and such doesn't make analyzing and solving a problem any more systematic.

      One could argue that if you have a limited amount of time/paper, you have to get it right the first time or some such, but hey, if you've got limited amount of time, the same goes for coding on a computer. And I've yet to see any professor who doesn't have a sheaf of paper sitting on their desk 'in case anyone needs it'.

      It's exactly the same thing. You analyze, design, code. Whether you code well, or sloppily, it doesn't matter what medium you use.

      The only real difference here is the fact that if you get an arse who whines about semicolons..

    2. Re:I used to hate these by TiggerStripe · · Score: 0

      Hear hear. anybody who's had to write code for any length of time learns to develop it in their head in spare time. I can't believe the bozos who whine about lack of an IDE (how about four VI terminals?? Stupid punks) and expect a compiler to do all the syntax checking.. too lazy to learn proper grammar? Go build a house. Fscking morons. As you say, development time is considerably less than one would expect from a group of lazy-ass idiot children who can't be bothered to code properly.
      I pity the employers of these people who don't think breathe and love code. As Joel says,
      At the other extreme, are the brilliant superstars who write lisp compilers for fun, in a weekend, in Assembler for the Palm Pilot. And in the middle, you have a large number of "maybes" who seem like they might just be able to contribute something. The trick is telling the difference between the superstars and the maybes, because at Fog Creek Software we only hire the superstars.

      --
      --you have been trolled--
  41. Of course not by Inthewire · · Score: 1

    Why should some TA be able to decide my value as a student? "We hold these truths to be self evident, that all men are created equal"
    Grades divide us.
    As a nation, as a planet, as a people, we need to embrace each other. Perhaps even nuzzle each other playfully.

    --


    Writers imply. Readers infer.
    1. Re:Of course not by ceejayoz · · Score: 2

      So everybody gets to go to Harvard, and they all graduate with honors, eh? Doesn't work. Face it - the TA and prof usually have more knowledge than the students, and thus are good evaluators of said students.

    2. Re:Of course not by TiggerStripe · · Score: 0

      You obviously belong to a union, probably work on the docks and have little besides rocks between your ears. The TA doesn't decide your value as a student. The TA's job is to decipher your output on the exam and decide whether you have a clue about what's going on. All men aren't created equal in talent.

      --
      --you have been trolled--
    3. Re:Of course not by Kharma+Pimp · · Score: 1

      YHBT. YHL. HAND

      --



      We had to destroy this village idiot in order to save it
    4. Re:Of course not by Kharma+Pimp · · Score: 1

      YHBT. YHL. HAND

      --



      We had to destroy this village idiot in order to save it
  42. DeVry by stoolpigeon · · Score: 2

    DeVry gets a bad wrap around here so I hesitate to mention this.

    But to their credit- the program I was involved in their did not have us coding on paper. We had lap tops that we bought as part of our tuition. They provided us w/the full software for whatever we would be working on- or we would go get it (legally - JBuilder for instance).

    Exams consisted of sitting at that laptop and cranking out code. Nothing that huge- you would save it on a floppy and hand it in when you finished.

    Could someone cheat? Sure. We weren't allowed to hook up to the network and the teacher was there but that was about all that was 'enforced'.

    But on the other hand I don't code w/out books, the internet and colleagues now that I do it professionally.

    Anyways- I just thought I'd mention it as it seems that if a school is equipped to properly teach you to code then they are properly equip to test you on computers vice paper.

    .

    --
    It's hard to believe that's how Micronians are made. Why don't we see it right now by having you both kiss one another?
    1. Re:DeVry by Anonymous Coward · · Score: 0

      There's nothing wrong with DeVry. It's not intended for people who go on to get Ph.D.s in computer science, it's designed for guys who want to be syadmins or guys who want to pound out the code. If DeVry gives you the knowledge you're after, then more power to you. And screw the guys who look down their noses at you - most of them will end up disappointed, embittered faceless sysadmins at some Huge Corp. within a few years of getting out of college anyway.

      This is not a troll. This is what happens. I know 'cause I've seen it over and over again.

  43. If you can't psuedo code I question your ability by smackdaddy · · Score: 1

    Personally it seems to me that psuedo code on exams is easier than writing code in on a computer. They aren't looking at syntax, they are looking at your logic, and any decent programmer should be able to express the ideas on paper. Now would my exams have compiled probably not, cause I would have missed semicolons or mismatched parens, but that isn't the point of a paper test. They don't want you to waste your time getting it to compile and debugging it, they are concerned with your logic and your high level design abilities. They will find out if you can make your code work on the labs and the homework.

    That said, when I interview people I give them a problem. The point is to see how the person reacts under pressure, and to see the thought they put into the design while I am sitting there watching them. Does the code have to compile and work, no I am more concerned with orginization and problem solving. So that is my thought, they are testing something other than what you think. Then again some people just aren't good test taker's either, but that is too bad for them, cause most cs classes I took were weighted towards the exams and not much on the lab/homework.

  44. Re:ring-a-ding-ding my dang-a-long-ding-dong by Anonymous Coward · · Score: 0

    Christmas in some time also? Mr. mmmmmm you know the slashdot name stuff(?) :):) I can be the slasldot person?

  45. Tests in general aren't particularly good by Ghoser777 · · Score: 2

    Here's why: name the last time some one came up to you and asked "Tell me the quadratic formula and use it to solve this quadratic equation. You've got 1 minute... GO!" Honestly, this example is absurd, but some tests come down to that. What you can write down in a mad dash is not the same as if you're working on a problem in a "real world" setting.

    Tests in general are after regurgitation and quick thinking, not knowledge of a subject. CS tests, on the other hand, seem to always be about analyzing a problem and coming up with a successful algorithm. In my opinion, CS tests are by far the BEST of all tests given. Any computer can store data, but it takes a thoughtful human to come up with an efficient algorithm to use that data.

    I honestly like CS tests that emphasize breaking down a problem into small steps and coming up with solutions in english (or portuguese, whatever). Then, another portion of the test would be implementing small portions of that solution algorithm.

    Ah well, I'm almost done with school anyway, what do I care.

    F-bacher

    --
    James Tiberius Kirk: "Spock, the women on your planet are logical. No other planet in the galaxy can make that claim."
    1. Re:Tests in general aren't particularly good by TiggerStripe · · Score: 0
      Tests are in general excellent tests of knowledge. Don't know the answer? Can't very well bullshit now, can you? Quick thinking is also a highly rated skill in the real world, in case you weren't aware.
      What you can write down in a mad dash is not the same as if you're working on a problem in a "real world" setting.

      Sorry again, you are completely wrong. Want to be CEO? Learn to think fast. Like to drive your car fast? Think and act quickly or get off my road. There's no place for lackadaisical losers at the top of the food chain son.
      --
      --you have been trolled--
    2. Re:Tests in general aren't particularly good by Anonymous Coward · · Score: 0

      name the last time some one came up to you and asked "Tell me the quadratic formula and use it to solve this quadratic equation. You've got 1 minute... GO!" Honestly, this example is absurd



      Something like that happened today. And in this economic and employment climate, if you can't solve these sorts of problems quickly, there are plenty of people waiting to take your job.

    3. Re:Tests in general aren't particularly good by elflord · · Score: 2
      Here's why: name the last time some one came up to you and asked "Tell me the quadratic formula and use it to solve this quadratic equation. You've got 1 minute... GO!" Honestly, this example is absurd, but some tests come down to that.

      Have you ever given a math or physics talk where someone asks you an annoying and difficult question you hadn't anticipated ? The kind of question you offer as an example here is exactly the kind of thing you're likely to get shoved in your face in front of a large audience in the real world. Of course, the quadratic formula will probably be one of 5 steps that you'd better be able to string together in your head in short order, but basically, it is the same thing. I've saved myself from some substantial embarrassments by thinking on my feet and "patching" unanticipated gaps in proofs. I'd imagine similar is true for more business oriented types, when they're handling tough questions at a shareholders meeting. THinking on your feet is actually quite useful, even in "the real world".

  46. Re:We did these at the Rochester Institute of Tech by jcoy42 · · Score: 2, Interesting
    They would look at the code as more of a structured psuedo-code, rather than something they thought would compile.

    I had a fortran instructor sort-of like that. But then his code wouldn't compile. The final was a 2 page listing and the question "Tell me what this code does". I told him it would error durring compile at line 30.

    He gave me an A for that. It would have been much easier if I could have used a compiler to find the result though..
    --
    Never trust an atom. They make up everything.
  47. I prefer oral CS exams ... by Anonymous Coward · · Score: 0

    Where I demonstrate system I/O on the professor using his cock and my mouth

  48. programming on pieces of paper? by Anonymous Coward · · Score: 0

    This'll *really* be an accurate measurement of your ability. Education. Geesh.

  49. Good programmers use tools, not memorization by Jack+William+Bell · · Score: 5, Insightful

    I have run into this same problem in job interviews. Usually it comes down to the fact that, on the job, I have resources at my command; books, web sites, code examples, etc. So, rather than memorizing every API (or even every keyword), I become very facile in knowing where to look up what I want very quickly.

    But when I am asked questions about the same thing away from a computer and my books I start drawing blanks even about things I know in detail. This is why, IMHO, computer programming exams and even job interviews should be 'Open Book'. Memorizing details doesn't make you a good programmer -- knowing how to use the tools does.

    Jack William Bell

    --
    - -
    Are you an SF Fan? Are you a Tru-Fan?
    1. Re:Good programmers use tools, not memorization by Anonymous Coward · · Score: 0

      No. Good programmers use their minds. Bad ones use tools as crutches.

      If your are spending your day doing nothing by typing they you're wasting your time and your employers money.

      E2.

    2. Re:Good programmers use tools, not memorization by TiggerStripe · · Score: 0

      I'd rather hire a hotshot who knows everything about the language and API's than somebody who doesn't really know what's going on, but can still cobble together something after doing a bunch of research. Obviously I don't know how fast you can leaf through pages in pursuit of that precious nugget of knowledge, nor even how often your cache misses; heck, if the hotshot is lazy and you work hard you might get more done - but I'll take the genius any day.

      --
      --you have been trolled--
    3. Re:Good programmers use tools, not memorization by Anonymous Coward · · Score: 0

      If you would allow me the pleasure to insert my dick into your nose, I'd be most happy!

      HEEEEEEEEEEEE!

    4. Re:Good programmers use tools, not memorization by Anonymous Coward · · Score: 0

      No. Good programmers use tools as tools, and their minds to orchestrate the tools.

  50. Not a particular problem... by wray · · Score: 1

    It seems to me that the real benefit of sitting at a computer is to use the compiler. Otherwise, I use to write all my code by hand before getting on the computer. I probably think better writing by hand than on the computer. To each his own I guess, but I don't find questions wrt coding on exams unfair or difficult. (Except for inserting lines when you make mistakes) :-)

    --
    Guess what? I got a fever! And the only prescription.. is more cowbell!
  51. If you can't stand the heat, stay out the kitchen by Pave+Low · · Score: 1
    First, most of the programming classes I took doing my CS program did not require huge blocks of code. It was mostly pseudocode for the theory classes, and small toy code in language classes. It couldn't have been more than 100-200 LOC to write in one exam. Asking to write 500+ lines of code in a written exam is kind of dumb.

    That said, if the other students have the same conditions as you, you'll have to suck it up and deal with it. That's life.

    --
    SIG:Slashdot: indymedia for nerds.
  52. Own experience... by Pollux · · Score: 2

    For the most part, I agree with you. I've had professors who ask me to write out my code on a page, and the environment just doesn't feel right.

    I've had no problems "debugging" code on paper, designing a program on paper, plus your typical bogus multiple choice questions ("What's the difference between 'cout' and 'printf'", etc.). But when it comes to coding, my brain operates differently writing code pencil / paper style. You could probably equate it to baseball hitters who commonly have higher batting averages at their home field than on the road. When a job is done in the same kind of environment for so long, we become accustomed to that environment.

    I'd be perfectly happy if the profs let us only use notepad to write out code if they're afraid that a program such as Borland / Visual C++ would give us too much leverage.

  53. Code snippets are the most one should have... by dj_whitebread · · Score: 1

    Having TAed several courses now in Computer Science, (I'm a PhD student) I have truly come to believe that having students write large amounts of code is just a bad idea.

    Not only is it a pain to grade, it puts too much stress on the student.

    Code snippets are fine. Make the student show that they understand one isolated concept at a time. Also, having students analyze a given piece of code, I feel, is also very useful.

    Anyway, just my thoughts...

  54. School model doesnt work for computing by Anonymous Coward · · Score: 0

    The idea of not being able to colaborate and share data is outdated today.

    In todays world you actually are able to sit down with a reference manual and the internet and work out a program.

    I have yet to see ANY computer science program do openbook opennet exams where people can work in groups go on irc and ask questions etc.

    Like theres something wrong with asking questions while working. Like they need to know every part of the spec off the top of their head.

    Computer science in schools is flawed because schools try their best to discourage sharing of knowledge and ideas.

    Teacher -> student. *good* student->student *bad*...

    least thats what i got from school till i dropped out and got a ecomm job in nyc making a ton of money learning on my own and asking friends for help when needed.

    school is for saps. go get some experience.

  55. What? by Anonymous Coward · · Score: 0

    I thought everyone had compile and run function built into their #2 pencils. Oh well. Make sure not to miss any more semicolons on the next test or its curtains for you.

  56. Change your major. by jelwell · · Score: 1

    I hate to say it, but you're not cut out for Computer Science if you require a compiler to tell you what is wrong with your code so you can tinker with it until it works. I never had any problems coding on paper in college.

    Here's a list of substantive differences between writing a program on paper versus a computer. If I left out anything, let me know.
    1. compiler
    - see above comment
    2. keyboard
    - maybe you simply can't write as fast as you type. Are you running out of time on these tests? If so, start writing your english papers in pen.
    3. syntax highlighting?
    - I've never bothered with it. If this is your crutch maybe you should write a compiler. That will burn in your mind the syntax of a given language.

    Try switching to Cognitive Science.
    Joseph Elwell.

    1. Re:Change your major. by Anonymous Coward · · Score: 0


      4- with an editor it is easier to write a program in a non-linear way. First the general structure and then more and more details until everything fits together.

    2. Re:Change your major. by FleaPlus · · Score: 1

      I pretty much agree with your statements, but what's up with the statement about "Try switching to Cognitive Science" at the end? (Note that I'm saying this as a double major in computer science and cognitive science)

    3. Re:Change your major. by ceejayoz · · Score: 2

      1. yes, but what if you forget a semicolon, or accidentially misspell a variable name, or something like that? if you're losing x points for each minor syntax error that you'd have instantly found if in a real-life situation, is that fair?

      2. most professors won't take english papers in pen - everyone requires typed papers now... and typing's far easier on the hands

      3. it's useful, but most people should be able to code w/o it, so I'll agree with you there

    4. Re:Change your major. by jelwell · · Score: 2

      My guess is you write your essays in a linear manner as well. Try an outline.
      Joseph Elwell.

    5. Re:Change your major. by jelwell · · Score: 2

      At UCSD Cognitive Science and Computer Science overlaps quite a bit, except that Cognitive Science requires little to no programming. Alot of my friends that couldn't hack the CS major switched to Cognitive Science. My apologies to Cognitive Science majors. I myself was very intrigued with CogSci and took many of the lower division classes and some of the upper division. I missed a minor by one quarter, but I chose graduation over the minor.
      Joseph Elwell.

    6. Re:Change your major. by jelwell · · Score: 2

      1. Is it fair if you accidently write down 3-3=6 when you really meant 3+3=6? Typos in math are just as critical in Computer Science. But that's why you double/triple check your work.

      2. Write it in pen, then type it up when you're done. And I think your doctor would disagree about typing being easier on your hands. I had never heard of carpal tunnel syndrome before I got a keyboard.

      Maybe the whole "Change your major" is a little too strong. But the gist is, these tests are fair, and if you score poorly ask some of your peers how they did - I'm sure you'll find someone with a good score who earned it.

      Joseph Elwell.

    7. Re:Change your major. by Anonymous Coward · · Score: 0

      I actually have trouble writing large chunks by hand. I use a Microsoft Natural Keyboard because of my Carpal Tunnel and if I am forced to write large amounts of stuff by hand I am in very bad pain, because I write by hand slower.

    8. Re:Change your major. by Anonymous Coward · · Score: 0

      I think true programmers need to know how their code is working. The one thing that I hate about written tests is that you cannot press the backspace key. I do not always code from beginning until the end, sometimes I need to add extra lines in the code that is already written.

      Erasers are just not as good as the backspace key.

    9. Re:Change your major. by duren686 · · Score: 1

      I had never heard of carpal tunnel syndrome before I got a keyboard.

      Before that it was "nameless wrist-hurting from writing syndrome."

      --
      Y2K Compliant since the late 1890s
    10. Re:Change your major. by ceejayoz · · Score: 2

      1. Generally, 3-3 or 3+3 is something you'll be allowed to check on your calculator. The final answer in a math equation is like the compiler - if you get a negative area, for example, you know you probably did something wrong along the way.

      2. I get cramps in my hands within 30-45 minutes of writing. I can type away for 8 hours straight without major problems. That's not even the main issue - handwriting is. I've graded CS exams before and it's obnoxious - half the time you can't read it.

    11. Re:Change your major. by Anonymous Coward · · Score: 0

      As I don't fancy writing any more compilers for the languages I can program in I'll continue to use syntax highlighting. Not as a programming aid, more as a debugging aid. When you know there is a bug in a few thousand lines of code you've never seen before syntax highlighting can make the pages of text a little easier on the eye.

      As a skill remembering every little detail about language syntax wouldn't be high on my list of expected capabilities of a SW engineer. As an example C++ has some horrible constructions when using templates, virtually never use them so I don't care. I would expect an understanding of the syntax of commonly used parts of the language, though.

  57. Re:hello! by Anonymous Coward · · Score: 0

    I have ideas for the slashdot. I can post withthe name also?

  58. Take Notes by EdMcMan · · Score: 1

    I have this problem too. Basically, I write down in steps what sections of the program I'm going to need, functions etc. Then I just make the functions or what not based on my notes. It helps a lot when you don't have to switch from planning to coding mode on and off.

  59. In my college by nemesisj · · Score: 1

    we do the essay/multiple choice part on paper, then we have lab tests that solve this problem. But seriously, there shouldn't be that much difference between writing something on paper and writing it on a computer. You shouldn't be surprised when something doesn't compile, because you should check your syntax. Also, if your algorithm has a major flaw, you should have thought of it or seen it BEFORE you started writing code - that's just good practice.

  60. unfair-testing-procedures dept by Anonymous Coward · · Score: 0

    Hi, you are damn right. Asking someone to write, even if it as small as 200 lines of code, is unfair on the part of the professor. Thats no way to test someones coding skills in a comp sci class. Professors should rely on giving projects to test coding skills. It should form a major part of the grade, say 50 to 75 %. The test questions that check the design and structure should be framed by giving out the code and asking to check the correctness, th way it works, is it a good way, is there a better way, point out the mistakes and rewrite to make it work, these kind of questions do a better job.

    Here at UMR, the professor did just what I said when I took the course in summer 2001. We simulated a game called Dungeons and Dragons.

    Thanks !

    Regards,
    Ronin

  61. Please consider by lingqi · · Score: 1

    This question has been raised many, many times before, and is still under debate, in almost all areas of education. there is even debates about this applying to silicon chips (device testing -- if the test really reflect the abilities of the device) -- any test engineers reading this should get nostalgic, i reckon. ;)

    the short answer is: well, it might not be perfect, but it's the best we've got considering the amount of resources, etc etc...

    (pretty much the "this is why we have standarized tests" argument).

    On the other hand -- there is a longer answer. Most of my "code tests" really only have to do with puedo-coding / algorithmical stuff. i.e. there is a few points that the instructor / TA checks for: does this guy know how a stack works, did his/her implementation leave serious memory leaks, etc. these, i think, can be figured out on paper if you are careful and draws flowcharts, etc. my teachers generally do not take off chuncks for grammar (unlike english -- which is ironic because compilers are so much less forgiving about grammar errors in code than people are regarding errors in speech). So, i do believe the paper coding testes show certain merits.

    At the mean time, there are definitely times when the method fail: in front of a computer you can re-compile / debug until it (mostly) works; paper test you don't have that luxury; my personal feeling is that if you depend on the [compile] button to catch all the errors, then you are not all that great a programmer anyway. but if you have gotten clear enough logic, paper coding should not be a problem (just my opinion, again)

    and besides: that's why you have both a final and a project; of course, so you can maybe even grab some extra credit with extra-features on your project.

    i would, actually, like to see finals as:
    here is a problem, you have 4 hours in a room with whatever you like to bring into it (i.e. coffee, jolt, cheese-nips, etc. except friends), and it better be working at the end; that would really bring out the best from the worst: actually, most programming competitions used to be put this way...

    --

    My life in the land of the rising sun.

  62. I had the same problem, well, sort of... by typedef · · Score: 1

    When I was in high-school, I had an AP Computer Science teacher who would actually make us go in front of the class and write our code on the blackboard. He would point out every error in gruelling detail, and would constantly belittle us for even the simplest mistake. He was especially hard on me, though. Every time I was called to go in front of the class I was treated to a never ending barrage of insults or patronizing remarks. I felt more like I was in some special education course than an AP class. Eventually it came to a head when I was asked to write a balanced tree class in C++ on the board. I was so nervous I just couldn't think. I stood there for a minute, thinking out the problem, and before I could write anything on the board, I heard him sigh and say "thank you, mister typedef, that will be all." That is when I put the dead hooker in the trunk of his car. I had her laying under my bed wrapped in plastic for about a week, and had been saving her for a special occasion. I jimmied his trunk and dumped the corpse in, and then cut his break-lines so that the slightest bump would cause them to break. That afternoon, as he was leaving school, he crashed into another car at the intersection outside our school, and the dead hooker went flying out his trunk. The last I heard, he was doing 40-life in the local pound-me-in the ass prison. So that, my friend, is how I came over my coding funk. Hope this helps!

    1. Re:I had the same problem, well, sort of... by ewwhite · · Score: 1

      Sicko...

      --
      Edmund White
      http://flickr.com/ewwhite
  63. Re:CLIT MODERATION: -1,Late by Anonymous Coward · · Score: 0

    i never claimed to be "First Post", only "frist proust".

    ... and that is something you can never take away from me, you goathumper.

  64. Re:jesus loves the little children by Anonymous Coward · · Score: 0

    Yes! Im love the jesus to. Im like the gay jesus. Im happy also.

    Do I can be the slashdot peole(PS)? please tell me.?:):)

  65. Re: code on exams by Arandir · · Score: 3, Insightful

    When you're on the job, you WILL have those kinds of time pressures. One of the things the interviewer wants to know is how well you can cope with it.

    It's Friday at 5:00 and you're leaving on a weekend trip at 7:00. The software is handed off to SQA on monday. There's one more bug in the queue and it belongs to you. Question: A) Do you bail on your trip? B) Do you sneak out the back door? C) Do you go fix that bug in 57 minutes?

    --
    A Government Is a Body of People, Usually Notably Ungoverned
  66. Re:ring-a-ding-ding my dang-a-long-ding-dong by Anonymous Coward · · Score: 0

    jesus built his hotrod

  67. Back in my day.... by newerbob · · Score: 2, Interesting
    I've been writing code nearly every day professionally for the past 25 years, and have a graduate degree in Computer Science and an undergrad degree in math. I've also taught computer science, on and off, for a local community college evening program.

    Back in my day, we programmed on punch cards. If you didn't get it right the first time, you had to re-submit your deck. They only ran the compiler twice a day--once in the morning and once in the afternoon, so you had two chances/day to get your program correct.

    You don't debug with a compiler, not in the days of punchcards, and not now. You debug by looking at your code and finding the bugs.

    I think a written test is fair--what's the alternative. But most rigorous "Computer Science" programs don't spoon-feed programming language courses to students. Classes are on more abstract subjects. You are (or should be) expected to learn the syntax of a particular language on your own.

    I hand people a white board marker and expect them to write code on the white board during job interviews. This really separates the men from the boys. You'd be surprised how many complete frauds are out there with "C++ expert" on their resumes! I have to reject outright about 80% of the people whose resumes have passed muster by our HR dep't. If I didn't give that written test, I may have made a bad mistake and hired an incompotent programmer who can talk and wear a suit well.

    --

    --
    Ask the Ya-Hoot Oracle Anything!
  68. Computer Science != Coding by donutello · · Score: 2

    There is a difference between the SCIENCE of software and computing and writing programs. Kinda like the difference between Mechanical Engineering and being able to fix a car. Please don't confuse the two.

    As far as the subject at hand is concerned, asking someone to write code without a convenient editor (like emacs) and a debugging environment is just plain stupid. You wouldn't write code in real life without those tools - why would you want to even test someones ability to do something with artificial constraints that will never be met in any realistic scenario?

    I have a Bachelors and a Masters degree in Computer Science and I cannot remember a time when I had to write code in a written exam that was not pseudo. Consider taking a different class if that is not ok with your professor.

    --
    Mmmm.. Donuts
  69. State-Dependent Memory by RAMMS+EIN · · Score: 2, Funny

    The explanation for this is a psychological principle called state-dependent memory. People are better at remembering (doing, etc.) things when their minds are in a state similar to the state they learned them in. Since you are used to writing code on a computer, coding on paper doesn't work because you can't get your mind in hack-mode. What I do is I drink huge amounts of beer while programming and do the same thing before I take a test. That adds enough similarity to the situations that the results are similar.

    ---
    Never test for an error condition you don't know how to handle.
    -- Steinbach

    --
    Please correct me if I got my facts wrong.
  70. What's the difference? by cicatrix1 · · Score: 1

    I have never had any problems with this. I think if you really know your stuff, you should be able to think about the problem and then write down a valid program just as you would on a computer. If you have problems visualisng a program before you sit down to write it, then you probably could be more efficient in your programming by doing so. I know it's easy to sit at a terminal, hack out a few lines, and compile it to see if it works... but such trial and error tactics are a lazy practice that will result in sloppy code and/or design that you have to touch up later. I am all for these kinds of tests, frankly, because they make you think before you code. Not just *while* you are doing it, and then again after the fact.

    --

    I know more than you drink.
  71. Misplaced emphasis by tutal · · Score: 1

    As a product of a CS 0 (as defined by IEEE & ACM) curricula, I have seen that a coding emphasis is misleading. In software development, more emphasis should be placed on design and documentation. It would be better for CS tests to be written to have the takers write out the pseudo-code and documenation (relying heavily on UML). That is unless it is for a class focusing on a specific aspect of a language ie, write a code snippet that simulates a queue, linked list, etc. But where you are given a black-box type problem, I feel it is more important that you are able to communicate the method and your thought process than trying not to forget your semi-colons. You can always refer back to a How-To or an Orielly book, but you can't rely on them for the thought process.

  72. The correctors won't compile the code anyway by Density_Altitude · · Score: 1

    A forgotten curly bracket or semicolon won't affect your grade if you're going to any decent college... Where I am in CS anyways we're asked to write specific language code only on few introductory courses, some not even credited.
    The real courses talk about algorithms and general ideas hence you can write down your algorithms in pseudocode, english, or any way you feel that the TA is gonna get your idea.
    For myself, and I'm sure I'm not the only one, I'm happy when we get a question about programming syntax or such in an exam because usually those are the easiest questions so I don't really understand why you're complaining...
    For example, let say you are asked to write a Dynamic Programming algorithm to multiply matrices in O(n^2) and your algorithm is correct but won't compile, and you loose some marks, then the college you're going to does not deserve you're money anymore!
    Now my CS major is almost finished and I never saw an exam where I had to write more than say 100 lines of code. The 500 lines your talking about are for a single exam question or the whole exam?? Would be more reasonable to make programming assignments or projects because thats why they're there for.

    --
    delete free(system.gc);
  73. Paper exams killed me at school by strider3700 · · Score: 0

    I was hammered writting coding exams while at school. I don't think I ever recieved lower then 80% on a coding assignment. I probably averaged 90-95% on assignments and on group projects I was always near the top of the class. However I'd write the two midterms, and then the final and I'd barely pass the course. I found the only way to get through the courses was to do amazing on the assignments and then get what I could on the tests. In 4th year most of the courses had projects and not exams. I did great there, my best year GPA wise was the last year that should have been the hardest. I never did figure out a way to do better on the tests.

  74. Same problem with AP CompSci Exam by Destroyer_of_worlds · · Score: 1

    I completely agree. It is idiotic to ask someone to write code completely right the first time on paper. I took the AB CompSci exam, and though I pulled a 4, I was annoyed that they had asked me to write out this complicated piece of code on paper. When you code, you dont sit down to some paper and start writing code. No, you sit down to a computer (after skeching out some ideas)and start writing code. Then you compile, see if it works, and if it doesnt, you go back and try and fix the problem and compile again. On paper, you cant do that.

  75. Absolutely by cachorro · · Score: 1
    Two words for you: Partial credit

    Ten years from now nobody will care what your exam grade was.

  76. job interview story by geektweaked.com · · Score: 1

    i walked into an interview where i was going to be doing server side scripting (perl/asp/PHP/etc) for this company's intranet in their home town.

    they sat me down and asked me to code in fucking javascript. on paper. with a pencil. i don't fucking do javascript to begin with (outside of retarded things like mouseovers, etc.) i know what its like to not be able to code on paper, i've never been able to. i can't really explain it. i just froze up.

    i didn't get that job

    i'm such a tard

    -c

  77. Some things can't be tested. by surfcow · · Score: 2

    Would you have a written test for cooking? Art? Programming is similar in many ways.

    Perhaps the grade should be assigned solely on projects.

    And yes, some people could cheat, so what? They could get other people to draw for them in art class too.

    Most professors find the whole testing process to be a pain and a waste of time. The whole paradigm is about 3000 years old. Maybe it's time to change. Universities should be in the business of educating people.

  78. They do that? by EvilMagnus · · Score: 1
    I've never taken a CS class, but I'm not a young puke, and I write code as part of my job. I'm...baffled to think that folks ask for handwritten code in an exam. I mean...why?

    One of the first things I learned with C++ was code a little, debug. Rinse, repeat. That's good practice...and requiring someone to write more than one or two lines of code on paper in an exam seems stupid. It teaches exactly the wrong skillset: it's not how many lines of buggy code you can write on paper in 3 hours that's important - it's your ability to write good code and have good debugging skills.

    I can understand the need to write a few lines to illustrate an algorythm, but anything more is just silly.

    --
    -EvilMagnus
  79. CS exams are a fair measure but... by Maul · · Score: 2

    CS exams are a fair measure, but I never liked sections where I had to write more than 10 or so lines of code. Though it was rare to see, I did see it once in a while.

    Some profs. are sadistic and like to do that sort of thing, but often they will still ignore small errors (such as syntax) as long as the "big picture" of what you do works as a feasable solution to the problem. Or at least that is the way it goes most of the time.

    As far as everything else the written exam tests, such as theory and math, well, I really don't see a problem with it. Even if you are a great "coder" it doesn't mean you're a great "computer scientist," after all.

    --

    "You spoony bard!" -Tellah

  80. So? by Anonymous Coward · · Score: 0

    Why shouldn't a programmer be able to write short programs down on paper? If you absolutely need a compiler/debugger just to get an algorithm/program to work then maybe you are approaching programming the wrong way. I thought the whole point of written coding tests was to take the computer away to see if you understand the concepts on your own; to remove your ability for mindless trial and error and test your actual knowledge and thinking ability. I never had a problem with written coding assignments, but maybe thats why I see things this way.

  81. Real Coders v. the IT prolitarians by Anonymous Coward · · Score: 0



    Yes, but those that can hand write code are those that truelly know it well.

    The rest are just hacks.

  82. ways I manage by relay_mod · · Score: 1

    I can really relate - I'm a senior now in computer science and math, and I've had plenty of nasty problems thrown at me on exams (writing an implementation of malloc, multi-threaded priority-based message passing system, crap like that). Here's just some things I've found that work for me.

    1) Make sure you do all projects to their fullest extent, and after doing them, make sure you think about all the things you could do to your solutions to improve them past what the prof asked for. Then study your solutions before the exam. I've found that profs are likely to ask programming questions that are extensions of what was asked on the projects and homework... so this has saved my butt a couple of times.

    2) If your school has coding contests, get involved. Even if you lose every time. It's important to learn how to write complex code in a short amount of time for these exams - and coding contests have helped me out a *lot*. Probably 'cause in a coding contest you often have to get the code right the first time (which is what is needed for paper exams) in a short amount of time.

    3) Don't be afraid to ask questions during the exam (if this is possible). Last semester I was in the top-ten for exam scores in my CS class. I was also the one asking the most questions. =) Not that I was able to get the solutions out of the prof, but I was able to narrow my parameters. I was able to find out how much error checking he wanted. And I was able to get a lot of ambiguity eliminated.

    4) Just be a smart test-taker. =) I know, I know, that's way too general, but what I mean is: don't get pissed at the hard problems until you've done the easy ones, write *some* code down even if you have no f***ing clue, and get plenty of sleep, food, whatever beforehand, enter the test relaxed, and just hope for the best.

    Just my $.02

  83. Writing code without a computer by briansmith · · Score: 2

    At the University of Iowa, IT/CS people here were invited to go to Nigeria to help with computing infrastructure (designing and building campus-wide networks, etc.). The interviewer told us that in some cases, the Computer Science students at the Nigerian university rarely, if ever, executed or compiled their programs on an actual computer. The reason is that computers are scarce, as is even electricity.

    So, with that in mind, writing some code as an answer to a test question doesn't seem that bad. At least with my homework I can still use a computer to test my ideas and to experiment.

    And, I'm fairly confident that when I "need" a computer, I will:
    (1) have a computer available for me to use
    (2) have working electricity to use it
    (3) have an Internet connection that works
    (a) works at all
    (b) doesn't take three minutes to bring up
    the slashdot homepage.
    (4) have documentation and literature to read
    that isn't older than me.

  84. IBM 360 Assembler Tests by Anonymous Coward · · Score: 0

    We had these damned fill-in-the-blank questions regarding Master-File updates at my old university (of which I am no longer a part of). Now, they would give you about 20 lines of code, with holes here and there. I cannot think like these crusty old bastards, so the code I did write was totally wrong. In fact, my teacher took 63% of my first lab score away because I didn't comment the print lines. So I wrote, "where's the comments?" There went my 'D'... I do these things totally differently and paid the price for it. I guess they want to train GI (general issue) programmers...

  85. Re:We did these at the Rochester Institute of Tech by Beryllium+Sphere(tm) · · Score: 1

    The only sensible approach is to use $LANGUAGEOFCLASS as a design language and write, as the parent said, pseudocode.

    Unless your professor is a compiler, it's not feasible to grade for syntax and correctness, not in most languages.

    On the other hand, maybe it's a useful challenge to be asked to write code that is clean from the get-go. There's a development methodology called "cleanroom" (*) in which the first compile is done by QA. The theory is that if you paid enough attention to get the syntax perfect then you probably paid enough attention to avoid a lot of bugs.

    (*) not related to the technique of reverse-engineering using two isolated teams.

  86. No, It isn't by hackwrench · · Score: 1

    Frame of mind is very important in order to code effectively. He isn't discounting the first two issues in establishing a frame of mind conducive to coding; he's giving an example on how to establish such a frame of mind when such tools aren't available.

  87. It's the paper by SheldonYoung · · Score: 2

    I find it's not that I rely on the compiler to catch mistakes, it's that I don't write programs from the top line to the bottom line. I'll write the structure then fill it in, maybe even move stuff around as the idea solidifies. It is just very difficult to work this way on paper.

  88. Re: code on exams by AJWM · · Score: 2

    That makes all kinds of sense for a job interview situation. There, they want to know not just what you know, but how well you perform under pressure, and how fast you can perform.

    The guy who knows the syntax and the APIs off the top of his head is, ultimately, going to produce faster than the guy who relies on multiple passes through the compiler to correct his syntax and using 'man' or equivalent to look up the API of every function -- just as the person who can add/subtract numbers in their head can check their change faster than someone who has to count on their fingers.

    Somebody looking to actually pay money to somebody to write code for them (ie, to hire a programmer) is going to prefer the former rather than the latter, so why not give them such a test? (And it will instantly screen out the bozos who've lied on their resume and maybe just memorized enough to pass simple interview questions.)

    --
    -- Alastair
  89. why unfair? by oo7tushar · · Score: 1

    These tests are geared towards wannabee programmers who regurjatate code from a book or manual. In some cases the tests are amazing to write but there's a marked difference in the environment where you code and the environment where you write an exam.

    No matter what anybody says, you can modify or adjust to a business environment over time. No such preparation can be done for the exams.

  90. Re:We did these at the Rochester Institute of Tech by edrugtrader · · Score: 5, Informative

    nearly all of my exams were pseudo code... that is the entire point of a 4 CS degree: theory!

    if you understand the problem and solution, then you are an 'A' student.

    now, if this was DeVRY or something, syntax is the important thing cause you are just going to be a code monkey your whole life.

    --
    MARIJUANA, SHROOMS, X: ONLINE?! - E
  91. Written Exams by edthemonkey · · Score: 2, Interesting

    All the exams I've taken at the University level have been written. I found that beyond some of the initial pop quizzes where they're teaching you a language, it becomes more concept oriented. My final exam for a data structures course allowed us to use Java (or C++, etc), pseudo-code or witten english, as long as got your algorithm concept accross.

    On the other hand, for my functional programming course (Haskell and Prolog, especially the Haskell) if you had things slightly off, it could totally change the way the program works.

    I find the professors also tend to come up with creative weighting for the courses. Between exams, tests and assignments, I have a lot of leeway with my marks. I can fail (or skip) two midterms and make my final exam worth 90 instead of 50 and so on. If you do better on the exam, it can be weighted higher.

    I think the main reason they use the written exams for the highest percentage of the mark is the ability to control cheating. It's much easier to cheat electonically. At some point, computer science departments will gain faith in their security systems and ability to prevent cheating.

  92. benefits of paper programming by Preposterous+Coward · · Score: 5, Insightful
    Writing code on paper may not be a "fair" measure of your actual sitting-in-front-of-a-PC programming skills, but that doesn't mean it's entirely useless either. Some reasons it's arguably a good exercise:

    One of the things that universities are supposed to do is give you a chance to express your knowledge in new contexts. It's relatively easy to apply things you've learned in familiar contexts, but how good are you at applying them in unfamiliar environments?

    Making you work with pencil and paper forces you to plan ahead and architect your solution, not just jump in and start writing code.

    When you write by hand, the logic and aesthetics of your code are especially important -- since you (and the reviewers) can't run the code to see whether it works or not, you need to make an extra effort to make it transparent and comprehensible.

    I might take issue with an exam that was nothing but one big handwritten coding assignment, but I don't think this is at all out of place as a part of an exam or course. It's a little like essay questions in a soft-science class; they're unrealistic because in the "real" world you have access to reference materials and time to spell-check and so on... but at the same time they are a useful gauge of your ability to articulate a subset of your knowledge, to think on your feet, etc.

    Also, in courses I've graded where such exercises where required, we usually didn't worry about things like minor syntax errors that didn't obscure the intent of the author. The goal was to look for an understanding of and ability to solve the problem, not to be human compilers.

    --

    "Biped! Good cranial development. Evidently considerable human ancestry."
  93. Get over it! by SoupaFly · · Score: 2, Interesting

    What did real programmers do before interactivity? They sat down, figured out their program step by step, checked and rechecked for possible errors and then used the punch card machine to write it out and ran it. If it failed, they had to wait a day before they could get their program through the batch again.

    Having to hand write code is probably a better way to test one's knowledge than having them use a computer for it. The reason being that you're in a different frame of mind. It's all part of being able to visualize things in different ways.

    The way I did it was to think through the logical functions the programs had to perform (sometimes writing out a psuedo code version) and then converted it into actual code a section at a time.

    College isn't always fun, but I found that I learned the most from the things I least wanted to do.

  94. It depends what they ask and how they mark by oliverthered · · Score: 5, Insightful

    Questions like, here is a recursive function, write the code to turn it into a loop.

    Write some code to rotate/scale an image.

    Fine an element in this sorted list (of say 10000)

    Give this xxx write a class model for it.

    Now as long as they don't expect perfect code, eg. forgeting to +1 because of a rounding error, or a binary search can result in a high or low result(for a non-perfect match), these seem fair enough questions to me because:-

    They all test your abilty to write good code, not just code that works.

    I know loads or 'programmers' who don't know how to turn a recursive function into a loop.

    Would use sin/cos to rotate each point on the image, instead of using an interger line drawing algo to scan accross the image to rotate it (or even floating point)

    Would write a n order search instead of a binary search.

    And would use a poor or unflexable design pattern.

    So long as they mark your programming skills and not how perfect your code is, i don't see a problem.

    Debugging is also a key skill, but is very hard to test in an exam, a good debugger uses a hell of a lot of past experiance and insperation to locate, fix and check that there are no simila bugs.

    --
    thank God the internet isn't a human right.
    1. Re:It depends what they ask and how they mark by Anonymous Coward · · Score: 0
      a lot of past experiance and insperation to locate, fix and check that there are no simila bugs.

      It might be a good idea for you to avoid written exams.

    2. Re:It depends what they ask and how they mark by HiThere · · Score: 2

      I know loads of recursive functions that it's quite difficult to turn into a loop. With tail recursion, it's trivial, but that's the exception, not the rule.

      For a start (just to give you the idea) turn the fibbonacci series into a loop.

      Now that you've practiced, try the Ackerman function. ;-)

      And it really MATTERS what the programming language is. I remember spending a huge amount of time trying to get everything right on a binary search in C. But several in other languages, it's nearly trivial (though hashes tend to get used instead).

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    3. Re:It depends what they ask and how they mark by Anonymous Coward · · Score: 0

      I recently had an exam in c++ where I was asked to write a complete program that kept statistics about horses (being played at the tracks).
      The program should present the user with a menu where he could:
      read data from a file
      write data to a file
      add a horse
      modify a horse
      delete a horse (by name)

      I wound up with 3 pages packed with code that most definately contained numerous logical errors and misspelling of variables.
      I think that is a good example of an unfair question which I'm sure are more common than they should be.

    4. Re:It depends what they ask and how they mark by Tom7 · · Score: 1

      Fibonacci is really, really easy:

      int n1 = 0, n2 = 1, t;

      for(;;) {
      t = n1 + n2;
      printf("%d ", t);
      n1 = n2;
      n2 = t;
      }

      Ackermann requries an explicit stack (it's not primitive recursive), but it's also pretty easy.

    5. Re:It depends what they ask and how they mark by Tom7 · · Score: 1

      > Fine an element in this sorted list (of say 10000)
      > Would write a n order search instead of a binary search.

      And how do you propose to do sub-linear lookup in a LIST?

    6. Re:It depends what they ask and how they mark by mishan · · Score: 1

      Agreed. It's not just about whether the code works or not, it's totally about the design and skill of the code. I don't really have problems when it comes to writing code on exams; it is annoying to write stuff down on paper, but I don't seem to have much difficulty. But, then again, I haven't done that much written code; I took the AP Computer Science exam and I received a 5 (highest mark) on that, and it had a huge written code section. The problems were mostly regarding heaps, trees, and lists, so I breezed through them and had thirty minutes to spare when I finished.

    7. Re:It depends what they ask and how they mark by Anonymous Coward · · Score: 0

      proc recur {args} {
      while {1} {
      catch {recur $args}
      }
      }
      recur

      Huh, I failed?

    8. Re:It depends what they ask and how they mark by HiThere · · Score: 2

      Ackermann requries an explicit stack (it's not primitive recursive), but it's also pretty easy.

      How big a stack?

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    9. Re:It depends what they ask and how they mark by kingkade · · Score: 1

      if the list is impl as an array then a binary search as he said, he probably didn't mean a linked/doubly-linked list

    10. Re:It depends what they ask and how they mark by sconeu · · Score: 2

      For a start (just to give you the idea) turn the fibbonacci series into a loop.


      long n1 = 1;
      long n2 = 1;
      printf("%d\n",1);
      while (1)
      {
      long tmp = n2;
      n2 += n1;
      n1 = tmp;
      printf("%ld\n",n1);
      }

      --
      General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
    11. Re:It depends what they ask and how they mark by dmouritsendk · · Score: 1

      I know loads or 'programmers' who don't know how to turn a recursive function into a loop.

      Thiese shouldnt have to be HTML 'programmers' (lets callem markupers)?

      I have a hard time imagining a CS/EE not being able to turn a recursive function into a loop.

      cheers :)

    12. Re:It depends what they ask and how they mark by Anonymous Coward · · Score: 0

      >> Fine an element in this sorted list (of say 10000)
      >> Would write a n order search instead of a binary search.
      > And how do you propose to do sub-linear lookup in a LIST?

      I think I'd start by shooting the idiot who put 10000 data elements in a LIST when there was a chance that somebody would need to search it.

    13. Re:It depends what they ask and how they mark by TGK · · Score: 2

      I think it's important to remember why we're taking these tests. A CS degree is a professional degree.

      The point is that the testing you experiance earnign that degree should be testing the skills you'll need in the real world.

      How many programmers out there are regularly called upon to write perfect working code on a napkin? I've never been asked to do that except for these damn tests (well... not a napkin). The idea that people are testing us for a skill that we not only do not need but never will need is insane.

      --
      Killfile(TGK)
      No trees were killed in the creation of this post. However, many electrons were inconvenienced.
    14. Re:It depends what they ask and how they mark by Anonymous Coward · · Score: 0

      This post calls for BZZZZT, WRONG! in all caps. A CS degree is NOT a professional certification, is NOT a training program, and is NOT supposed to be real-world job experience focused. You seem to have confused universities with trade schools. They're two different things; they serve two different sets of needs; if you try to use one for the other, you'll only end up frustrated.

  95. Answer: Not fair. But we have to do it anyway. by IvyMike · · Score: 5, Insightful

    I used to teach a class to engineering freshman, and part of the course was writing code in Matlab. There are in fact a bunch of matlab questions that you can ask that aren't just writing code, but you really don't get complete coverage unless you have the student put some code on the page.

    Additionally, there probably was some cheating going on with the homeworks (this was a large class taught to all freshman, with relatively small programming assignments. It would be difficult to prove someone was cheating.) We needed a controlled environment where this couldn't happen.

    However, we all realized how crappy this was for the student, and we graded the assignment more like it was psuedocode. If the code had obvious typos, we ignored those. If they were close on syntax, but a little unclear on the API, we usually let it slide, too. (We understand when online you can look that stuff up with the online help.) The thing we stressed was the overall algorithm itself, as well as a demonstration that the student knew how to use matlab. (After all, as a TA, I'm taking programming courses myself; I have some idea of what's reasonable to expect and what's not)

    If you do have a written CS test, and the prof does mark you off for syntax errors, I would probably go in and (politely) complain. Say, "I made a typo which would have been caught by the compiler, but I got the gist correct." If you demonstrate that you know what you're talking about, and you're not a jerk about it, and the professor's not a total jerk, I bet you'll get most of the points back. (We would do this all the time, especially if the student could clearly explain what they were trying to do.)

    If the professor or TA is a jerk, all bets are off, though. But if they're a jerk, they aren't interested in being fair anyway, so you were screwed from the start. We've all been there. Sorry.

  96. Outdated by DrAmes · · Score: 1

    Asking someone to code on paper is just as ignorant as spending hours looking for typos rather than letting a compiler catch them. The problem is that a cutting edge skill is being taught in an age old fashion.

    1. Re:Outdated by Anonymous Coward · · Score: 0

      What if your typo ends up causing you to swap the usage of two different variables? Something as simple as two counters, i and j, in a nested loop. A compiler would virtually never find that for you but could cause tremendous headaches if you don't look for it manually.

      I would disagree with you that programming is a "cutting edge skill." The core concepts of programming that we use today have been around now for almost several decades -- far longer than the personal computer, the graphical IDE and even longer than the debugger. Sure, the languages have evolved over time and we have better tools these days, but the concepts are largely the same. I would hope that colleges and universities are actually teaching their CS students how to program, not just how to use the latest and greatest whiz-bang IDE.

      These core concepts don't need compilers, debuggers, IDEs or even computers to be tested. You just need to understand the concepts and know the rules of the language to be able to verify everything yourself. You can also prove (assuming you don't cheat off someone else's work) that you did not rely on anything else but your knowledge to produce source code that can be turned in to a working program. If you don't have enough knowledge of the language to be able to step through the code in your head and verify it, you still have room to learn.

      For what it's worth, my job is software development, and has been for a long time now. Every program I write, I do in four plus stages. First, I design. Second, I actually put a pencil to paper (1/5" grid paper is my preferred format) and write most of the code. I leave out some of the sanity checking and other repetitive lines (but always making note of them in the margins). Only after that do I even start typing anything in to a text editor (my preferred IDE). The fourth step is to finally test the code out. Before I even do this, I am already fairly confident that everything works well, but I don't always trust myself completely. If necessary, I will do the debug-test loop until everything passes all my tests.

      While I'm writing on paper, I am also stepping through the code in my head. The simpler my "interface" the easier it is for me to stay focused when I'm noodling through several hundred lines of code in my head. Pencil and paper are about the simplest usable interface available to me.

    2. Re:Outdated by DrAmes · · Score: 1

      I may have been short in the past so let me clarify. 1) What if your typo ends up causing you to swap the usage of two different variables? Something as simple as two counters, i and j, in a nested loop. If you use i or j for a variable name then you have already failed any test I would give. At least use foo and bar they are easy to differentiate visually. 2) I would disagree with you that programming is a "cutting edge skill." The core concepts of programming that we use today have been around now for almost several decades -- far longer than the personal computer, the graphical IDE and even longer than the debugger. Go out into the woods and build a stone knife then. Humans have been around far longer than you think. Our minds can no longer keep up with the volume of information -- no more than you can keep up with the number of conversations that you start online in one day. 3) For what it's worth, my job is software development, and has been for a long time now. Every program I write, I do in four plus stages. First, I design. Second, I actually put a pencil to paper (1/5" grid paper is my preferred format) and write most of the code. I leave out some of the sanity checking and other repetitive lines (but always making note of them in the margins). Only after that do I even start typing anything in to a text editor (my preferred IDE). The fourth step is to finally test the code out. Before I even do this, I am already fairly confident that everything works well, but I don't always trust myself completely. If necessary, I will do the debug-test loop until everything passes all my tests. For what it is not worth, my job has been software development for a very short period of time. Th things I deal with on a day to day basis are the mistakes people so stuck up as to believe they are the only person in the world that will ever see the code make. You never come up to see what good, tested code is already around you. 4) Pencil and paper are about the simplest usable interface available to me. Most of the problems I have been asked to do as a "programmer" involved nothing more than thinking about what I could do with what I knew a computer was capable of. Many times this boils down to a redirection of input.

  97. Re: code on exams by Anonymous Coward · · Score: 0

    When you're on the job, you WILL have those kinds of time pressures. One of the things the interviewer wants to know is how well you can cope with it.

    And this kind of "pressure" is exactly why Microsoft puts out such sh!tty products. Its quanity over quality.

  98. Replicate the enviroment.... by coene · · Score: 1

    Bring a PDA, a Typewriter, and a pack of mountain dew (or beer, if thats your style). Problem solved!

    That or drop out, whatever's clever.

  99. Hate it but accept it by sennomo · · Score: 1

    I've learned to program a computer without a computer, so I'm used to writing code on paper. However, I run into the problem of misspellings or sloppy on tests, for which I lose points. This is where it isn't very realistic, because in the Real World, a compiler or ocular debugging will often spot this problems.

    It's also silly in a general sense, in that in the Real World, you usually do have reference manuals and F1 to help you out. Of course, this ends up leading to the monotonous cheating debates.

    --
    Mi klopodas varbi por Esperanto.
  100. it's fair by blisspix · · Score: 1

    many of you sound like you've never had to sit an exam in a foreign language (with several pages of written composition) or do a maths exam where you had to show all your working.

    the point is to show that you understand structure, sequencing, and that you TRULY understand how things work without debuggers.

    FWIW, when i was in school, we had to do everything on paper before we could even go near the computer.

  101. A Good Discipline by nolsen · · Score: 1
    While writing code on paper is unrealistic I think it is a good discipline, especially for intro CS courses. I actually credit my early success and rapid absorption of C++ to the fact that my intro CS professor made us take weekly handwritten quizzes and gave us a written final where we were expected to write a program with several small classes and data structures that worked together. When you are being held accountable for the material like that it forces you to know wtf you are doing and not just use IntelliSense and compiler warnings to blunder through the language on the fly.

    Over the last 2 years my University's CS department has been rapidly dumbing itself down. Letting in unqualified students, making it easy to pass intro courses that used to be difficult, teaching to the lowest common denominator. Part of this process has been a switch from the written tests and quizzes to testing on computers with compilers. Go figure.

    I do think that this is only appropriate for intro courses where students need to rapidly develop a grasp of a programming language and concepts so they can move on to the good stuff. Beyond the intro level they should really be teaching higher level concepts, stuff that is programming-language independent and impractical to code on an exam. If you are asked a question about an algorithm, you should be able to use pseudocode (I have never run into problems using very-pseudocode in upper-division CS courses, as long as I knew what I was doing). A good exam should ask you to think and apply the material and a decent instructor will recognize if you've done this. Seriously, if you are a CS student you should be able to write an algorithm on paper, but it is kind of a skill in itself... Writing C++ on my intro final was not so bad because we had written weekly quizzes and were used to doing it, but if a professor asked for a large hand-written program out of nowhere, I imagine losing the safety net of a compiler would freak some people out. It made plenty of my classmates fail :)

  102. Hey i got a job like that by oliverthered · · Score: 1

    Well not quite,
    The interview went somthing like this,
    Do you now what function of larlar does ralral.,
    [quick scratch of the head, brain in top gear]
    Sorry I can't remember at the moment, I'm sure I'd find the answer in the help file under sys.io though.

    --
    thank God the internet isn't a human right.
  103. coding in exams by LordAlpha · · Score: 1

    call me old fashioned but, what about pseudocode?

  104. For God's sake! Re:I feel the same way by Anonymous Coward · · Score: 0

    damn it, the word is spelled "RIDICULOUS."

    RIDICULOUS.

    No wonder you can't code on paper. You're a complete moron.

  105. God bless UCSB by Sir+Spank-o-tron · · Score: 1

    I went to UCSB, and I don't remember ever having to write code for exams. I wrote a damn lot of pseudo code, mind you, but that's how you get ideas across, eh ? I mean, how else to show that you understand an algorithm than by using it ?

    don't be such a sissy.

    --
    -- Spankmeister General
  106. DESIGNING code (not typing it) is *hard* by kwerle · · Score: 3, Insightful

    I half agree with this. Syntax doesn't matter. If they can't get the syntax right, who cares. That's like saying that people who can't spell can't think - those are unimportant details. The important thing is that the know HOW TO WRITE push and pop. Not that they be able to type it once and have it compile.

    I can't write a java main() statement. Just can't remember how - don't do it very often. But my emacs expands when I type 'main', so it's not a problem :-).

    I couldn't write push and pop and get it to compile, either. But I know how. And I can communicate the design.

    If you're talking about "can't design push and pop", then my sympathies. If you're talking about "can't get the {}'s right", then I don't want to work with you anyway.

    1. Re:DESIGNING code (not typing it) is *hard* by Anonymous Coward · · Score: 0

      And I suppose, that, to people like you, taking baths/showers and using deodorant are also unimportant details?

    2. Re:DESIGNING code (not typing it) is *hard* by kwerle · · Score: 2

      And I suppose, that, to people like you, taking baths/showers and using deodorant are also unimportant details?

      That's a perfect analogy! I don't care if people take a bath, or if it's a shower. Nor do I care if they use deodorant; if soap is enough for the job, that's great. What's important is that they clean themselves.

      OK, maybe it's a bit of a stretch. Try to think of something better.

  107. Ridiculious by Anonymous Coward · · Score: 0

    In nearly every programming class I've had, I've been required to handwrite code.. and it never is as good of code as I could write if I was in front of a computer. I don't believe that it's a fair way to judge someones skill in a language.

  108. design then code by tseng_mike · · Score: 1

    Code on paper is a great way to test that you can design before you code. You can no longer just hammer in code bit by bit and hope it stick. It's really not about the coding they are testing, even if you got the api wrong (spelling, or something minor) they not going to penalize you for it. One of my subject even allow us to bring an api reference into the exam.

    What they really testing is the ability for you to:
    1. Know what the problem is
    2. Design a solution to the problem
    3. Break down the design and put it into code

    Through design it allow us to make better codes that actually solves the problem and period. Its ridiculous how many assignment (where people hammer in code before design) got so many bells and whistles (ascii animation for an atm program? anyone) that the main focus of the assignment is lost.

  109. Or do you E. by hackwrench · · Score: 1

    avoid scheduling yourself into such tome constrants. There's no reason to schedule a departure that close to quitting time... besides can't you just remote in that bugfix?

    1. Re:Or do you E. by Anonymous Coward · · Score: 0

      Yes, because when you scheduled the trip three weeks earlier, you MUST have known that this bug would be in the code, and it wouldn't be uncovered until the day before you left.

      Furthermore, everyone loves to work on their vacation time.

    2. Re:Or do you E. by Doctor+Memory · · Score: 1

      avoid scheduling yourself into such tome constrants

      Tome constraints? Hey, work is an open-book final...

      --
      Just junk food for thought...
  110. At least you could... by Anonymous Coward · · Score: 0

    My high school doesn't have AP Computer Science (or any computer science at all).

    1. Re:At least you could... by Anonymous Coward · · Score: 0

      I took it as an indy. study, and it worked well for me. I really knew my shit, but because my teacher was, is and will be a massive tool, I took the A exam only. I don't like to code in such a pressure situation, and I do get into a zone while on the computer.

      Also, from what I have seen and heard, most programming is NOT done on an individual basis, so one can collaborate with co-workers in order to make a better, more efficent section of code. I thrive in teamwork situations, because I can contribute and not worry about making a mistake, because the others should be able to catch them fairly easily. Or I'm just a wuss.

  111. You kids these days! by Captoo · · Score: 1

    You just don't know how good you have it, you little whippersnappers! Back in my day, we had to write all of our code by hand. There was no such thing as "open source" or "compilers." There weren't even any computers! But we wrote our code all day long without a single complaint. No wimpy caffienated drinks or bathroom breaks for us! No sir! You don't know just how good you have it.

  112. The pen is mightier than the keyboard by ctj · · Score: 2, Informative

    Writing code in exams is hard to if you are used to typing all you assignments with the use of an IDE. As a current EE student who does a lot of CS subjects I have found that the best way is to write code with pen a paper first. This way of coding makes you think very carefully about what you are writing, you don't want to have to rewrite a page of code in pen (rather than just deleting it and retyping it). This way of coding also means you spend your time working on the algorithms and data structures that you believe will solve the problem with out being distracted by your complier not liking your code as you develop it. I am not against IDEs once you have written your code worked through the problem make sure it works in you head (The only complier that can find your logical errors) typing it with an IDE can speed up the time it take to find your typos.

    If your are working in assembler pen and paper are just as good as a computer.

    Most exams are after finding out how you would approach a problem. Writing the code demonstrates that you know how to use the language.

  113. can't edit by nslu · · Score: 0

    well, i am fine without debugger or ability to
    run code in intermediate stages. But what i am
    not fine with, is unabilito to *edit* on paper.

    when i write 'if' calause, i do first write `if {}' and then insert code inside, which is obviously impossible on paper.

    other point is that programmer largely depends on editor, i doubt i'll be able to write any fucntional code in emacs, while vi is my best friend.

    1. Re:can't edit by Anonymous Coward · · Score: 0

      Jesus, this is lame. Please don't post again until you get to high school.

  114. Darn Hackers. by Anonymous Coward · · Score: 0

    You can't write good code if you can't think it through.

    How do you expect to write a clean (bug free) algorithm if you can't think beyond the loop you are currently writing.

    Go get a job at M$ they need your big picture expertise and ability to think things through.

    Most profs I had didn't care if you forgot a few semicolons and if you pay attention in class you largely regurgitate the structure.

    Hint write in the left side of the page and if you forget something crucial, put it on the right half and tell em where to stick it!

  115. Prepare for insertions by MattC413 · · Score: 5, Informative

    When I took a required test for C when I was an engineer, a very large chunk of the test consisted of writing code. One part required making the shell of an API, while another asked for a program that (if memory serves) did some sort of computation or sorting. I ended up getting a 99/100 on the test.. Why? Well, on the last problem of the last page on the last test of the year (the final), I neglected the final closing left brace " } ".. doh!

    Anyhow, the code wasn't nearly perfect.. to the contrary. I had to erase several times, draw arrows (see below) to places, and other things.. but in end, what works, works. Here are some suggestions to help people write code during tests.

    1) Think how you want to structure your solution. On the back of a piece of paper, write down each [method/function/procedure] and the variables involved.

    2) Write down the [methods/functions/procedures]. Leave 2 'spaces' between the declaration and the start of your code in case you need to insert variables or code here.

    3) Leave a little space between lines. If you find it necessary to 'insert' code somewhere, write it near the bottom of your page and draw an arrow to where you want to insert this code. Most TA's/Professors are very forgiving and understand that you won't erase 15 lines to insert 2 in the middle.

    4) Do required editing.. that is, check your 'code', and if you need to insert lines, see #3. Those arrows work wonders.. really.

    -Matt

    1. Re:Prepare for insertions by Anonymous Coward · · Score: 0


      I neglected the final closing left brace " } "

      and years later, you're still making the same sort of stupid mistakes: that's a right brace.

      ;-)

    2. Re:Prepare for insertions by Hexa+Person · · Score: 1
      Repeated message:

      I'm informing you in this message that your use of decimal is disturbing to geeks. Why did you choose to use decimal? I'd really like to know. We may have ten fingers, but we don't even use decimal for time. Decimal is clearly for stupid people. I think it likely that you do not know what radices mean, or else you would be using hexadecimal. Read about hexadecimal at intuitor and repost your comment using hexadecimal. You may use "0x" as a prefix or "h" as a suffix for the numbers. Intelligent people despise decimal--so try to show some intelligence. So do you know what hexadecimal is? Reply to this and prove it, otherwise we will assume that you are stupid.

      Personalized message:

      Idiot. What out of what? Repost and stop being an idiot.

    3. Re:Prepare for insertions by MattC413 · · Score: 1

      Huh.. yeah, that's probably why I'm out of work right now.. *sigh*.. :)

      Thanks! Hehe..

      -Matt

  116. Why would you study at a place ... by wytcld · · Score: 2

    Why would you study at a place that's so stupid about using computers that they don't realize that having to grade code written on paper costs so much more in terms of faculty time that they should have sat you at computers. I mean, they could go to Wal-mart and buy those Lindows machines for 10 cents each, right? And they use paper??

    --
    "with their freedom lost all virtue lose" - Milton
    1. Re:Why would you study at a place ... by 1729 · · Score: 1

      Man will never be free until the last king is strangled with the entrails of the last priest - Cactus Ed Abbey

      Uhh, that was Diderot that said that. If I recall correctly, when Ed Abbey was the editor of the student literary journal at the University of New Mexico, he printed that quote (attributed to Louisa May Alcott), getting himself fired and the journal abolished.

  117. I left my last college. by Anonymous Coward · · Score: 0

    Because of crap like that.

    Oh, I don't mind the odd problem here or there, but when they ask you to write, as in with a pencil, on paper, in a room without any computers, a fully functional working program, erm.. No.

    (And no, damnit, it wasn't a 'Hello World' program. :P)

  118. Been there, done that.. by Mr2cents · · Score: 1

    I find it is not that hard, I mean, when I write a program I first make a design (or at least take some notes) on paper. Once you have divided the problem, writing down some implementation (pseudo) code is much easyer.
    Those notes will also tell the examinator that you understood the problem, making it easyer for him/her to forgive eg. a pointer error, and to understand the code.

    --
    "It's too bad that stupidity isn't painful." - Anton LaVey
  119. AP Exam by blake213 · · Score: 1

    I took the Advanced Placement Computer Science AB test last year and received a 5. Yes, hand-written code can be tedious and strenuous, but usually most exams note this and score according to the attempt. It was a painful task, but it also helped me in my psuedo coding quite a bit. Still, I wouldn't be suprised if I saw the exam move to an actual computer in the next few years.

    --
    mund freud.
  120. Yeah I hate to write code on paper... by Anonymous Coward · · Score: 0

    The only course where I've had to write any code on paper is in the introductory programming course at uni. This course used the book SICP, so the course obviously tought scheme. In the exam we had to write loads of extensions on paper to the "amb"-evaluator and the logic evaluator (those who have read SICP know what I'm talking about). We also had to implement a few really absurd streams and that was really a pain when you couldn't test the on a computer.

    I've been coding myself since I was 11 (well I couldn't say I was coding back then, more like "coding"...) and I'm 20, so I've got some experience in coding. I've noticed that the problem with writing code on paper is that if you've never implemented anything similar to what you need to do in the exam on paper, it's going to be pretty quite hard.

    For me the only solution to check my code I've written is really to write a large stack on paper for the stack and write all the variable names on paper. Then start evaluating the stuff in your head and just begin to write down all the values on paper and fill up the stack. It's pretty damn annoying to do this, but it's even more annoying for the people with little experience. Thus no matter how you look at it, if you're an experienced coder, it's you should do better than the rest.

    There's one thing where coding experience doesn't help though. Many courses in algorithmics and programming methods generally test for the ability to design algorithms which is more math than programming. In these situations it helps more to be talented in maths than to have experience in programming and some people with practically no programming experience are going to do very well in these types of questions. If you want to succeed in these types of problems I suggest you look at the IOI or ACM Programming Contest archives. There you'll find lots of nice little problems to solve at your spare time.

  121. overrated? by Anonymous Coward · · Score: 2, Insightful

    college? overrated? yeah...only if you're a geek who codes in a vi screen in his pitch-black dorm room all day...

  122. What are you testing? by SeanAhern · · Score: 2
    Anyone can make a program work given a compiler and sufficient time. If you can do it with just pen and paper, and remember the syntax without having other code in front of you, then you know your shit.
    Then give them a compiler and sufficient time. That's what you'd do if you hired them and set them to work. You don't hire someone to code without providing them the tools of the trade. Why would you test a skill that is not asked for in the job?

    I would suggest that the job "interview" gather information that's pertinent to the job being posted. Gathering performance data (like being able to code without reference material, a compiler, and an editor) that has nothing to do with the job is going to give you information of questionable usefulness.
  123. Callow youths! by Anonymous Coward · · Score: 0

    What, you can't write code without a syntax-checking editor, or frequent breaks to see what the compiler makes of your half-thought-out muddle? Well, then you don't deserve a good grade, sonny. Come back when you've learned how to code, not just to hack up a storm.

  124. 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.

    1. Re:Definitely not fair! by elflord · · Score: 2
      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.

      Depends on what you're testing.

      CS students should be tested on computers in at least a simulated development environment.

      Simulating a "development environment" is nontrivial. A real world development environment often involves large and complex programs. The paper exam is a "simulated environment" of sorts. I agree that open book tests tend to be a good idea with courses that involve programming.

      If athletes were tested like computer programmers,

      You've lost me. You're discussing "testing computer programmers", but the topic is "CS exams". The two are not equivalent.

      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.

      An exam on compiler design will punish a "good programmer" who doesn't understand the fundamentals of compiler design.
      An exam on artificial intelligence will punish a "good programmer" who doesn't understand the fundamentals of artificial intelligence
      An exam on discrete math will punish a "good programmer" who doesn't understand the fundamentals of discrete math.

      Get the point ? Not all CS exams attempt to measure whether or not you are "a good programmer". The exams are there to test mastery of the syllabus, which, with the exception of some entry level courses, doesn't have a whole lot to do with writing code.

      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.

      You weren't "lucky", this is the way it's usually done. The instructors, as you say, are looking for some sign that you understand the material. They don't care a whole lot if you miss a semicolon or something.

      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.

      Just like it was "wrong' for them to make you memorize those timestables, right ? After all, one could always use a calculator.

    2. Re:Definitely not fair! by BlindSpot · · Score: 1

      An exam on compiler design will punish a "good programmer" who doesn't understand the fundamentals of compiler design. An exam on artificial intelligence will punish a "good programmer" who doesn't understand the fundamentals of artificial intelligence. An exam on discrete math will punish a "good programmer" who doesn't understand the fundamentals of discrete math.

      Get the point? Not all CS exams attempt to measure whether or not you are "a good programmer". The exams are there to test mastery of the syllabus, which, with the exception of some entry level courses, doesn't have a whole lot to do with writing code.


      If you reread my post, I said "CS exams that involve programming". You even quoted that part, but obviously didn't pay attention to it.

      I would never expect courses like discrete math, compulatibility theory, algorithms, etc. to be tested on computer because those courses involve little to no programming. As you said, that's not what we're supposed to learn in those courses. In fact, of the courses I've taken in my program, only 4 I felt should have been tested on computer.

      I'd been programming for over a decade before I took my first CS exam, so I think I'm qualified to say that writing code on paper is unnatural. Programming is a process that's about more than what's on screen. XP has it right: Design a little, test a little, code a little. Only half of this can be done on paper. The coding part is somewhat crippled, and the most important step (testing) is missing entirely!

      Written programming tests are better than nothing (or oral tests), but they're a stopgap solution that institutions seriously need to phase out ASAP.

    3. Re:Definitely not fair! by elflord · · Score: 2
      If you reread my post, I said "CS exams that involve programming". You even quoted that part, but obviously didn't pay attention to it.

      I see. My response would be that most CS exams don't involve programming, and the ones that appear to involve programming are actually testing something else (eg whether you can express an algorithm clearly and correctly) So I think most of your argument is based on a false premise.

      I'd been programming for over a decade before I took my first CS exam, so I think I'm qualified to say that writing code on paper is unnatural.

      "Unnatural" is a loaded, subjective, and emotive term. IMO, "unfamiliar" would be a better word.

      XP has it right Design a little, test a little, code a little.

      XP is about project management. It has little or no relevance to measuring basic skills. What coding exercises on exams measure is whether or not the student can express simple algorithms in a clear and correct way.

      Again, this boils down to the fact that entry level programming courses are not intended to evaluate your skill as a programmer (that would require an interview at the very least), the purpose is to test mastery of the syllabus, which is often related to programming, but certainly is not exactly the same thing.

  125. eh? by AiX2 · · Score: 1

    I've never thought written tests were a fair way to measure someone's knowledge of coding

    And what other standard of performance judgment would you advocate? I've seen the Slash source code; you're better off with the test.

  126. Re:We did these at the Rochester Institute of Tech by Anonymous Coward · · Score: 0

    I disagree with that statement. (And I suffered through RIT too ;))

    Syntax is perhaps the first thing a person should be taught. It doesn't matter that it doesn't transfer from language to language (for the most part). People need to be slapped upside the head until they comprehend the fact that syntax is incredibly important. Ever track down a missing semicolon in a ten thousand line program at 4 am? :)

    Granted, it shouldn't take very long for people to grasp this idea that syntax == important. That's when you move onto theory, algos, the meat that transfers and is applicable damned near anywhere.

    (Ahh. How I miss getting massive amounts of points taken off of labs because I incremented a variable by i++; instead of i += 1; :P)

  127. Re:We did these at the Rochester Institute of Tech by ROBOKATZ · · Score: 1
    I've also had profs that would take a point off for each syntax error...

    I had an engineering professor that would 1 point off for every mistake on a dynamics problem. I thought this was ridiculous, since if you make 1 mistake like this 'in real life' the whole thing blows up.

    How is this different?

  128. Beg and Plead by E1v!$ · · Score: 1

    I agree. Coding on paper really sux. I tend to write a 'header file' type structure (interface for the java people) so I know what I'm doing. After that it's just filling in the blanks. The bad part is I still mess-up.

    Before I learned to do that I used to go to the profs office; I'd beg and plead with him for a bit, (I suck on tests, my home work is the best, you've seen me tutoring others in the library, etc.) then discuss programming technicalities with him for a little while. That worked also.

  129. Computer Science AP Exams = Hell by miketang16 · · Score: 1

    I don't know about everyone else, but the way I code is I write a chunk, compile, and run to see how it looks, then write another chunk..etc..

    Comp Science AP exams really blow. They make you sit there for 3 hours, writing by hand, and trying to sift through these useless functions they come up with. PLUS they make you use their proprietary classes instead of standard ones. I think College Board is spread a bit too thin, perhaps standardized testing shouldn't be administered by a company out for a profit.

    --
    -------
    "In times of universal deceit, telling the truth becomes a revolutionary act."
    -- George Orwell
    1. Re:Computer Science AP Exams = Hell by Phosphor3k · · Score: 1

      Dunno about you, but the AP CS exam I took 2 years ago was damn easy if you bothered to study for more than an hour, or just skim through an AP CS guidebook. That being said, i did neither, didnt take the class and still came out with a 3.

  130. Change your major by BlackTriangle · · Score: 0

    Computer Science sucks. I hear Philosophy is pretty good...

  131. shitty CS idea by Anonymous Coward · · Score: 0

    my CS teacher gives exams/tests with 20-60 line blocks of code with missing lines, tells you the input and output, then you gotta figure out the missing line... it sucks

  132. Michael Abrash by rice_burners_suck · · Score: 1

    There's a reason the tests are on paper.

    Somewhere in Michael Abrash's awesome Black Book of Graphics Programming, he mentions that his grandfather (IIRC) used to do the cross-word puzzle in every sunday's newspaper... in INK. And he never messed up or had so much as a smudge on the paper. The reason is that before he wrote anything down, he thought about it from every angle, and only wrote when he was sure his answer was right.

    I try to do the same when I code. Overall, things are drawn out in flow charts, state machine diagrams and whatnot, but when I write an individual routine, I sit back and think it through quite a bit before I write anything down. The point is that although I do move things around or write code to see it, I try to think as much as possible and type as little as possible. The results tend to be a lot shorter and work quite well, if I may say so myself.

    And I'm one of those "visual learners" who needs to see stuff with my eyes. But my rule of thumb is that if I can't work a routine out in my head, it's too complicated and I need to take another approach.

    As a side note, I am very strict on formatting. I format the code perfectly to my specifications as I write it. (1TBS, spacing between operators.) There's no such program as a pretty-formatter on my systems. Since I take such care, I hardly ever miss a semicolon or other punctuation mark.

    Oh, and one other thing... When it comes to debuggers, definitely use them! Make sure you specify some really harsh test cases, and after you write a routine or a small system of routines, bust out the debugger and watch every line execute, and as you do, ask yourself, "What could possibly go wrong on this line?" You'll be shocked and amazed at how many flaws you'll find in what looks like innocent code. And use Lint. But when it comes to tests, if you can do it on paper, you know your shit.

  133. Same situation... by Anonymous Coward · · Score: 0

    I've been coding for years, but I run into the same type of problems. But it doesn't necessarily apply to just exams. Say you're away from a compiler (or in the case of PHP, etc, a web server that suits you)... You have some quick ideas for structure, jot them down in notepad, pico, vi, whatever may be handy. You finish up maybe 100-200 lines, and when you get to the compilation/execution stage, you realize that you made some silly layout or design decisions. You don't get the critical 5 minutes of fix time on an exam. Most colleges have enough rooms w/the goodies for whatever language you may be working in to give a timed 'practical' exam. This would offer the chance to do a quick compile, catch any goofs or uglies, and submit something reflective of your skill; yet I have seen a strong tendency toward paper for entire exams. It seems like the students need to make a push to showcase themselves and break these sticks outta the mud.

  134. No. by TheCrunch · · Score: 1

    I'm approaching the final year of a CS course and I've had my fair share of handwritten programming exams. There's nothing that annoys me more than a question that asks for code on paper. Programming is simply not done on a line-by-line basis.

    Who here thinks "OK, here's the algorithm I have to write" and writes say 200 lines one by one? Nobody! You start with chunks and progressively fill out the code by inserting lines above and below, editing things as you go along. Functions are not essays!

    The questions I've faced so far have been reasonable and haven't required too many lines of code. (You know, the usual tree walking stuff). We're so familiar with the algorithms, we've already got a good idea of how many lines we'll need. But in some cases, the majority of my time is spent trying to figure out the code before I write it. Otherwise I'll end up having to insert lines here and there, make corrections and eventually need to rewrite the whole thing so the examiner can actually read it. All of which is costing me time.

    These conditions detract from a test of actual programming and are a stumbling block for many. I have friends who have run out of time rewriting their draft code scribbles into a neat, examiner-readable form.

    Secondly, in "real life" programming situations, you have a debugger! Type some code and test as you go along, progressively reaching your goal. So why these exams (the coding part) aren't systematically conducted on computers is beyond me. Unless I'm presented with a screen and a keyboard, it's not a programming question. If it's on paper, it's a how-good-are-you-at-writing-quickly,-neatly-and-gu essing-the-number-of-lines-for-your-code question.

    The subject matter is ever evolving and universities have been good in keeping up, but in my opinion, the standard examination techniques are just not effective for coding questions. But for some reason, my lecturers, who are supposedly skilled in this field, just don't see the problem. "... in my day... " Bah!

    --
    My life is one big siesta in which I'm dreaming I wished my life was one big siesta.
  135. Re:We did these at the Rochester Institute of Tech by silent_poop · · Score: 1

    Exactly. That's what the introductory courses are for. However, I don't believe you should be overly penalized for syntax errors on exams laden with theory (unless of course it appears to be a consistant problem).

    --

    --
    silence is poetry.
  136. Re:We did these at the Rochester Institute of Tech by Anonymous Coward · · Score: 0

    Is this a serious question?

  137. Are written plumbing exams a fair measure.... by Lictor · · Score: 5, Insightful

    ... of someone's knowledge of fluid mechanics?

    Once again, Slashdot continues to perpetuate the (Computer Science == Programming) myth.

    Programming IS NOT "computer science" any more than telescope design is Astronomy (with apologies to Dykstra).

    Programming is a trade skill. Certainly, a challenging and rewarding one.. but it is not a science.

    Being the first guy to figure out quicksort... thats science... thats research. Coding a quicksort in LISP is not.

    I've ranted about this before, but it upsets me to see such a misleading headline.

    I think *computer science* exams are quite fair... if you understand the data structures and algorithms associated with B-trees.... you shouldn't have any problem describing them on an exam. Likewise, if you understand the halting problem, reducing a simple contrived example should be doable on an exam.

    On the other hand, I very much disagree with the "code this up in PL/I, using proper syntax" type of exam question. What an enormous waste of time...

    The bottom line is that if you've been through a computer science program and understand the underlying principles, I should be able to give you a manual for 'trendy language x', a few examples, and 48 hours. After that, you should have no trouble coding in Jav^H^H^H 'trendy language x'. Will you screw up the syntax occasionally? You bet. Is it fair to dock points on a formal exam for being human and forgetting a semicolon? I sure don't think so; and I've *never* done that to my students.

    But I stray from my point. Once more, for the record, since no matter how often I rant about it, no one seems to listen:

    COMPUTER SCIENCE != PROGRAMMING.

    1. Re:Are written plumbing exams a fair measure.... by taernim · · Score: 1

      I think you are missing the point here. /. did not perpetuate these myths. As a former CS student myself, I too experienced the dread of going into an exam and being told either "Here's a program spec... code it" or "Here's some code... be the compiler and debug it."

      The problem lies within the schools ... or perhaps more precisely, within certain instructors' syllabi.

      While code is important, there is no reason to require people to code complex programs in an environment they would not experience in "the real world." -- It seems unlikely that someone would say to a developer: "Go write this... on paper, not using your books, or MSDN (for those M$ inclined folk), or man pages."

      If a real coder can use these resources, why can't we?

      --
      "PC Load Letter? What the $@#% does that mean?!"
    2. Re:Are written plumbing exams a fair measure.... by denshi · · Score: 2
      Coding a quicksort in LISP is not.
      Considering that that's right there in the core, I should think not.

      But more importantly, CS != Programming.

      But a big problem w/a CS "exam" is that the timescales are totally absurd. CS draws on several disciplines: HCI, EE, set maths, complexity theory, etc; and establishes many of its own: code translation (compiling), algorithmic efficiency (math has algorithms but not O(f(x)) concerns), data representation. A computer science advancement tends to draw on all of the above, and sounds something like: "using these techniques, we can devise a new method/language for programming that cleanly solves these algorithmic difficulties, produce extremely fast code, and present the user with a simple abstraction to the whole design." That's not something you do on a two hour exam. That's something you prototype in a semester, cover your ass in a year, and make production-capable in 3 years.

      Could some of us generate a new programming language with a very restrictive set of operators in 2 hours? Sure. Will it compile? Hell no.

      The exams discussed on this story are not CS. They don't even resemble CS. And for real CS, the idea of an undergraduate final exam is just ridiculous.

    3. Re:Are written plumbing exams a fair measure.... by HiThere · · Score: 2

      Sorry, this is a response to the parent, not to the article.

      Sorry. Java's a lot worse than that. It may be "trendy language x", but there's no way I'll ever just remember what function throws what exception (e.g.), without looking it up. Usually I just re-use old code that got it right and don't worry about it (I rarely use Java), but there's no way I'd remember it cold.

      There are other traps. I really dispise the way that Java handles files. C got this much better. So did Python and Ruby. (The most common reason for my avoiding a language is that it doesn't deal nicely with files. That is in-and-of itself sufficient for me to consider a language unuseable.)

      Now with a good reference, and some sample code, Java's RandomIO class is acceptable. Not great, but acceptable. (Nobody handles RandomIO very nicely.) But the entire concept of mangling files with streams is at best dubious, and Java built it into the core classes of the language. (Well, so did some other languages, and it sounds like a good idea. Only when you start using it does the true horror strike.)

      A class should start out simple, and then add complexity. That's correct. But Java's approach to simple for handling files makes a simple little routine for reading a text file take up twice the space that it should (or more). This is probably because of single inheritance. (Look into the details of how Java twists itself around to implement RandomIO sometime. It works alright, but UGH! What a design!)

      If Python or Ruby had the same push behind them that Java had, Java would have been laughed off the face of the planet. Unfortunately, Java has a relatively decent crossplatform GUI interface, where Python used tcl/tk (Tkinter), and Ruby is still groping (tk? gtk? FOX? ...).

      Applied Computer Science IS Programming. Unfortunately, Abstract Computer Science is the study of algorithms, where this should only be one part of the field. Usability criteria should also be a part of the field, but that has been shoved over into ???. There are people who worry about it, but they don't really seem to have a home. Like PARC ... which was an industrial research lab run by a company that didn't really pay much attention to computers. Or Bell Labs, which was really about making the telephone system work better, but had a bunch of other miscellaneous labs just in case one of them paid off. (Bell paid more attention than Xerox did, and Bell has split into several companies that are each doing pretty well. [There may be an exception, but I don't know about it.])

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    4. Re:Are written plumbing exams a fair measure.... by Anonymous Coward · · Score: 0

      While computer science is not coding, coding is a huge part of CS, and most CS people will end up either programming or software engineering. In fact, most of the people who do what you consider CS are actually math majors, or at least have a postgraduate education.

      A better analogy than your pluming example would be a math exam, they may be examining you on vector calculus, but if you can't do basic math, or even basic calculus, then you will not do well.

    5. Re:Are written plumbing exams a fair measure.... by John+Harrison · · Score: 2
      The written exams I took in CS weren't about hunting through documentation. If they happened to be a need for some documentation then the documentation was provided. Often exams were open book, open notes and designed such that it didn't matter if you had the book anyhow. Instead the exams that I took generally required no knowledge of any libraries at all. They would be problems that to write some small yet potentially useful function like a sort. Or designed to demonstrate your knowledge of recursion.

      If a real coder can use these resources, why can't we?

      Sorry, but universities don't consider students taking tests to be "real coders". They are people who are still learning some of the basics.

      Another type of problem that I saw often in intro CS was here is a function. Tell us what it does. I have actually been asked this in a job interview. My answer was, well, it won't compile since there is a bug right here, but if it did, then this is what it would do... The person would had made the problem had no idea that there was a bug in the code. He made a note to fix it. I was glad that I had experience doing this sort of thing.

      There seems to be an attitude of complaining about how school is run here on /. Maybe /. is populated by people attending crap schools. I don't know. What I do know is that any CS major worth his/her salt should be able to sit done and write out how to implement sorting routines and such pretty quickly. Also, remember that the test is not 100% of your grade. In programming classes there just might be some actual programming assignments that will give you the opportunity to show your coding skills in a sitting at a computer situation. Having to spend three hours with pencil in hand won't kill anyone and is acutally something that you should be able to do without whining.

    6. Re:Are written plumbing exams a fair measure.... by Lictor · · Score: 2

      >Considering that that's right there in the core, I should think not.

      The "core" of LISP is the eval function.. no more, no less...

      >the timescales are totally absurd

      I guess this depends. I think its reasonable and possible to write an exam that directly tests the material at hand without demanding too much. Certainly an exam question that reads "Design and implement a major software system..." is ludicrous. But a question along the lines of "Given the tree data structure listed above, write a depth-first search for it in pseudo code" is perfectly reasonable. And it tells me if the student has even the foggiest idea what a depth first search is and what these "tree" things are...

      In any case your premise appears to be that "real CS" == large scale software engineering. I respectfully disagree... this is certainly *one* of the major areas of CS... but its not even close to the whole field.

    7. Re:Are written plumbing exams a fair measure.... by Lictor · · Score: 2

      Nice anti-Java rant =) I'm not a big Java fan myself... but for better or worse, its going to be sticking around for a while. It may be a beast, but on an aesthetic level, its a little better than C++... how many times do people have to re-invent "memory management" by reference counting before they realize it sucks??

      Python is my favourite language for prototyping and scripting, so I'm 100% with you on that one. I haven't had more than a cursory look at Ruby, but it seems to have a pretty solid design.

      Now, as for "applied computer science == programming"... yes, thats part of it, but it sure isn't the whole bag. Do you think the AI/computer vision guys working on cruise missile guidance systems are just simple coders? But at the same time, they aren't doing new research in computer vision... they are *applying* (probably quite a bit) of abstract academic research in the area. But their contribution is undoubtedly more than just writing code.

    8. Re:Are written plumbing exams a fair measure.... by Lictor · · Score: 2

      I totally agree that most CS people end up as programmers or software engineers. But if they're *really* doing software engineering, then there is a LOT more to that than just coding. And just because thats what most people end up doing... doesn't mean that its all there is to CS. How many people with a BSc in physics end up doing something that could be comfortably labelled "pure physics"?

      The ends do not the means make.

      >most of the people who do what you consider CS are actually math majors

      If you are from North America, I promise you that you are wrong on this one. Go to your local university.. walk into the mathematics department and ask the faculty there if they think: automata theory, complexity theory, formal language theory, information theory.. heck even semigroup and semiring theory are "pure mathematics". They'll laugh in your face and make some condescending remarks. (If you're in Europe, then all bets are off. Your comment is quite accurate... why this dichotomy exists is a mystery to me... but I have certainly observed it).

    9. Re:Are written plumbing exams a fair measure.... by r00tarded · · Score: 1

      first off let me agree wholeheartedly.
      then let me remind you that this is slashdot, the living embodiment of the infinite monkeys.

    10. Re:Are written plumbing exams a fair measure.... by ath0mic · · Score: 1

      As it was once said: "Real Computer Scientists don't use computers."

    11. Re:Are written plumbing exams a fair measure.... by geekoid · · Score: 2

      boy, I wish you where my english professor. Sure I understood punctuation, but the bastard had the gall to dock me points if I would miss a semi-colon.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    12. Re:Are written plumbing exams a fair measure.... by denshi · · Score: 2
      The "core" of LISP is the eval function.. no more, no less...
      No, it really isn't, considering that 'eval' doesn't operate within a surrounding lexical context. The core of LISP is s-exprs, atom?, car, cdr, cons, lambda, progn, cond, quote, and function application.

      But what I meant was "a generic Common LISP image without loading any modules", but the terminology is a bit unwieldy.

      In any case your premise appears to be that "real CS" == large scale software engineering. I respectfully disagree... this is certainly *one* of the major areas of CS... but its not even close to the whole field.
      You completely missed what I was trying to say, which is fine.
  138. The Dishonest Ones by geek+of+nixhelp · · Score: 1

    There is only one slight problem which i can see with this. It (as Always) spawns from money. There would need to be a substabntial inverstement by unis/colleges/etc. to prevent cheating in such an exam. for every secrity profesional you get who knows there stuff about locking a system down, you get a good few students who know just as much, if not more about busting them open. you have to look at the fact that computer based exams will be coded by someone, a real person, and therefore could be fallable. especially in a situation where coding is involved, as all the tools to properly use/abuse a system are inplace to allow programs to be compiled and executed. to have a limited system in this situation would be worse than having no system atall.

  139. Just took such an exam by greatsasuke · · Score: 1

    I just finished my first year of college, and I took my CS final two days ago. The test was pretty fair, I thought, and broke down about as follows:

    30% multiple choice ("What is a valid form of a call to this function?")
    30% analysis ("Study this recursive implementation. Will it work as described? Why or why not?")
    40% coding ("Write some code that /whatever/")

    I feel that tests along these lines are the most fair. You aren't going to be shot down immediately if coding with pencil/paper isn't your strength, but it certainly helps. And I definitely agree with the posters that think coding by hand on paper is an excellent precursor to coding in the lab; the times I bothered to figure things out before I headed to the lab, I spent far less time on problems than when I sat down and started coding, fixing errors along the way.

  140. coding != computer science by Anonymous Coward · · Score: 0

    I am always taken aback at how many people on slashdot think that computer science is nothing but coding. It isn't.

    In fact, the vast majority of computer science courses I've taken (4 years undergrad, 3 graduate) have a lot of material that CAN be tested via written tests. In fact, just about anything you can take after the first 2 years is more theoretical than coding-heavy.

    Just think about what is out there: Algorithms is mostly proofs of correctness, or high level pseudocode. Theory of Computation (FSMs/Turing Machines) doesn't need any programming. Artificial Intelligence can do a lot without code (problem of representation strategies, Q-learning, bayes nets, decision trees, neural nets...). Even stuff like computer graphics could use a paper exam: examining the filters used, theoretical ray-tracing speedups, lighting models. Computer Architecture, anyone? How about network design - Queuing strategies, security, robust multicast solutions? Inverse Kinematics for Robotics (ie, how to efficiently control a robotic arm)? This is just off the top of my head. If you've been through 4 years of college, you've probably seen what's out there, and know all this.

    Coding is a tool. Sometimes you need it, sometimes you don't. But unless you know how to build a house using just a hammer, you shouldn't think that it is the ONLY component of computer science.

  141. Re: code on exams by e40 · · Score: 2

    Absurd. Where's why: if you do your job correctly and work for a responsible company, you will build confidence doing your job. When something goes wrong, you will be working with people you know doing a job you know.

    In an interview situation, there very well might be a few people standing around watching you that you've never met.

    The situations are very, very different.

    I know a guy that was put on the spot to write code with 10 potential co-workers standing over his shoulder.

    The times that I've had 10 co-workers standing over my shoulder were never tense situations, but always relaxed, fun times.

  142. well, of course... by gyratedotorg · · Score: 2, Insightful

    I find that I need to be sitting in front of a computer...

    of course it's easier to write code on a computer. you have the compiler/interpreter to immediately alert you to your mistakes.

    still, i dont see the point in these exams where you have to write a program on paper. its infinately more important to understand the concepts rather than to memorize the syntax of a particular language. thus, i believe that pseudocode should be the official language for written exams that involve programming in (at least higher-level) computer science classes.

    --
    Gyrate Dot Org - "Where high-tech meets low-life"
  143. I didn't have a problem with Pencil and Paper.... by Anonymous Coward · · Score: 0

    ...But that was in back in the days of Pascal. Pascal and Fortran were what your professors used in college, and were written down on a sheet of paper.

    In the golden days, people used punch cards. People had to think about how they were going to write their code, writing it out as statements longhand, and then punching it into the cards. So it's not like it hasn't been done before.

    I took the AP Programming test back in '91. It was pencil and paper, and I scored a 5 on it, but even I'll be the first to admit that pascal was much easier to code than C. There are some obvious reasons for this, procedures and functions were easy to write and to read. The way to use pointers were clear as day. Debugging a pascal program on paper is *so* much easier as well.

    And that's part of the problem. Professors have thought that computer programs has always been pencil and paper testable. And it hasn't really been until the proliferation of C & C++ where writing code without a compiler gets hard. Pascal and fortran were easy compared to things like pointer arithmetic and function pointers in C.

    But without some sort of test, most professors have no accurate way to gauge how well you have mastered the material that has been presented. Most profs know collaboration is going on, (sanctioned or not by the school), so homework is clearly not a good measure. If you're teaching a high-level computer science course, neither an essay test, nor a multiple choice test seems apropriate, especially when your students need to understand how some B(X)-tree node insertion/deletion/optimization works.

    Sadly, booking a lab of computers for a class test creates resentment among those who need computing resources during the day, unless your school happens to have more than enough computers to go around. (This was an issue at our school)

    So pencil and paper tests are waaaaay easier to create than a computer test.

  144. Are Written Computer Science Exams a Fair Measure? by GMontag · · Score: 2

    Are Written Computer Science Exams a Fair Measure?

    Yes.

  145. tests imply evaluation by Anonymous Coward · · Score: 0
    there are many methods to evaluate, or perhaps here it is better to say that different ideas and implements/skills that need to be evaluated will require any number and combination of methods to test. A good evaluator knows that tests should first of all be designed with the spirit of what is needed by the skillset in mind. They will also understand that, like in the RL manifestation of those skills, a battery of tests is often necessary to basically look at different angles of skill and understanding. Just like training/education that is 'well rounded' will often benefit the specific skillset in the long run (more than only training that specific skill), so should evaluation be a rounded method.

    That is nothing new, but like many things that are often well known, it is not practiced much. Programming, depending on the class and/or specific section currently being taught, includes syntax, grammer, style, consistency, algorithm usage, adaption, cleanliness, efficiency and probably specific elements (where you MUST use them regardless of whether you know a better way). So I would find it difficult to say I evaluated someone's skill at programming, when I used written tests. (I would shoot myself if I ever used multiple choice only... or even more than 33%)

    Some people suck at tests... period. Some are great test takers but have little adaptation and implementation ability. These are usually the BS artists and empty shells that have letters next to their name. (I have seen more idiots with degrees than intelligent and usefull degreed people... thus my recognition of degrees is very low, but NEVER counts against anyone)

  146. i find that by Gavitron_zero · · Score: 2

    the big problem that I have with coding in exams is the whole enviroment. When I code, I have 2 displays going, mp3's playing and a couple of ICQ chat windows open. For me, coding without these things makes me concentrate too much, and get hung up on little details that don't really affect my code...

  147. My experiences ... by Tjp($)pjT · · Score: 1

    For simple linear problems, no sweat, for object oriented systems a bit tougher. No matter how much I map out the problem in my head, or outline it in prose/pseudo-code, I get coders block occasionally when trying to write complex problems down in a linear manner on paper. I think across the problem boundaries and prefer an editing environment where I can bounce between modules / routines. I _really_ love the folding editing features where you can collapse statement blocks that you have complete (and you have to develop a comment style that comments the collapsed block).

    But those exams are just the start. Even with 25 years experience when you go into some corporations (MS for example) there are occasional times where they'll hit you up with a hypothetical, then ask you to sketch out the code on the white board. I did three coding examples over a 6 hour interview for a contract with the MSVSEE group. Part of that of course is to see how you handle stress. And maybe writers cramp :-). And currently I have a pet question I got from someone I interviewed and hired that is a practical problem in a hypothetical language that I ask people I am interviewing. The main thing is to see what approach to problem solving they have.

    So, get yourself in a relaxed zone, leave space around what you write, and if you have time or the problem is complex, sketch out the proposed solution in outline form with one statement per chunk you can easily code without worry. And if it is OO, do a normal design cycle, slightly compressed. Patterns if applicable, with a breakdown of roles, then specific interfaces, then do the individual modules as above.

    Step by step, inch by inch, slowly I coded ...

    --
    - Tjp

    I am in wallow with my inner money grubbing capitalistic pig. ... Oink!

  148. Best of both worlds by nukem1999 · · Score: 0

    ECE 291 (Assembly programming) @UIUC - Final consisted of one hour long multiple choice test (if you could call it a test, it was pathetically easy). Two hours consisted of a supervised lab period, about 20-30 students at a time, with a few small problems and all the tools a programmer would have (old notes, design specs, google, assembler to test for bugs, everything except your old code and talking to each other was allowed)

  149. CS has nothing to do with computers nor science by Arf4 · · Score: 1
    Computer Science is about algorithms, math and logic. Some classes I took in college were pure theory. Others had a ton of project work, but they always focused on correct algorithms....not hacking it out in front of an lcd for hours on end.

    I've found that people who didn't go to a decent college for computer science typically wind up as "Nick, your company's computer guy."

    Always defensive, always hacking away at a terminal, never seeing the big picture on a project.

    Anyone who wants to take a test with a compiler sitting in front of them is a hack. They should look for an MCSE examination instead of Advanced Placement in CS.

  150. 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...

    1. Re:One more thing I'd like to add... by Anonymous Coward · · Score: 0

      Ohh, you have no idea... The format of the International Olympiad in Informatics is exactly this, except the problems are (sometimes extremely) difficult both to solve and implement. 3 tasks, 5 hours. Stringent demands on exact output format (one needles whitespace and you might be out, source code is never inspected) aswell as memory use and time.

  151. i hope im not the only one by Anonymous Coward · · Score: 0

    this is a very good subject. one of the first iv actually read most of the comments on a topic

    iv written code for many years now. mostly on and off, but not till my recent job at a bank have it written it on a consistent basis and have actually been proud of what iv created

    i allways use paper to map out what i want to do first, example: database structure, work flow, iv even drawn out screen layouts and put pages of code behind it to give a better idea of what im trying to do

    but i allways find myself going back into other code iv written and just coping and pasting if it works the same or is close to working the same as it did somewhere else

    am i the only one? or is everyone, professional and amature memorizing code and writing from scratch everytime? to me thats a waste of time.

    maybe this would fit better under a topic like "to source safe or not to source safe?"

    as for the degree thing, i dont have one, and my code has proven my skills time and again, but to no avail, no new job interviews. i think alot of major corporations are looking for that piece of paper. teaching yourself just doesnt do it anymore now adays.

    -Mario

  152. There's writing code, and there's writing code... by Anonymous Coward · · Score: 0

    If you can't write code on paper, then what you probably do on your machine would be considered hacking, not programming. Most people write utter crap, and then use the debugger and the compiler to refine their code into working form. In my opinion, people who can write code well, can also manipulate design ideas in their head without having to "test" everything. Such people could work the overall structure on paper, and express the algorithms in pseudo-code, and then do the trivial task of translating those algorithms into a particular language. I don't think code monkeys deserve the title of "software designer" most of the time.

  153. S____y antivirus software and CBDTPA by yerricde · · Score: 2

    There's insignificant cost to running the compiler twice as often

    Unless, as several people commented in this story, management demands that you run antivirus software with the following policy: every time you run the compiler, you also run the virus scanner on the compiler binary, and the virus scanner takes twice as long as the compiler itself.

    or looking something up in a manual or on the web.

    Not if the CBDTPA passes, free software is declared illegal, and the operating system vendor makes its NDA'd developer manuals pay-per-read.

    --
    Will I retire or break 10K?
  154. ABSOLUTE BULLSHIT!!! by crovira · · Score: 1, Flamebait

    Utter crap. Saying "programming is very individual and specific to the programmer" is spewing TOTAL stupidity!

    The problem and the object model created to define it will provide the solution. That's the ONLY way to code it.

    The data structure falls out of the object model. The algorighm likewise falls out of the model after performing appropriate optimizations.

    Write code so the machine will NEVER do ANYTHING it doesn't need to. Not a extra disk hit, not an extra byte fetched, not a uselessly continued loop, not an instruction executed twice. Code the algorithm to deal with sub-optimal structure for the process that needs to be executed.

    Cache every execution result that you will need again. RAM is cheap. Time is not. Not even Bill Gates can buy the user another second.

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

    If you don't know what the fuck you're dealing with. Don't start writing the fucking code. It'll just be garbage. Worse, it'll be "almost" working and become a sump for development time.

    I loathe moron who keep saying that software development is an individual's preference. That a total crock spewed by ignorant ass-holes.

    Learn your job and write properly optimized algorithms or sell shoes for a living. I loathe debugging code written by dilletantes and "artistes."

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
    1. 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.

    2. Re:ABSOLUTE BULLSHIT!!! by Anonymous Coward · · Score: 0

      You, sir, are definitely an idiot.

    3. Re:ABSOLUTE BULLSHIT!!! by Anonymous Coward · · Score: 0
      The problem and the object model created to define it will provide the solution. That's the ONLY way to code it. ... I loathe moron who keep saying that software development is an individual's preference. That a total crock spewed by ignorant ass-holes.
      After that authoritative tirade, I had to go check out your own HTML source at www.softwareprototypes.com for a sense of whether you are a driven and focused genius with some eccentricities in the way of emotional reactions to matters of computational mechanics or someone with an image of his own abilities that does not coincide with reality.

      I'm not gonna be the one to break it to you.

      I will offer a few suggestions though: Browsers remove redundant whitespace, so you can remove all the unnecessary spaces between words in your HTML. That way, visitors to your web site don't have to download as much data to see the same thing. Think of it as writing HTML so the network won't transfer data that it doesn't need to.

      For simple HTML, you should try using a text editor instead of a WYSIWYG HTML generator. That way, you will see all sorts of problems that are normally hidden by the editor.

      Best of luck!

    4. Re:ABSOLUTE BULLSHIT!!! by Tadrith · · Score: 4, Insightful

      So, what you're telling me is that there is only one way to store data, and that personal preference has absolutely nothing to do with it?

      Wow, I'd really like to know what kind of programming you've done lately. Perhaps in procedural programming there is a set place to put things, but as far as OOP goes, I'd say there's quite a few ways you could arrange things. People have different reasons for coding things differently, both syntactically and in organization. One person may find it more convenient to store something in a simply ASCII text file, someone may find a small but efficient database system better.

      I agree, you shouldn't use more resources than you have to, but there are multiple ways of accomplishing things, each with their own benefits and drawbacks. If you can't see that, I'd really hate to see what happens when you have to work together with someone on something.

  155. My 2 Cents by BudVVeezer · · Score: 1

    I've never had an issue with coding on paper like that. Some people complain about debugging.. yeah, nobody writes code perfect on the first try. Writing it on paper forces the programmer to follow their code by hand to see what is REALLY happening to it. This is a great practice to get into, because when you are coding at the keyboard, you better understand what is going on. Is it fair to dock for spelling mistakes? I don't think so.. but is it fair to see if you have the logic there on paper? Certainly!

  156. In my day by rant-mode-on · · Score: 2
    • I have no resect for any exam that involves writing actual code on paper


    My first programs were written (yes, written) on paper and sent off to be put onto punched cards. You kids these days, you just don't know you're born.
  157. Understanding is more than syntax by Xife · · Score: 1

    Have you ever tried CRC Cards?

    Do you skip UML Class Diagrams, Sequence Diagrams, State charts and Flowcharts (for procedural stuff), and dig straight into the code?

    Do you have Java Interface classes with 40 functions?

    Will your whiteboard at work never be more than a todo list or doodle pad?

    Do you fix a bug only to create 5 more within the same monolithic function that should be refactored?

    Syntax checking is the least of your worries if you can't think up a solid structure/design.

    --
    ---- Smokin' another sig.
  158. Re:Ask Slashdot: Hiding Pr0n? by Anonymous Coward · · Score: 0
    Show her goatse.cx, act like you think it's hysterical (you know you do anyway), then make a grand show of finding the series of pictures that picture is from (it exitsts, I have seen it!) and put them all in a dir called "goatse stuff". Name all your pr0n variations of goatse01.jpg, goatse_man3.jpg, etc.

    Enjoy.

  159. As a professor... by Anonymous Coward · · Score: 0

    I love written exams, they are very easy to grade.

    Here is my grading scale:

    20% Program compiles
    20% Attempt to solve the problem
    20% Program sort of works
    20% Program Works Correctly
    20% Style and other concerns

    Each of the categories relies on the other, so if you program doesn't compile, you can't break 20%. This makes grading a snap, because I just look for missing semi-colongs, and give out all F's to teach the kids an important lesson.

  160. Code on tests separates the good from the bad by Anonymous Coward · · Score: 0
    I teach CS and have given many tests with coding questions. There are good and bad points.

    1. Good students can answer 20-40 line coding questions very well. They sometimes use arrows and such to rearrange the code for forgotten lines.

    2. Frequently bad students can't come close to doing things like writing a for loop to print the numbers from 1 to 10. Their lack of knowledge is evident.

    3. Most people could not answer coding questions in a typical class period if they used a computer and attempted to debug the code. I think they are better off not realizing what they have overlooked.

    4. It's very hard to grade coding questions. It's not too bad for the nearly correct code, but painful to grade the bad code.

    5. Similar separation of good and bad students can be done with other types of questions. I have recently switched to multiple choice. I think the coding questions are better, but more trouble to grade.

    6. A single long coding question would be difficult for most students. It requires excellent problem decomposition in a short time. Most students would need too much time to analyze the problem.


    If I weren't so tired of reading the bad answers and trying to be fair to students who really can't program, I would stick with coding on tests.
  161. You presume too much by LoveMe2Times · · Score: 1

    The basic gist of the question here is, "Is writing code on paper a fair way to test in a CS class?" To be frank, this question assumes so much that there's no good answer. Fair, test, CS, and class are so ambiguous that it will leave your head spinning if you try and pin down an objective answer. Let me run through some of the problems to illustrate:

    1) You asked about a fair measurement. Measurement of what? You're taking the concept of a "test" as used for "measurement" in the context of a "class," where the nature, purpose, and significance of the measurement is effectively arbitrary--being arbitrated by those who administer the "tests." You said measurement of coding skill; however, this is not necessarily the attribute the testers intend to measure. Hypothesize for a moment, though, that all CS tests that ask you to write code on paper intend to measure your coding skill.

    2) You said "fair." You then applied that word to a measurement. Generally, I would more likely use the term "accurate" when referring to a measurement. However, I think that you were referring more to the process of testing when you said "fair." What, then, is a fair process? We want to run a test, measure the results, and draw conclusions. (oversimplifying) As an emperical scientist here, we want the process not to introduce bias, or at most to introduce systemic and well understood bias. So I believe your questions translates to, "Does the writing-code-on-paper process bias the result (code) in a way that we cannot correct for before drawing conclusions regarding coding skill?" An "unfair" process would then yield incorrect conclusions even given accurate measurements and strong statistical correlation between measurements and conclusions.

    3) There's the kicker, though. Given accurate measurements and strong statistical correlation between measurements and conclusions. How can you tell the difference between poor process and inaccurate measurement? Presumably, you have a way to independantly verify that the measuring device works, so let's presume that you have a computer program that performs OCR and assigns a point score (measurement) to the code (results), so that we may be certain that the same handwritten test paper always gets the same score. Now how do you tell if your process was good? Make sure that you can repeat your own tests. Then get independant verification. Now, you have to go back to your theory and explain how the results fit into your theory. Hopefully, your theory will suggest other tests that you can run that will confirm your earlier results.

    4) Finally, we hit the fatal flaw in this question: we have to measure coding skill in some other way to see if the results agree with the writing-code-on-paper method. But the other method that you're appealing to here is /.ers' judgement. Effectively, you're asking, "If a measurement of coding skill obtained by writing-code-on-paper produces results that disagree with your own, does that imply a bias in the writing-code-on-paper process?" Well then, what is MY process for measuring coding skill, and is IT fair? Your presuming that there is some method that we can use to cross check the coding skill measurement. Sure, those of us in the field probably have a decent gut feeling, but have any of us measured our coworkes writing code on paper recently? Not likely...

    Anyway, you're presuming that all of the other aspects of testing are fair, and I made a huge assumption with the OCR grading program. What you get depends on the grader's mood, and other things. Also, the formulation of the questions biases the results more than anything. But that's testing for you.

  162. As long as they're lenient in the grading. by Vinnie_333 · · Score: 1
    I've always thought that coding on the fly for an exam seemed a little unfair, too. But I've always wound up doing just fine (mostly A's and B's).

    Mostly the purpose of making student's code for and exam is too see how much they know, not how much they've stolen off their study partner. If you did the work through out the qaurter, you'll do OK, if you didn't, you'll fall on your face.

    Now that I'm out in the work force, coding on the fly is the norm, not an exception (we need this, NOW - shows up out of the blue quite often), so I don't really see a problem with asking student's to do the same for a certain percentage of their grade.

    --

    "We shall party like the Greeks of old! You know the ones I mean." - HedonismBot
  163. Whats up with these places... by Pinball+Wizard · · Score: 3, Insightful
    First we have math programs that won't let you use calculators, now CS tests that make you write code on paper. There's always that argument..."if you get stuck on a desert island and need to rebuild society you won't have the benefit of these modern tools." I've actually heard a variation of this, repeatedly.

    The coolest professor(this was a EE class) I ever had did it this way - he made the tests extremely hard, but allowed open book, open notes, and calculators. His philosophy was that on the job you would use these tools, so you might as well use them on the tests. You were competent in the subject if you made it out with a C, and perhaps 2 people in a class of 20 would get an A.

    Actually, I think CS tests are pointless, period. They have very little to do with your skill as a programmer or knowledge of the subject. Its much better to give hard assignments that require lots of work before they are due(i.e. a two week assignment that is virtually impossible to finish the weekend before it is due). I can see concepts on tests, and perhaps a few functions to demonstrate knowledge of certain algorithms, but a 500 line program is ridiculous.

    --

    No, Thursday's out. How about never - is never good for you?

    1. Re:Whats up with these places... by elflord · · Score: 2
      First we have math programs that won't let you use calculators, now CS tests that make you write code on paper.

      I think the point is that the tests are supposed to be designed in such a way that you don't need a calculator or computer. The students whine about this because they reach for their calculators if you ask them 2+2.

      Another issue is with graphing calculators: there are some tests where the questions are conceptual questions about the behaviour of functions, and the students are supposed to be able to compute (for example) the vertex of a parabola, so giving them a calculator that they could graph it on would defeat the purpose of the test. You didn't bring calculators to elementary school when you learned your times tables, did you ? (or don't they learn those any more ?)

      Similar arguments are applicable with writing code on paper. Maybe you are testing the students capacity to check code for themselves, without having a computer tell them whether their program is correct. In the real world, of course, you have a computer, but your program is also very large, and an error will not necessarily produce an immediate bug that surfaces within 20 lines of the offending line of code.

      There's always that argument..."if you get stuck on a desert island and need to rebuild society you won't have the benefit of these modern tools."

      That's a straw man. The real problem is that you're not going to be able to simulate the real world under exam conditions.

      Actually, I think CS tests are pointless, period. They have very little to do with your skill as a programmer or knowledge of the subject.

      Sure they do. An algorithms test can ask questions about algorithms. They can be conceptual, they can involve proofs or pseudocode implementation. Either way, they test your knowledge and understanding of algorithms. Replace "algorithms" with any subject and repeat (-; Off-the-cuff remarks like yours strike me as cheap rationalisations employed by weak (or lazy) students.

      Exams don't necessarily test "your skill as a programmer", because they're not necessarily supposed to. Mastery of the syllabus usually does not mean the same thing as "skill as a programmer".

      can see concepts on tests, and perhaps a few functions to demonstrate knowledge of certain algorithms, but a 500 line program is ridiculous.

      I agree that a 500 line program is ridiculous, and I suspect that it's also an exaggeration. I've never seen any school do anything remotely like this.

  164. Well... by Anonymous Coward · · Score: 0

    This isn't about what you can do in the comfort of your bedroom; it's about how you can perform under exam conditions. Whilst not being real world conditions, this is good discipline. If this is the standard that everyone else (that you are in competition with) is measured by, and you do not measure up, then tough. It's not fair, but it is the way of the world.

    If your "open source and commercial" experience is up to scratch, then you have no need to sit exams in the first place. You can either program or you can't.

  165. PROLETARIAN by foonf · · Score: 2

    is the word you are looking for

    --

    "(Man) tries to live his own life as if he were telling a story. But you have to choose: live or tell." --Sartre
  166. Notepad, or ed? by yerricde · · Score: 2

    It seems that you've associated syntax and semantics with the visual cues of a computer.

    Quick, in what order do the arguments come in the C standard library's fread()? What about qsort()? If you were in a real coding situation, you could pull it up in man or something within two seconds.

    Stop using IDEs. Use the plainest text editor that you can find to write your code.

    Is using Microsoft Notepad OK (that's what I use half the time anyway), or do I have to go back to ed (or edlin, its MS equivalent)?

    Write code away from a computer. Use a pencil and paper.

    I did this in high school when I had already finished all pending short-term course assignments. It worked. Paper and pencil really helps a fellow visualize the analytic geometry necessary to develop a 2.5-dimensional real-time graphics engine. (Yes, 2.5-D engines are still in use on handheld gaming platforms.)

    --
    Will I retire or break 10K?
  167. AP Computer Science Grading by TravelSizedMonkey · · Score: 1

    I was preparing a student of mine to take the AP CS exam (A) a couple of months ago. The coding section is graded very reasonably.

    Let's say that in a function you've got a vector of objects and you need to call a member function on a certain set of them that meet a given condition.

    If you loop through the elements of the vector, you'll get X points. If you test the objects for the condition properly, you'll get Y points. If you correctly call the member function using the element in the vector, you'll get Z points.

    If your intentions are clear, but you make some logic error (OBOE in the loop, missing an upper/lower bound in the condition, etc.) you'll get half credit for that little section. (Generally the "sections" are from one-half to 2 points each, and the full function is around 4 points total, give or take 2 points.)

    In addition, if you make a syntax error you *could* lose more points, but *only* if you got points for that section. A lot of errors that people seem worried about (missing semicolons, braces, parens, etc.) don't make you lose points. (If you indent to show where braces are needed, you're okay.)

    The things that will cause you to lose more (one-half or 1) points are, in my student's opinion, insanely stupid things that you shouldn't screw up anyway, such as reading in new values for parameters, using types names instead of variable names, not declaring variables, or returning something from a void function. (There are others, but pretty simple like these.)

  168. in defense of coding exams by icknay · · Score: 1
    I teach CS at a university with lots of code-writing exams, so I'll try to speak up in their defense.

    Problem solving with the computer is the most important thing, so we have lots of coding homeworks to exercise that material. That's fine, but it still leaves a place for code-writing questions.

    A code-writing question is a very concentrated way for a student to show that they really understand a topic such as recursion or pointer manipulation. Ideally, the answer should be short, and obviously you don't want to grade on syntax or other superficial stuff. Forcing the student to visualize the data-structure and come up with solution code on their own shows off their understanding in a way that multiple-choice questions just don't get.

    Here's a paraphrase of one of my favorite old exam problems from a languages course were we talked about low-level memory manipulation in C....

    For the following function, 'a' points to a malloc allocation heap of the given length in bytes. The elements of a linked list (1, 2) may be allocated in the heap somewhere. Search the heap for the list, and if found return a pointer to the '1' element, or return NULL if not found. Assume that pointers and int are the same size, 'length' is a multiple of sizeof(int), NULL is represented by 0, and the list struct is not padded.
    struct list {
    int data;
    struct list* next;
    }

    struct list* find12(char* a, int length) {
    // your code here
  169. finals by Anonymous Coward · · Score: 0

    sounds like you're just pissed off 'cos it's results day today...

  170. Say that to the Mars Lander team... by Anonymous Coward · · Score: 0

    There have been several documented computer accidents relating to something as simple as a misplaced semicolon....sometimes the code has the correct syntax, but the error is semantic.

    My 2 Cents

  171. It's to prove that you aren't cheating by Anonymous Coward · · Score: 0

    I asked my first college CS professor this same question. His reply was that while the homework was a much better indication of coding skills, the written tests were a much better indication of who knew what they were doing and who was cheating, (or getting a LOT of help.)

  172. Food on the table by yerricde · · Score: 1

    Why the hell would you want to retrain yourself to be better at coding for purpoises other than writing programs?

    One purpose for learning to code is so that you can end up with a finished program. The other is so that you can end up with food on the table. Learning to code on paper gives you skills that get your foot in the employer's door so you can put food on the table.

    --
    Will I retire or break 10K?
  173. Boo hoo hoo by Anonymous Coward · · Score: 0

    We all feel terribly for you, give us a call when you graduate high school. After all, in university they just give you a degree because you are l33t and can install GNU/LINUX.

  174. Any exams that require you to write something by AussiePenguin · · Score: 1

    Well I'm not quite a computer science student yet, but I just had a GAT and that required two writing tasks which I found quite painful! I'm not brilliant at english, but even when given more time, flexibility and the ability to research the topic a little, I can write something much better.

    --

    Jeremy
    Melbourne, Australia
    Jabber Australia

  175. Coding is not linear by da+cog · · Score: 1

    A hand-written test seems to assume that coding is a linear process--that in coding one starts at the beginning of a task and proceeds in an orderly progression to the end. But I personally rarely do this. Instead, I break a problem down into parts, solve each of the parts separately (which may be further broken into sub-parts, etc), and then assemble them into the finished product. Computers make this process a pleasure since they make in really easy to insert and rearrange huge chunks of text. The same process, though, is nearly impossible on paper, where the only operations you really have are "put text in empty space on paper" and "delete text from paper".

    --
    Snarkiness is inversely proportional to wisdom because it emphasizes feeling right rather than being right.
    1. Re:Coding is not linear by Anonymous Coward · · Score: 0

      hmmm... and there is your problem. design is not linear, but coding should be. Unless you are writing perl scripts, then you should know what code you will break a task down to and plan the solution to all of its parts before you fire your the ide.

  176. It is very fair. by Anonymous Coward · · Score: 0

    As a student I would say that it was very unfair.
    It seemed so difficult, so subtle. As a TA I would say it is very fair. To learn the
    subtles of a language is quite difficult, to know that == is not = and to understand classes, objects, and pointer references is an art form.
    If you are a true coder then understanding written code and generating written code is trivial. Writing code on an exam also requires one to structure the answer first, rather than perform trial and error coding. Trial and error coding is useful in learning, but a bad practice from a software engineering viewpoint. If you look at coding as a mathematical piece of text then one should appreciate and understand the intrinsic relationship to the logic in which you create. Software is like math and can be very error prone. Psuedo code is like English and can be very abstract.

    That doesn't mean all languages are equal.
    And believe me, a TA or prof should be able to tell if you can pick up on the concept regardless of the syntax you create -- unless of course you learnt nothing in the class...

  177. Back in my day... by Lord_Slepnir · · Score: 1

    ...All i got for my Computer Science Final was a stack of IBM cards and a hole puncher. And then it broke half way through the exam. So I had to use my teeth. Of course, our teeth back then were a lot stronger back then....

  178. Yeah testing your knowledge is fair by Anonymous Coward · · Score: 0

    I think the use of syntax testing in high school/first year uni/all of tech school is very important as it comes down to learning the fundamentals of the language. If you were to take a humanities language course such as Spanish or French you are tested on the syntax and grammer of the language reguardless of how eloquintly you can speak it. If you expect to be called an expert or guru in something you should at least know everything about it including syntax.

    And the fact is in day to day programming, not just a code junkie, the more useful programmer is one who can communicate, especially the fundamentals, to another person. Reguardless of how well the programmer can use cut and paste and look up the online help if they can't even write down their own idea on a piece of paper they are useless.

  179. You need to do it. by Anonymous Coward · · Score: 0

    Don't be a wimp. The amount of skill it takes to be able to generate an answer while not at a computer and still be right is indeed greater than it takes to sit at a computer and "hack it out". That's intentional. And it's worth testing. If you're a programmer who can solve exam questions on the spot off the top of your head, then you've got a good grasp of your language, its syntax, and how to deal with your problem. This is immensely useful in the real world.

    Given 2 programmers, both of whom can design equally well, but one of which can do correct implementations quickly without needing to test them and the other of which needs to work on a computer, the skilled implementer is preferable. Of course in a real world environment you're actually going to have a computer, and you actually are going to test your code, but the clean implementer is going to go through this process quicker, because he or she will have less to correct.

    If you can teach yourself to know how to do "academic" problems cleany enough to pass a test, you're much more valuable and productive a programmer when it comes to writing clean and correct code.

    Not only that, but this kind of person is invaluable as a resource to other programmers, because if they have a question like "I want to do X using Y, how do I do that?", he or she can explain without having to resort to saying "I dunno, I could go back to my station and try a few things..."

    And lastly, I find that typically on exams the professors are looking for algorithmic correctness more than syntactic correctness. Since this is essentially testing "applied design" skills, it's again something very valid to test people on.

  180. Some practical advice by C-JiPH · · Score: 1

    At the end of the day, if you're doing a course which requires you to do a exams where you have to write some code, then you will end up doing exams where you have to write code.

    So side stepping all the arguments like "is this an effective way to test peoples abilities" etc.

    Here are some practical tips which I use when taking such exams:

    1. Write all your code AT LEAST double spaced, this leaves plenty of room to make corrections, insert new lines etc.

    2. Leave whitespace everywhere, particularly at the end of a question. This will make it easy to come back to a question latter and pad it out if you have more time. This is pretty general exam technique, although its particularly relevant if we're talking about having to writing code for algorithms where you may suddenly remember you've forgoten something.

    3. If like me your natural style of coding is an itaritive approach (i.e. first you write the function outline, then the outer loop, then the inner loop, slowly fleshing out your codde etc), make heavy use of functions!. Write all the complex parts of your code into seperate simple little subroutines. This will not only make your code more readable for the examiner (if you name your functions clearly), it is also easier for you as crossing out a little subroutine and re-writting it is easier than having to rewrite one big function because you forgot something.

    4. Finally as has been said before, unless you are taking a course which purpose was to specifically teach you the syntax of your target language, little mistakes are unlikly to make a difference to your grade. One would hope that someone marking an exam with snippets of code in the answers has been a programmer (or at least had to write a program) at some point themselves. Despite evidence to the contrary examiners are human, and will realise that the odd minor syntatical mistake should not reflect badly on your knowledge of the subject being tested.

    - Cj

  181. Code on paper == good by lkaos · · Score: 2

    If a professor just takes code from paper and then puts it into a compiler and just checks the output, then that surely is unfair.

    But if a professor takes the handwritten code and merely reads it, he then gains a valuable insight into the skill level of the student.

    If a student struggles with all sorts of compile errors but finally gets a piece of code to work, while another student generates the code very quickly, who has learned more? Who deserves the better grade? Who will be more productive in the real world?

    Having a compiler is like having training wheels on a bicycle. After a certain point, one shouldn't need either.

    --
    int func(int a);
    func((b += 3, b));
    1. Re:Code on paper == good by Anonymous Coward · · Score: 0

      Having a compiler is like having training wheels on a bicycle. After a certain point, one shouldn't need either.

      Everyone should be using microcode :-)

  182. Writing code is a skill, here is one way by fermion · · Score: 1
    Without being condecending, it occurs to me that programming, to many of the current student, involving starting off with a preexisting scaffolding and filling in the blanks. I even think some older programmers, given the code I have had to correct, see coding as little more than creating run on sentences. This, to me, is a result of learning to code on in IDEs rather than blank sheets of paper. The skill is valid, even if you code directly on computers, as it allows the development of more flexible and maintainable programs.

    So this is how to create programs on paper.

    First, divide the problem up into constituent parts. For structure programming, these are functions. For OO programming, these are objects. The functions and objects should be named with words that have high content. Humans can only hold 7-10 pieces of information, so there should only be 7-10 objects or function at any level. Once these functions or objects have been defined, establish a method of communications between them. Data that is shared must be very obvious, even to the casual observer. Hidden global variables are not acceptable.

    One these top-level entities are established, they can be fleshed out with code. Normally this will involve writing a bit of glue code for the functions, with other functions called, or creating data and member functions for the objects. Focus only on the problem at hand. Remember the 7-10 rules. If something get complicated, rename it as a function and write it later. The more correct code you can write, the better.

    If you find the need to call one top level function from another top level function, or declare public data in objects, you probably made a mistake and the architecture needs to be rethought.

    If you can get this far, I believe that you have shown a grasp of code architecture and grammar. You have also shown an ability to understand the problem and convert it into scaffolding that appropriate functions can hang off of. If you did a really good job, you have created code that can easily be expanded. All that is needed now is to flesh out the lower level functions, which can be done as time permits.

    So in conclusion, one needs to come up with some top-level functions and object. Create well-defined data and methods to communicate between these tope level function that will minimize the cross talk among them. Flesh out the entities with correct code, always keeping you focus as targeted and high as possible. This is a skill that takes significant amount of time and effort to learn. Read coding books, as reviewed on this site, to get good at it. There is not time on a test to think about such basics are make big mistakes. Do you homework beforehand.

    --
    "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
  183. Cs Tests (from the Prof's side) by Anonymous Coward · · Score: 0

    I write and grade these horrible tests (a good reason to be anonymous;-] ) as a CS prof at a reasonably respectable place. 500+ lines is too much for a in-class exam. In a language class, code snippets and short programs are appropriate because you are supposed to learn the grammar (sorry but that's what a C++/Java/C/... class is about). In other classes pseudo code is better. If you are having a mechanical problem with the tests, ask the prof about it at the very beginning of the class (i.e. before you fail any exams). Most universities and prof's are quite reasonable about alternative test conditions. (It does help if you can document a problem first). It is not fun to fail students. It is critical to bring this up before any tests because otherwise it looks like an excuse and I assure you we've heard them all (is that your third grandmother who just died?).

    cheers

  184. These tests are wrong. by acidblood · · Score: 3, Insightful

    I feel the same way -- every written test I had to take, I was proficient on the underlying theory, and would be able to code it in front of a computer. Most of the time I miss the 100% grade due to an off-by-one error, or an `if' clause testing the exact opposite of what I intended to. These sort of errors are easily spotted if you have a computer to aid in debugging, and that's why I believe coding tests should be done on a computer, period. Especially with students unfamiliar with the mechanics of coding -- after a few years of daily coding, a person seldom commits these silly errors.

    As a side note, having learned touch typing, it's really hard to write on paper. Thoughts flow much faster than handwriting, and you end up losing yourself sometimes. I'm positive that also affects other coders when doing written tests.

    --

    Join the NFSNET. Our prime goal is making little numbers out of big ones. http://www.nfsnet.org/

    1. Re:These tests are wrong. by lux55 · · Score: 1
      Thoughts flow much faster than handwriting

      It's not always a good idea to write down every thought you have. With a piece of paper, you're forced to use your head. A good programmer should be able to work things out without the aid or reliance on tools.

      Try it sometime. You'll hate it at first, but then you'll start to understand what you're doing much more thoroughly, and you'll come about better solutions as a result. I spend maybe 25% of my "coding time" with a computer. Another benefit is that I don't kill my eyes and wrists so much.

    2. Re:These tests are wrong. by elflord · · Score: 2
      I feel the same way -- every written test I had to take, I was proficient on the underlying theory, and would be able to code it in front of a computer. Most of the time I miss the 100% grade due to an off-by-one error, or an `if' clause testing the exact opposite of what I intended to. These sort of errors are easily spotted if you have a computer to aid in debugging, and that's why I believe coding tests should be done on a computer, period.

      I think the point is that you're supposed to "understand" it well enough that you can write simple programs that do not contain fencepost errors, and that you can write condition tests correctly. Of course a tool as powerful as a computer can help you diagnose your mistakes-- on a trivial 20 line program. On a program that is thousands of lines long, however, logic errors are not immediately detectable. That is why you want to be able to get it right without waiting for a core dump.

      This may sound harsh, but it sounds to me like you're just whining. I mean, everyone thinks they're "proficient on the underlying theory", but when it comes down to it, some people are more proficient than others, some are "proficient" enough to get simple questions right all of the time. My advice is to quit whining and just do the exam -- when I say just do it, I also mean prepare for it, practice with similar questions, and make sure you "understand the underlying theory" in a way that leads to giving correct answers on exams.

    3. Re:These tests are wrong. by sluice · · Score: 1

      Most tests I have taken capture tricks and gimmicks in the language, some so bizarre, you would NEVER see it in real world. This does not represent your ability to code, it only tests how much of a language lawyer you are, most of whom I have known have social skills that slow down or hurt teams. Furthermore, your finesse, taste, and ability to solve things can never be tested in a sterile laboratory. The real world does strange things to you, which, if overcome, represent true talent.

  185. They aren't testing your code, usually by Nelson · · Score: 2
    They are testing your ability to communicate. The best programmer in the world is useless if he can't communicate with the rest of his team. The idea behind those tests often is to see how well you can code/pseudo code up something. Often the problem is big enough that you can't just code up the answer right there and have to use some pseudocode and they get to see how you model a solution and start to build it. Now if they are going to get all syntaxy on you and doc you for swapping the args on memcpy or something then they aren't terribly good tests or really fair.


    It's also worth noting that this kind of thing starts to be the cross over from hacking in to software engineering. You know there is a whole school of thought and practice (usually only for very important things) where the developers don't get to compile their code. You get a document that tells you to produce something, you code it up, you hand it over to an SCM person who compiles it and tells you if it compiles or not (they don't tell you why if it fails) if it fails you and your team start combing through everything looking for problems. Once it compiles it goes on to test and they react in a similar way. The idea is that you find and fix other problems when you don't know what the problem is. It works, there are aerospace applications and defense applications that have been produced that way and the correctness of the output is staggering, so is the cost of production but it costs a lot to make really really robust software.


    As someone who has also done a fair share of BIOS and boot coding, there is something to be said for writing some code, reading it, seeing that it should be correct and then trying it. When it takes 15minutes to compile something, burn it in to an EEPROM or flash and then try it out you put a little more importance on proof reading the code regardless of what a compiler tells you. It's far more efficient to write something, debug it in your mind, rewrite it, then try it in those kinds of environments.


    While I'm writing this, I'm reminded of Linus' dislike of kernel gdb code. You know what his thinking is? If you need to walk through it in the debugger to make it work, then you probably didn't understand everything that was going on in the first place. I really can't disagree with that, the problem with his product is that there are a lot of rules and conventions that aren't well documented so you can read them, step in and write a driver and understand all that is happening..


    Personally, I start getting a little suspicious when someone can't code C++ or C without VC++ and intellisense or they need some wizbang Smalltalk IDE with drag and drop. Tools are great but they don't make the programmer. In the right hands they can make things more efficient and we all have our preferences but being unable to use other tools to do the same work isn't a limitation of the tool, the language, the platform or anything but the programmer. In the end, tools are just tools and all the tools in the world won't produce great products without great programmers using them.


    If you can't produce programs away from a computer then I'd start working on it. It really says more about the kind of a programmer you are than the test. There will always be anxieties and things like that, those are often related to test taking skills, but if you simply cannot think through a program and start to produce something that looks like code without a computer then I think you should start practicing it a lot more. You may be a hell of a perl or C coder but you might not be much of a software engineer yet. (not to be personal, no ill feelings intended)

  186. Crippled by the IDE by Anonymous Coward · · Score: 0

    Written exams for CompSci were easy before peoplegot used to using the IDE with contextual helpers. Face it, you're crippled in your thinking and need the crutch.

  187. This is a bad (foolish) question to ask by lingqi · · Score: 1

    To start off, let's define "fair"; actually, let's first define test:

    test is a mechanism by which a group will be divided into a passing population and a failing population. (In college, you can also further divide into A,B,C,D,etc)

    a fair test, or, at least, 100% fair test, does this division perfectly (in the rest of this i will deal with pass/fail only, it works the same between A/B/C/D whatever) -- i.e. 100% of the students (whoever/whatever under test) who deserves to pass passes, and 100% of those who does not deserve to pass fails.
    ex.: a test that passes 95% of the deserving population while also passes 95% of the un-deserving population is completely useless.

    now -- no test is 100% fair, let's first get that straight -- but, a good enough test will get pretty good at these ratios, so assuming that the test is good at what it does: separating the deserving and undeserving population: the question gets pushed back to a more fundamental level: which students deserve to pass?

    those with a firm grasp of computer science, of course. but this is enough of a debate-ridden debate (ha) without mixing in our debate. what exactly constitute such an understanding?

    In the end, the fairness you are asking (i am jumping ahead a couple steps of logical dedcution; complain if you can't make the leap) is that "is writing code on paper" a valuable skill which would determine my "deservability" to pass this test?

    *my* answer is yes. again, this falls into another whole bunch of debate that i won't get into -- but you now know where to look for more info -- however, some key points i will use to support myself:

    writing code on paper makes sure that you "design" well -- anybody can figure out a problem with a debugger (well, not everyone, but a fairly large population of programmers) -- but being able to critically find these errors while they are on paper / whiteboard / in your head makes a valuable skill as a programmer. you are no longer a slave of the compiler -- but rather using the compiler as intended: a TOOL. in software engineering, the main focus is design; everyone who thinks that programming (especially large projects) involves sitting down with some coffee and start typing are delusional and really should try taking some software engineering courses. being able to produce a flow-chart and convert that into psuedo-code is exceptionally valuable -- (excepiton is visual basic?) -- and that's really what most professors check for anyway -- logical thinking, algorithmic understanding, not producing dead-locks and memory leaks. relying on the compiler to do the error checking and "debug" when the bug should have not been there the first place because of bad design is bad programming -- and without that skill, i would say it's rightly so that you would fail / not do so well on your tests.

    a side note: if a professor is a ...hole and nit picks about every syntax err and typos -- (are they still considered typos on paper since i am not typing?) -- then you are screwed anyway so suck it up and do your best. we've been there too.

    --

    My life in the land of the rising sun.

  188. Oh.... didums doesn't like paper. by Anonymous Coward · · Score: 0

    It's people like you that make me glad I'm no longer near a university and the clever half-wits that infest them.

    It's pretty simple really. Ask yourself just what your prof is trying to test. As you didn't say what sort of exam it was I'll have to try and guess.

    If it was an exam on a programming subject they are trying to find out how well YOU KNOW the language - not how well your editor knows it, not how well your compiler knows it.

    Thus getting you to write it down allows the examiner to see both your thought processes and the results.

    If it was a more conceptual subject then the code probably would have been treated like pseudocode for marking purposes, so exact syntax would not have been important anyway.

    The thinking pattern is just as important in this case.

    Assuming that you really are addicted to outlining then there is nothing to stop you doing it in an exam - use the WHOLE book, do a text outline then the code. Put one function on each page and cross them out as your thinking evolves.

    As a bonus, almost all tests will give you high marks if they can see that WAY you are THINKING ABOUT the problem is correct - even if the solution is wrong.

    If you can do this then maybe, just maybe you won't be yet another useless university graduate who thinks typing speed is more important than problem solving skills.

    Learn to adapt. After all, it's probably the only useful skill you can get out of a University.

    E2.

  189. Grades don't matter. by Anonymous Coward · · Score: 0

    My solution is this: Just get >= 'D' and you're all good. Grades mean funk-all in the real world and all those try-hard 'A' students will be no further ahead come graduation.

    Employer: "How were your grades?"
    You: "Good."
    Employer: "Can I see a transcript?"
    You: "No."
    Employer: "Okay... You're hired."

  190. Computer Science vs. Computer Programming by Anonymous Coward · · Score: 0

    Universities are about learning an academic discipline, not about learning a trade.

    Computer science should be about the theoreticals of programming -- thinking and communicating in a shared language with other academics without having tools. Sure you need to know the trade to know the theoreticals, and you should be able to sit down in front of a computer and write code, but you should also know how to communicate the principles of the work without the tools.

    Computer science and computer programming are not and should not be the same thing.

  191. Paper coding identifies fakers by tlambert · · Score: 1

    You can fake having some measure of skill, if you have a machine in front of you.

    As a lot of people have already noted, there are people who use a compiler as a crutch, to catch errors. Just as people use a calculator as a crutch, or a spelling checker as a crutch.

    I would not hire a reported for a newspaper who could not turn in good work without a spell-checker (or worse, a grammer-checker).

    I would not hire a mathematician who needed a claculator in order to take a square root.

    And I would not hire a programmer who needed a compiler in order to write good code.

    I think that it's very important that the skills reside in the people, not in the tools.

    I also think that people who approach problem solving through successive approximation, using an editor and a compiler to judge their work product, are much less likely to solve a problem correctly the first time.

    Yes, it's amazing the number of problems you can solve with brute force. But a brute force solution will inevitably be suboptimal, and require rewriting by someone else... someone with better work habits.

    There's a lot of merit in knowing how to arrive at a solution, but there's also merit in knowing the answer before you start.

    Knowing how to use a tool is good; knowing how to build a tool, because you know how a tool arrives at its result, is better.

    As a final note, I will say that I have known a lot of programmers from the "sit down and code" school of computer programming. Without exception, these are people who I would not hire for a design position on a bet; I would prefer not to hire them at all, but if it came down to it, they could do OK in the production of prototypes. They are people who don't understand the value of planning, or provability, or process, and they are the people who will become upset when they are forced to use source code control, or to work in teams. They are people who can not solve complex problems, except by way of kludge. I guess the worst part of this is that these people often believe that they are "code gods", simply because they can produce code that, with a restricted set of inputs, gets the expected set of outputs, and they can produce it quickly.

    -- Terry

  192. I used to hate it... by lux55 · · Score: 1

    Now I do a large portion of my work on paper. I've never gone to college (aside from a brief stint at one of those crappy "learn to code in 12 months" courses, which I quit right away), but I had been coding recreationally for years, and my high school had a 3 year comp sci course where the teacher forced us to do 75% of our work on the chalk board and on paper. I f***ing hated it! Tests were almost all done on paper too, especially the exams.

    Then I moved cities and had to get a job, so I got up to speed with Perl, and I've been coding professionally for 3 or 4 years now. The problem was that when I moved, I didn't have a computer for the first year and a half I was here, aside from at work. So I took out a dozen books at a time from the library, got a big notebook, and coded all on paper. It was painful at first, but now I can't do without it. I find it helps to separate myself from the problem at hand, and since I use scripting languages (usually PHP now, with some Perl/Python/Ruby once in a while) I don't have to worry about compiling, and the code is much more like prototyping or pseudocode.

    I went back to my high school a few years ago and thanked my teacher for forcing us to code on paper, because now I use it constantly. It forces me to thoroughly understand the problems I'm working with, and to consider my approach more carefully. It also helps because with pseudocode you can make your own functions you don't have to worry about implementing until later.

    This also helps me when I do API designs, since I can put short UML diagrams interspersed with my pseudocode all over the page.

  193. Re:Answer: Not fair. But we have to do it anyway. by buzzcutbuddha · · Score: 1

    Shudder to think, I learned COBOL in college as a requirement, and while I *HATED* it at the time, I was required to plan my program, flowchart it, write up the output specifications, and write the program ALL on paper before I was even allowed anywhere near the computer. These assignments had to be done, and handed in, and if there was an error, even one tiny error, like missing the head of the arrow on the flowchart, 50% off of the documentation part of the project. No questions asked and no appeals allowed.

    It seemed totally unfair, but it was the best thing I had to go through. I got to be really thorough before I started working.

    I know it seems like such an impediment now, but people have done it since before punch cards, and it's just a skill you learn.

  194. Explicit Thinkers vs. Implicit Thinkers by Anonymous Coward · · Score: 0

    I think that there is an important personality dimension in coders that is relevant to their level of performance on written tests. A good name for this dimension would be the "explicit thinking vs. implicit thinking" dimension.

    Basically explicit thinkers understand a problem and conceptualize its solution before they start to code. Implicit thinkers went presented with a problem either do not want to understand or cannot understand a problem fully and thus they start coding in an exploratory way.

    Implicit thinkers use their initial coding attempts to understand the contours or possible solutions to the problem at hand. It is very neat to watch how the act of coding (usually without compiling or executing the results) can explore a problem. Given enough time the solutions that implicit coders find are usually comparable to those found by explicit coders. Unfortunately, because "implicit" coders require an interactive exploration of a problem they usually perform quite badly in comparison to "explicit" coders on written tests were its not that easy to write and rewrite the answer.

    Most "implicit" coders behave as they do from habit. Usually they learnt their interactive problem solving style while they were teaching themselves how to program. These coders just need to learn to take a step back from a problem before they jump into coding - it can be a little hard at first but overall the "explicit thinking" style is more effective.

    The minority of "implicit" coders that behave as they do because of a difficulty in understanding problems may be identified as having a minor learning disability.

    DISCLAIMER: I made up this dimension while selecting teammates for and then competing in two of the ACM international programming competitions.

  195. DisAgree by Anonymous Coward · · Score: 0

    Sitting in front of a computer coding allows for a significant advantage that is nullified by the paper format, namely the ability to run your code and correct mistakes. Seems to me that to successfully write code on paper requires a higher level of skill and depth of knowledge than to run successive programs until one of them fires correctly. This applies to written test in other subjects as well. A essay is better b/c it is able to be fact checked, but this advantage is not present in the exam format, thus testing your recall of the information and the firmness of your grasp on it.
    If you have problems with the exam format and are not subject to some learning disability, i would suggest that perhaps you re-think how prepared you are for the test and how firmly you know the material. It could be that your knowledge of code has always relied on the crutch of being able to run it till it worked. It also could be some sort of problem with testing in general, but I'm suggesting that you not rule out the other possibility.

    1. Re:DisAgree by Equinox · · Score: 1

      I disagree with you, sir. I once has a CS test that asked me to write a function that I created years ago, and had written many times since, from memory. Even though it should have been a cakewalk for me, a couple missing semi-colons and an incorrectly placed parenthese (is that even a word?)botched my grade all to hell. Of course, I guess it also depends on how anal your "instructor" is about formatting. But given it's coding, I guess they have every right to be. After seeing the horrible grade I received on the test, I sat down at a machine, and the damn thing compiled and executed perfectly the first time I tried. My mind works two entirely different ways when on a keyboard and when pushing a pencil. If I'm going to be taking a test on computer programming, put me on a computer. It doesn't seem like a fair measurement otherwise.

    2. Re:DisAgree by Anonymous Coward · · Score: 0

      is there any doubt that the person writing it in pencil can write it on the computer?

    3. Re:DisAgree by WowTIP · · Score: 2

      Well, that problem is not only related to coding, but writing in general, for me. Somehow it feels so much easier and faster to write with a keyboard than with the ordinary pencil and paper. I guess it has to do with computer text being easier to modify and rearrange than the handwritten stuff. Not to talk about the looks of the finished result. My handwriting isn't that easy to read, not that it's ugly, just hard to interpret. I just have to wonder how many points that has cost me at different exams?

      --

      --

      "I'm surfin the dead zone
      In the twilight, unknown"
  196. Funny you mention Microsoft by spideyct · · Score: 1

    I was going to add that that I had this same problem at my Microsoft interview.

    The recruiter wanted me to code some function in C, on paper, right there in front of him. It wasn't a very complicated function, but the environment made it very difficult. After I put together something that seemed reasonably correct, he proceeded to pick apart every little mistake, things that I easily would have corrected after the first compiler warning/error.

    1. Re:Funny you mention Microsoft by Anonymous+Brave+Guy · · Score: 2
      The recruiter wanted me to code some function in C, on paper, right there in front of him. It wasn't a very complicated function, but the environment made it very difficult. After I put together something that seemed reasonably correct, he proceeded to pick apart every little mistake, things that I easily would have corrected after the first compiler warning/error.

      I think people often miss the point of tests like these: they aren't just about your programming ability.

      A pressure test such as this also shows your approach to solving a problem, because the interviewer(s) can follow you as you work through it. It also demonstrates your level of communication skills; can you explain what you are doing clearly and correctly to your peers?

      It does also indicate a certain level of competence. It's all very well saying "oh, the compiler would have warned me, so I didn't need to get it right", but the compiler won't warn you about poor style, an obvious inefficiency in your code, or the fact that you used the wrong variable name although it made perfect sense according to the grammar of the language.

      A good guy doesn't make these mistakes in the first place. A less good guy makes them, but is sufficiently careful with heeding warnings and using diagnostic tools that he finds them and fixes them. A guy you don't want to hire makes them and then argues that it's OK because the compiler would have warned him if it had been real.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:Funny you mention Microsoft by pshlortz · · Score: 1

      Absolutely. The Microsoft interview tests are not there to see if you can program... They already think you can program since they gave you an interview.

      The tests are to see how you Think. If you have a systematic approach to solving problems then you have won the test. The problems are designed to stump you with stupid mistakes.

      And above all, he is right, they are there to see you workin under pressure. Relax a bit. Same goes for tests.

    3. Re:Funny you mention Microsoft by spideyct · · Score: 1

      I totally agree. I wasn't complaining that it was a "bad" or "unfair" interview. I was just relating my experience of how I also have trouble coding to paper.

  197. fair by jfm3 · · Score: 1

    There are no exams that are fair for everyone. One could even argue that there are no exams that are fair for anyone.

    Are you being tested on your knowledge of coding, or your understanding of principles?

    Study principles. Code is completely secondary.

  198. Re:Written exams are stupid I love PERL by Anonymous Coward · · Score: 0

    when you "compile" perl code and you are missing a curley bracket on line 14 it says "Syntax error on line 14 you may be missing a curely bracket"

    --mikeeusa--

  199. Are fair if done correctly by Anonymous Coward · · Score: 0

    Any exam that expects someone to write large chunks of code *that work* is utter arse!!!

    However expecting a CS student to be able to construct a psuedo-code algorithm is both;

    a) to be expected

    b) totally reasonable

    Provided: The marker lets the syntactical error slide and awards grades according to how well the student has grasped the logical task required. One of the fairest "code questions" I ever had to answer in a university exam involved changing the generation order for various combinations. We were provided with the full algorithims for lexographic and gray and an example of the desired generation order.

  200. If you knew how to code, it wouldn't be a problem by cstec · · Score: 1

    Using the computer as a crutch, i.e. iterative coding, CAN coax good code from adequate people, but if you knew what you were doing, you could write it down.

    Yes, I've been coding 28 yrs, doing bleeding-edge work. I use tests like this to help pick out the wheat from the chaff when it's time to hire. There's nothing wrong with the exam. It did everything it needed to.

    It's not enough to know it with the computer's help. You need to Know It(tm).

  201. Or worse... by Anonymous Coward · · Score: 0

    Heh. Not long ago, I was the only programmer at my company, but we needed to expand. My boss put me in control of the interview, and I had a LOT of fun... with guys I didn't think I'd be able to work well with (very odd company atmosphere... not just anybody fits in), I sat them in a half-width folding chair, asked them three questions, and made them code. Sat behind them in my boss's really nice leather chair, and watched them code. My boss puts the pressure on a LOT, and the guy I hired is handling it perfectly.

    1. Re:Or worse... by Anonymous Coward · · Score: 0

      excerpted from:
      "Hi, I'm a sadistic prick who writes bad software, and this is my idea of a good time."

    2. Re:Or worse... by Anonymous Coward · · Score: 0

      Can't argue with results, the guy [he] hired worked out fine. Remember that part of any job is how you will handle the unique pressures that that environment has. Some bosses motivate with pressure and treats, I don't like this, but would rather bomb out on an interview than take the job and find out later. Quiting wasted both my time and theirs, and I have to go find another job.

  202. You need to be able to do this by mmmmbeer · · Score: 3, Insightful

    I, too, find it easier to write code on a computer, but there are times when you need to be able to write something out longhand. If you have a lot of difficulty doing so, I suggest you practice it. It can be a very useful skill to have.

    First, it's something that will come up during an interview, and you can look really bad if you can't do it. I have given more than one interview when an otherwise impressive candidate was turned down because they couldn't write a relatively simple algorithm. I've also been on the other side of the table, where it really gave me an opportunity to distinguish myself. (Btw, from an interviewer's perspective, what's more important there is the approach, not the end results. I wouldn't be surprised if many of your teachers feel the same way.)

    Also, it's often necessary to be able to write out code when you're working in a team. It's not always enough to just describe your approach, especially if another programmer wants to go a different way. It's like any visual aid, it helps you get your point across.

    Finally, it can be useful when working on your own. I sometimes find that it's helpful for writing complex programs if I sketch it out longhand first. It helps me guarantee I haven't left anything out, so I don't have to go back over my code as much.

    So, is having students write code on an exam a good way to test their coding skills? I don't know. But maybe coding skills aren't all they're testing.

  203. My Momma by Anonymous Coward · · Score: 0

    I personally think that you should be about to bring your mom into the exam. I often get tired, or need a drink during an exam. If I could have my mom there to encourage me, that would be cool. She says i'm a really good at programming.

    Grow up!!!

    Exams are meant to be hard. If you have problems... practise more.

  204. Paperboy.. by bryans · · Score: 1, Insightful

    I actually find it easier and better to do it on paper first. My solution is likely to be more thorough and with less logical errors, doing it on paper.

    When you get to a certain maturity level at programming you should be able to do it in a methodical manner - paper and pen first, before coding and the keyboard.

    Start coding with discipline. 'on-the-fly' coding might seem far quicker, but wait till you face large complex problems.

  205. Here's some pseudo-code by Anonymous Coward · · Score: 0

    if(you're fucking the professor) {
    You'llGetAnAAsLongAsYourDickIsBig();
    else
    You'reFucked();
    };

  206. This is Bullshit by The+Living+Fractal · · Score: 2, Interesting

    An exam is an exam, everyone takes the same fucking one, or something which is basically the same, which teachers do to deter cheating -- you, however, are whining. Just like I whined about Trig in High School, yet everyone had to do the same exact thing, so I was an idiot.

    But at least I learned, and moved on. I mean come on man, you're just grabbing for sentiment. Go take the fucking test, you either know how to write code, on a napkin, on paper, in a computer, on your girlfriends back as you rail her from behind, or your boyfriends, from the looks of it, but it doesn't fucking matter any way you look at it: it's you who writes it.

    This test is a measurement of nothing more than your ability to take this test. Why do people think it was ever anything more?

    Want some cheese or what?

    --
    I do not respond to cowards. Especially anonymous ones.
  207. No they are not fair BUT.... by Brian_Ellenberger · · Score: 2

    No they are not fair, but they are probably the only way of assessing whether or not a student in a lower level course (sophomore or below) has really learned the material.

    This goes back to a previously Slashdot article on getting help on your Computer Science programs. Someone in a beginning CS course can probably "get by" on their programs by getting help (honestly or cheating) and/or by using the internet/books for examples and hacking away at the code. The only way to really assess whether the student has learned anything themselves is to sit them down in a closed atmosphere and see if the student really knows something by giving them a test.

    Now my experience has been that in upper level classes the amount of code writing done on tests is greatly reduced. This is because being able to "get by" on the more difficult assignments is harder and there is enough material of greater complexity to test the student on higher level concepts without requiring getting into detailed code. The student is still expected to write pseudocode however, but this is more to show that you can solve a particular problem (say creating an algorithm) than testing your ability to write C code.

    The ability to write code/pseudocode outside the computer is not a useless skill. In my experience I have done alot of whiteboard coding in groups on different projects when brainstorming solutions to problems. I have also had to do it on interviews to show I knew my stuff.

    Brian Ellenberger

  208. Get rid of the compiler by thebigmacd · · Score: 1

    I have never taken a CS course, but let me throw an idea at my fellow /.ers. From my reading of the posts, it seems that people are assuming that if an exam is to be taken on a computer, a debugging compiler is automatically present. The limitation of plain paper exams is that the coder must in effect write everything in a linear fashion or face space restrictions. Perhaps the simple solution would be to allow the use of a plain text editor (vi, emacs) but lock down all other software on the machines. I know this is either impossible or too time consuming, but at least the coder could insert lines/blocks in the code easily.

  209. Syntax is bullshit by TerryG · · Score: 1

    No CS course should require you to know any syntax. Coding? Leave that to programmers. A computer scientist needs only know what a linked list is, not how to get it to compile, be it in LISP, C++. SmallTalk, Java, or Logo.

    --
    --- this space intentionally left blank.
  210. I'm curious... by Anomolous+Cow+Herd · · Score: 2

    How could he work things out on the paino if he was deaf?

    --

    "I don't know that atheists should be considered citizens, nor should they be considered patriots." - George Bush
    1. Re:I'm curious... by Anonymous Coward · · Score: 0

      Mozart was not deaf. It was Beethoven who lost his hearing.

    2. Re:I'm curious... by Anonymous Coward · · Score: 0

      He had his fingers on the keys while playing, so he could feel the vibrations.

  211. 500+ lines?! On an EXAM!?!?! by dutky · · Score: 2
    In the entire 4 years that I spent in the CS department at a well respected state university I never saw an exam that required more than 100 lines of actual code to answer a question. All of the heavy lifting was done in the projects, and only snippets or toy programs were used for exam questions.

    If your school is making you write hundreds of lines of code, on an exam, and requiring that the code be ready to both compile and run flawlessly, I'd advise you to look for another school: first, the fact that the department seems to fixated on generating code in a particular language is a very bad sign. Computer science is not about coding, but about the theory and structure of programs and computation, none of which needs to be expressed in the kind of strict syntax required of real-world programming languages. Second, the fact that the department even thinks that anyone could write hundreds of lines of code in a couple hours and have any hope the code compiling correctly, much less working, is ridiculous and suggests that the department itself is less than top quality.

    All of that said, when I was required to write real code on an exam, there was always some leeway for 'typos' (or whatever the equivalent is when you are writing with a pen, rather than typing at a keyboard). Most of the time, however, only psuedo-code was required. Even my computer architecture course, where we discussed scheduling of machine instructions, allowed the use of entirely hypothetical assembly languages on the exams.

  212. It works fine by Unregistered · · Score: 0

    My only experiance is AP computer which is a joke. We have written tests which are write a function to do this and this and write a bigger function that uses the first two. Usually 2 of these per test. They don't check stuff the debuggger catches (semicolons, etc.). All that matters is does it work and is it efficiant. If so, full points. IMO, this is a good check. If you can't do this a debugger won't help. You'll just be starting at garbage wondering what the fuck happened.

  213. Programming is a necessary tool by VP · · Score: 4, Insightful

    Unlike fluid mechanics, where you can learn, and do research without knowing plumbing, you cannot be a good computer scientist without being very good at programming. Exams, which require you to write correct code, are usually done in introductory classes where the goal is to teach you programming in a specific language.

    Learning the exact syntax and idioms of a particular language in an introductory class is necessary, as it teaches you how to learn a new language as much as it teaches you the basics of programming.

    1. Re:Programming is a necessary tool by Lictor · · Score: 2

      Excellent point.

      I do, though, think it possible to be a good theoretical computer scientist without being a "very good programmer". The level one works on here is so abstract, that being able to write blindingly efficient C code is far less important than being intimately familiar with axiomatic set theory. And these folks still make a very important contribution to computer science as whole.

      In most other areas of CS though, you're bang on.

    2. Re:Programming is a necessary tool by Multispin · · Score: 1

      introductory classes where the goal is to teach you programming in a specific language I can't speak for other universities, but the CS department at the University of Washington has decent focus on CS and not programming in our intro classes. We bring up basic data structures and basic Big-O analysis.
      I just graduated with a degree from this department and I NEVER had to write more than, say, 20 lines of code on an exam.
      I've also TAed the intro courses. The exams we gave might ask a student to 'Implement insertion into a doubly linked list'. We usually gave them the function prototype and maybe the node struct def. We are VERY loose on syntax. Heck, we'd even give partial credit if they just wrote psudocode!

    3. Re:Programming is a necessary tool by newdaemon · · Score: 1

      The idea that you need to be very good at programming to be a good computer scientist is completely false. There is alot more to CS then whether or not someone can crap out a few hundred lines of code. Understanding the logic behind the code you write and being able to prove it are what is most important. Computer code describes algorithms, not the other way around. You can do plenty of research in CS without knowing how to program. This is why most schools make you take so many math classes in addition one or two pure programming classes.

    4. Re:Programming is a necessary tool by gregbaker · · Score: 2
      ...introductory classes where the goal is to teach you programming in a specific language.

      Teaching a specific programming language is the goal of no introductory computing science course. If you took one and still think so, you missed the point.

      In an average introductory CS course, you should learn things like ADTs, recursion, control structures and basic algorithms. Depending on the slant, also some introductory OO.

      Learning things like "put a semicolon after each statement" or "'else if' is really two words" are just side points that let you do an assignment that exercises the real concepts. I know of some CS courses that give students a choice of the language for their assignments. I think this is a fine idea; it forces them to realize that the language doesn't matter (concept-wise).

  214. This is strange. by Anonymous Coward · · Score: 0

    Why? Well I went to University more than 20 years ago and one would have expected that CS exams would have required one to write more code then than now (we were typing onto punchcards at the time for our programming assignments).

    I can't remember having to write more than 10 lines of code at a time on an exam (Structured English yes, code no!).

    What is the theory now? That writing code without a compiler shows some extra talent I have not heard of before?

    Someone please explain!

  215. It's fair. by Anonymous Coward · · Score: 2, Interesting

    Maybe you're missing the fact that there are those of us who can handle such tests. I'm sorry if this is out of your grasp but keep on trying and maybe one day you will be able to do the same thing. I've tutored plenty of students in many programming languages and there really is just a few who understand things well enough to do exams on paper. They also turn out to be awesome programmers in the end. If you can't handle writing code on paper then stop filling up an industry that used to be populated by intellectuals. Stop causing the standards to be lowered in the universities. Anybody who has been within the academia environment for the past 20 years knows what I'm talking about. The students have gotten dumber, probably because the job pay has gone up.

  216. 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.
  217. The best formula for the class by gers0667 · · Score: 2, Interesting

    I'm a CS student at Kettering, and I've never had something more than a 5 page exam. We have labs where we are graded on technique, and then tests based on theory. Example... I had to write parser code in Java, but for the exam, I had to draw the Parse Tree, no code at all.

  218. Definitely pseudo-code by babycakes · · Score: 1

    Both in exams and outside of them, I tend to do most of my work in pseudo-code first as it helps me to get my head round tricky sections of code. I find it's much easier to sit down and say "This needs to happen (scribble) but only when this is true (scribble)", and from there you can begin to construct basic code around the pseudo-structure - far easier than delving straight into the code :)

  219. 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.
  220. Simple: you miss the syntax and error checking by barspin · · Score: 1

    I know many "experienced" professional coders who can't write more than 30 lines of C++ without an IDE to check for syntax. This really shows a lack of basic knowledge of the language with which one is working.

    Were I an employer, I'd much rather hire the interviewee who quickly gets to work on a whiteboard over the prospective hire that chokes when asked to write code without a terminal and IDE. It's a matter of productivity. Does anyone want programmers who are spending their time fixing one syntax or structure error per every 4 or 5 lines? Probably not. In this labor market especially it is essential to know your craft inside and out. For programmers, that means knowing your chosen language and it's quirks without a syntax checker.

    It's not that you can't do the coding without a computer. It's that you're lost without the IDE to "remind" you of the language's syntax. Stop whining about exam setup, which is unlikely to change anytime soon, and learn your stuff thoroughly. You'll also be that much further ahead of your peers.

  221. Writing code on paper sucks by themurray · · Score: 1

    I found that I could write code three times faster. Psuedo-code is the devil ;)

  222. Re:We did these at the Rochester Institute of Tech by Anonymous Coward · · Score: 0

    I go to UMD and we where required to code on all or lower level exams. We where not only graded on correct structure but we lost points for such little mistakes as not indenting properly. It's a real pain to have to rewrite a whole function just to insert a new variable at the top. WE definitely had no time to rewrite or code 3 or 4 times and where expected to just bang it out. It seemed to be the general agreement among my classmates that coding this way nowhere near showed or talent. Many of us found our selves writing sloppier code this way just so we didn't have to redo what was already on paper.

  223. Re:Simple: you miss the syntax and error checking by SilentStrike · · Score: 0

    The ability not to forget a semicolon at the end of a line, or match parenthesis in a resonablely complex expression correctly is a much less important than fundamentally understanding the algorithms the class is teaching. At least in my exams, simple syntax mistakes didn't matter, and we didn't have to code anything that long. If you were an employer, would you prefer someone who write compilable code all the time? Or one who had a sound fundamental understanding of various algorithms?

  224. Can you say interview? by beerman2k · · Score: 1

    I hate to drag out the obvious once again, but have any of you ever interview for a job? For many, many jobs you'll have to write lots of code. In some interviews I was asked to write code that took several hours. This coding was done on paper (or a whiteboard) not on a computer. Being able to code when you're not infornt of a screen is an important skill to have. You might not like it, but who likes taking tests anyways.

  225. My thoughts by da3dAlus · · Score: 2

    I'm going to skip reading most of the comments and post my $0.02, even though I'm sure it may be similiar to a lot of other people's thoughts.
    It all boils down to the professor most of the time. For the most part, I agree that if exact (ie, correctly formatted and working) code is required, you HAVE to be sitting at a computer and have a chance to compile, find errors, and fix your code. However, I had a lot of professors that were more concerned about the form and function as described by pseudo-code.
    Honestly, I have found that paper code makes you more prepared for the real business world. ie, If you are working as a programmer, and you are discussing specs with a client, there may be times where you need to think quickly about a problem from the programming perspective. This usually (for me at least) gives me a minute to jot down some code that pops into my head--without regard to whether or not it will actually work the first time. If you depend too heavily on using a computer to make sure that code works, you may not be able to trust in yourself. I kinda equate it to the argument that reliance on calculators makes you forget basic math when you're in a pinch. If you do a little on paper now and then, you keep it fresh in your mind--check it on your computer/calculator later.

    --

    Sometimes I doubt your commitment to Sparkle Motion.
  226. Re:Ask Slashdot: Hiding Pr0n? by Anonymous Coward · · Score: 0

    Ok, a few ideas here... first get ACDZip as well, it supports sef files which are 256 bit encrypted archives, put a good long password on them, give then random names. ACDSee can browse inside sef fils just as if they were folders. Almost as fast too, if the sef files stay under about half a gig or so. Turn off the thumbnail database in ACDSee, as well there is an option to clear the part box on exit. Also, batch rename all your pron so no file names can give you away. Do that and you should be good to go.

  227. Language details are for beginners... by Prof.Phreak · · Score: 1
    The problem is that most universities should concentrate more on design and theory than on syntax and language. Language details (syntax, etc.) are for beginners. True professionals can generally learn a language in a matter of hours (learn it well enough to write non-trivial code). After you write your own compiler, learning ANY language becomes just as trivial as reading the grammar and a few minutes of practice.

    I teach (yey) at two vastly different schools. One school is the traditional' theory based school, and the other is the 'devry' type learn syntax and don't care about understanding type. In one school, I give language independent projects, ask people to come up with algorithms, etc., in another the students are so far behind in actual understanding of computer science that I have no choice but to resort to testing their syntax (since there isn't much you can do when students have problems with for loops - and are 2 months away from graduation!).

    Now, if your class is something like "algorithms" they shouldn't really care if you miss a comma or a brace, etc., as long as the idea is correct, but if it's something like "Java 101" and you write something that resembles QBASIC, then there is obviously a problem.

    So the original idea of writing code on paper should only be used either in beginner classes or in 'devry' like schools, all else should be a bit above 'code' and more into algorithms and concepts.

    --

    "If anything can go wrong, it will." - Murphy

  228. I would by harborpirate · · Score: 1

    I'd argue that you are not only eliminating the worst candidates with that type of test, but also the best. The best programmers do not remember code in a specific language. The best programmers do not waste valuable "brain space" remembering trivial crap like linked lists that none of us would ever write in practice (since its been written a bazillion times anyway).

    Writing code is not done in a sterile, non-networked environment without books. We do not code on the top of Mount Everest. Good programmers certainly will not waste a companies time and money by writing a linked list from scratch. Knowing how to write code in a specific language is one thing, knowing how to write some trite piece of code that you haven't written for 5, maybe 10 years is another.

    I say, if you're going to ask for code, ask the interviewee beforehand what types of things they've been coding recently and ask a code question along those lines. Do a little work yourself instead of asking some lame ass question that no one would have any good reason to remember the answer to. Hope you like those greenhorns or anal rote memorizers you've been hiring. They must be either close enough to having been in school or a one language pony to remember useless junk like exactly how to write a linked list.

    Frankly, I'd be more apt to hire a candidate who told me writing a linked list was a stupid question and that he'd just look up sample code than one who wrote it perfectly. I don't want droids working with me, I want problem solvers. That is what programming is all about, after all.

    In short, unless you're hiring for the position of linked list expert extrodinare, asking for on the spot compilable code for a linked list is most likely a waste of time for the interviewer and the interviewee.

    --
    // harborpirate
    // Slashbots off the starboard bow!
    1. Re:I would by denial · · Score: 1
      Could you be any less consistent? You ask for problem solvers, and then you say you wouldn't want someone who could code a linked list. A linked list is just another problem, but it is a good one to test a job candidate on for a number of reasons.

      1. A linked list is something every programmer should understand. Whether they "remember" how to program it is irrelevant, if they don't remember what it actually means they can't be let near any code that uses any data structures, arrays, library collections, etc. So it tests whether the person has even a vague inkling of what a data structure means. If they don't, it doesn't matter how many structures they can find in libraries, because they have no means to evaluate which one to use.
      2. Given that most programmers understand exactly what it is, but most can't remember how to do it verbatim, it's an excellent size and difficulty for a basic problem. If you know what a linked list is, but you can't write one, don't kid yourself, you are not a good problem solver. At least not in code.
      3. A linked list is also an excellent problem because someone with stage fright can still demonstrate they can solve the problem, by discussing what the linked list is, and when you would prefer one over an array, time complexity of access patterns, etc.
      4. By saying that only "linked list experts" would need to write a linked list, you only embarrass yourself. General purpose data structures are slow precisely because they are general purpose. A small but significant portion of code any decent coder will write in their career will be very specific purpose code along a critical perfomance path. A typical optimisation is a lightweight unbounded data structure, something you might consider a linked list for. If you are incapable of ever working on optimised code, I don't want you on my team.
      5. Last, the principles that underpin a linked list also have much broader application. If you can't write a linked list, how will you use chaining elsewhere. I know I want to be able to talk about design patterns like composites and interceptors etc without having to explain chained Object/data structures.

      Your suggestion to ask the candidate about what they have been working on typically takes you into areas you are less familiar with and they are more familiar with. That path leads to hiring people who talk rubbish with great aplomb and confidence. In any case, a linked list is such a trivial concept that there is no waste of "brain space" to remember one. In fact anyone who is bright would be hard pressed to forget it.

  229. opposite for me by Anonymous Coward · · Score: 0

    WOW, Im completely the opposite, I actually code better on paper then on the computer. For me the computer interface distracts me, so I isolate myself from it, code on paper, then come back to the computer to type it in, It seems to work better that way for me.

  230. I suppose you've never heard of planning for... by hackwrench · · Score: 1
  231. It is silly - the question that is by harborpirate · · Score: 1

    In psuedo code, I might agree with you. In a specific language, requiring it compile, no. Yes, a good programmer should know basic concepts, but more importantly, a good programmer should be able to use basic concepts in a language independant manner. Why would anyone want a programmer to know how to code a linked list? Its a waste of time. No one is gonna code it from scratch, its a trivial and demeaning question. I know if I went into an interview and someone asked me for code like that, I'd tell them straight up that I'd look that up in a book or online, and that it'd be a waste of my time to write it. Maybe if you're hiring greenhorns straight out of school you might ask a dumb question like this just to make sure they aren't completely clueless, but for experienced programmers its frankly a poor test to find a good problem solver. Really, in my opinion, it shows a lazy interviewer who hasn't bothered to come up with good questions.

    --
    // harborpirate
    // Slashbots off the starboard bow!
    1. Re:It is silly - the question that is by elflord · · Score: 2
      Why would anyone want a programmer to know how to code a linked list? Its a waste of time. No one is gonna code it from scratch, its a trivial and demeaning question.

      I'd want to know, because a hell of a lot of people graduate from CS degrees without knowing how to do this properly. You're not really looking for whether the interviewee can write the code with immaculate syntax, the main concern is whether or not they understand the basic concepts, and all of the subtle implementation issues

      I know if I went into an interview and someone asked me for code like that, I'd tell them straight up that I'd look that up in a book or online, and that it'd be a waste of my time to write it.

      That's like an elementary school student telling the teacher that they'd just use a calculator if someone asked them to add two numbers. Of course, one could do it like that, but the point is that the interviewer is interested in knowing whether or not you understand how to implement a linked list. There's a good reason for asking questions about a data structure that has been implemented millions of times-- it's something that everyone is expected to know how to do.

      Maybe if you're hiring greenhorns straight out of school you might ask a dumb question like this just to make sure they aren't completely clueless, but for experienced programmers its frankly a poor test to find a good problem solver.

      Even people who write programming books frequently make a complete mess out of linked list data structures. So I'd consider the question fair game, even for "experienced developers". By the way, I think you're greatly underrating the subtlety of this question. It's not trivial, there are a lot of interesting issues and tradeoffs that come up in designing such a class, and most books screw it up.

    2. Re:It is silly - the question that is by MrBandersnatch · · Score: 1

      "It's not trivial, there are a lot of interesting issues and tradeoffs that come up in designing such a class, and most books screw it up. "

      I certainly dont recall being given a grounding on the issues regarding the implimentation when I learned C and thus I thought I knew what I needed to know when I learned C++. How wrong I was ;) Good article to say the least.

  232. Coding for projects--Exams for concepts by geisler · · Score: 2, Interesting

    I'm shocked to see how many people are complaining about this issue. To me, the real test of your coding skills should be done with homework assignments and projects. They show that you understand the problem and how to solve it using the paradigm given.

    As others have said, the role of exams is to test the CS concepts being taught: algorithms, methodologies and problem solving skills. It's important to be able to demonstrate you know what a linked list is and when it should be used instead of an array, but that doesn't require a significant amount of coding in the test.

  233. Not Just Comp Science by luckymat · · Score: 1

    It is the same with all academic subjects. Like solving physics problems, without text books to give you base equations to start from.

  234. Nothing is going to be perfectly fair by avail · · Score: 1

    I agree with the writer's feeling about writing code on paper, but I think you have to be pragmatic about it and realize that testing is never perfect. There are probably people out there who would object to writing the same test on a computer (although this wouldn't make much sense if you were a CS student). Ultimately I think most professors/TA's will realize that paper is a disadvantage and mark accordingly. I think resources are also an issue. I don't know how it works at other schools, but I go to the University of Waterloo, which has a pretty well established CS program, and we don't have the resources to have exams on computers... not when you have classes of 80+ people. To construct a closed environment for exams would be a nightmare for the school. Also, marks are never really the point of a University education. The valuable part of a CS degree (IMHO) is that you are forced to actually code.. to figure out complex problems and work your way through them. Unless you are shooting for graduate degree, or want to work at MS, I think life is too short to stress about the format of tests.

    --
    five fingers make a fist amalgamate and resist
  235. They suck by essdodson · · Score: 1

    Hand written code is really a bitch. All of my CS tests in coding classes have had rather large coding poritions to them. While I understand there's very few ways to show that you indeed know how to code, University CS programs shouldn't focus on a language.

    If the professor grades the hand written code solely on the logic rather than symantics then I agree that hand written coding tests are acceptable. However often this isn't the case. If you're testing on the language its only fair to offer these tests in a real world situation, one where you can run the code through a compiler a few times and find your errors which are bound to happen.

    --
    scott
  236. Paper Coding in Exams Does NOT Work for Me by Anonymous Coward · · Score: 0

    I am very comfortable with writing code with a
    text editor. The thing about writing code on paper during exams is, well, very, very silly. My uni asks us to write code all semester with editors ( or IDEs ) and then abruptly exams us on paper.
    I cannot see why the uni just provide even a text editor without access to the compiler or anything else so that we can complete our exams.
    I very used to coding with a text editor on Linux and I pay the price, I think, when I am forced to write on paper during exams. I know that it is not a measure of my abilities or understanding.

  237. Re:First? by Anonymous Coward · · Score: 0

    Mod-bombing. Fascist mods look through yr posting history and mod down previous posts.

  238. They Suck! by mrbrown1602 · · Score: 1

    The teacher I had for computer science my senior year in high school... not only could she not teach incredibly well (at the end of the 2nd semester, we had gotten to 2 dimensional arrays in BASIC! UGH! Not like I had to listen or anything... she told me I could do whatever the hell I wanted for the entire year), but she had a tendency to give written exams for computer science... you shouldn't have written exams in computer science! It doesn't reflect your coding ability. In a related story, LSU didn't let us use calculators on our math credit exams... how the hell are you supposed to do COMPLICATED logrithims without a calculator, slide rule, or log table?!

  239. ditto by Anonymous Coward · · Score: 0

    This is why I became a Philosophy Major. I couldn't pass the damn in class COMPSCI exams. At home programming projects I did well on, but in the exam setting, forget about it. And I normally test well. But COMSCI is way different.

    1. Re:ditto by Anonymous Coward · · Score: 0
      This is why I became a Philosophy Major. I couldn't pass the damn in class COMPSCI exams.


      I believe you have discovered the real purpose of the tests. Weeding people such as yourself and the author of the original article out.
  240. Re:We did these at the Rochester Institute of Tech by tommut · · Score: 1

    Props to RIT. Ever have Ken Reek for any CS courses? That dude's like a human computer and can't understand it when tests reveal that his students are not the same. He's a prime example of slashing points for stupid reasons.

    Oh. And don't forget the most important rule you learn from RIT: "Never EVER use a break; statement." Riiiiight.

  241. context? by Anonymous Coward · · Score: 0

    Personally hated it all but I think that syntax is relevant in a written when its part of the curriculum, otherwise an algorithm should be all that's required. Otherwise you're prone to cultivate irrational biases towards a particular language, or even coding style. Sometimes different approaches are useful in different contexts (how obvious is that !?).

  242. Definitely! but stick w/ it! by pshlortz · · Score: 1

    Don't sweat it so much man... Assignments are a good way to prove your true skill. Also, get to know the professors and they are more likely to cut you a little slack come grade time.

    Remember, good programmers will always find work in the end... Good ones that managed to graduate are even better off :-)

  243. Ability to write code == Ability to read code by targo · · Score: 1

    Many people have commented how dumb this kind of exams are and how people never need this skill in real life. I sort of disagree.
    First, writing code on paper or whiteboard teaches you to be more careful and creates good habits (not the common write-something-fix-compiler-errors style). If you're working on bigger projects where compiling the code and reproing mistakes takes a long time then it often pays off.
    Second, this approach also teaches you to read code carefully and spots mistakes quickly. This is an invaluable skill when working on projects that involve many people and where you often need read and debug other people's code. I have done my fair share of written exams plus whiteboard interviews and years of experience have given me a fairly good eye for seeing mistakes in unfamiliar code. And you wouldn't imagine how impressive this skill can sometimes seem to one's managers ;)

  244. CS exam is not about writing 500 lines of code by porky_pig_jr · · Score: 1

    I don't believe anyone would ask to write 500 lines of code on CS exam. I remember the exams which had anything to do with coding. Mostly it was like outlining the data structure and algorithms, may be provide some logic, but that's about it. Now I'm taking a course on algorithm performance analysis. Once again, we are asked to outline the algorithm, to provide the logic. Actual code? Why bother?

  245. Rule of Thumb by xintegerx · · Score: 1

    Heres one people need to read.

    Students always want to know how professors will grade things. It's like that's what matters. In reality, if it's a pile of SHIT, you will get a bad grade. if it's GREAT, you will get a good grade. When a professor asks you to code in writing (or write a short story) on the SPOT, he will see if there's thought put into it, if the events are logical, if there's good function/character development, great design/setting, planning, correct/interesting output/conclusion (for program/story). Do that, and demonstrate understanding of what you're doing (putting braces/commas where they should be), that's what professors are looking for. You're only asked to do well nothing more than what's expected to earn a great grade. Nobody expects you to write ground-breaking code in a short time, just sensible code.

    RULE OF THUMB: If your creation takes A LOT of fixing/editing to be good (if it's code, replace 'good' with 'perfect'), your grade will suffer. (And If Nick, Your Company's Computer Guy(tm), needs to say MOVE!, and redo everything you've done to get the problem solved/requirements met, you will get a REALLY REALLY bad grade.)

    Have your work make the professor feel really warm-and-fuzzy inside when they grade it, is what I guess I'm trying to say. Make it sensible and entertaining (think /* */)Entertain them, comment your programs, etc. I've received an A on a late story about a floor-covering because the English prof. loved it.

  246. Great Minds Think Alike! by xintegerx · · Score: 1

    Not only do I agree with you, but I also happened to use Nick, your company's computer guy in my reply, too! And I've never seen him referenced anywhere except in my post and now yours!

    Except that two-year schools are decent, too--I've been programming since early high school (learning through books and writing LOTS LOTS of programs--barely seeing any other source code until internet access years later, thus TRUE learning from experience and practice), so I have to say a lot has to do with the person him/herself, not just his or her college.

    http://slashdot.org/comments.pl?sid=34241&cid=37 06 376 is mine

  247. Problem is Attitude, NOT the Tests by xintegerx · · Score: 1

    The problems all mention aren't tests. It's most obviously attitude.

  248. On the subject of the post.ing for a change... by BrokenHalo · · Score: 1

    Does anybody remember the old-style coding sheets? Often provided for COBOL and FORTRAN programmers in the days when we had dedicated keypunch ops, but useful for assembly and other languages too; I found the header boxes helped to organise modules quite handily. Of course, to be considered a real programmer, it was way cooler to punch cards directly with an 029 keypunch... Them were the days... :-)

  249. Force of habit by merson · · Score: 1

    The problem's quite common, having been a TA for a few lower level university programming classes, and graded the things. I think it comes down to force of habit. Although we're told a million times to code on paper first, and on a machine later, hardly anyone does, because an editor is as good a tool as any to layout structure and flow of control through function definitions and user defined types. The habit backfires when it comes to using paper. The way I'd recommend to tackle such exam questions, is to start off with a bunch of scratch paper and draw the bigger picture. Then refine bits and pieces, filling in functions, formalizing parameters, and so on. Finally bring it all together. Then when you write the code, you're working off a solid draft. I realize that this is time consuming and seems contrary to the time restricted nature of exams, but it's likely that once you do put down the code, there will be far less to change and it will take less time overall than trying to wing it off the bat.

  250. Moot point by acoustix · · Score: 2

    Why would a four year school (like uni) let you do a lab test when they don't even give you lab hours in the classes?

    I was there (uni) and out of all of my classes I only received 2 hours a WEEK of lab time in class. Everything else was lecturing.

    So if 95% of the class time is lecture then I would assume that 95% of the test will be theory. The other 5% would be lab time.

    What's the point of telling a person how to code something (or how to perform any function for that matter) if you're not going to let them do it until next week?

    Professor: "OK class, this part is very important! You have to do X and Y to get the result of Z. You will do this next week in lab with my TA's. That is all. Class dismissed."

    --
    "A plan fiendishly clever in its intricacies"- Homer Simpson
  251. Exams are fine .... by Anonymous Coward · · Score: 0

    if marked/judeged in the an appropriate way. It would be unfair to mark someone down for a minor syntax error (e.g. missing the semicolon off the end of the line), but if such errors are over looked I feel that judging someones first attempt at a piece of code, without the ability to compile and run it would be a interesting viewport on their abilites. It would highlight fundemental flaws with their use of sturctures and pointers (which for some reason sems to be a area many new progrmmers cannot vision without the ability to compile code and run it).

    Basically I think if judge fairly an uncompiled/tested version of code should give a very good indication of a subjects abilities.

  252. Re:We did these at the Rochester Institute of Tech by PHPee · · Score: 1

    now, if this was DeVRY or something, syntax is the important thing cause you are just going to be a code monkey your whole life.

    I must disagree with that last comment.

    I finished up my final exams just this past week, at DeVry in Toronto, Ontario, completing the requirements for my three-year Computer Information Systems diploma. I'm not sure how familiar you are with the school, but we do learn a great deal of theory along with our 'hands on' education.

    In my exams this week, for example, I wrote one for my Client/Server Application Development class that dealt mainly with concepts and design approaches, rather than straight code. Some of my other exams have been practical, using tools and applications on the computer.

    It is true that many of our courses were very language specific, (i.e. I just completed Java and COBOL courses), and syntax is important, but we are also exposed to courses such as Systems Analysis, Database Design and Network Architecture. These courses gave us the knowledge and insight needed to identify and understand problems, and create solutions for them. So saying that DeVry graduates are mere 'code monkeys' is a rather short-sighted comment.

  253. Paper_haters are INSECURE CODERS by Anonymous Coward · · Score: 0

    People who despise paper are people WHO ARE NOT COMFORTABLE WITH CODING. Whether it's because they rely on manuals and compilers, fear of others seeing them make mistakes, lack of confidence in their abilities to put-out faster than a monica lewinsky, need to work on code individually before displaying it, etc etc etc, these people share bad qualities. Some are programming, some emotional, but if a company needs people to say, code as a team, other things besides IDE-experience come into notice. If companies are looking for someone to tell the recruiter, "Sure, I'll write code for you. Here we go. I'm doing this for this... This is why I'm doing this", then they are looking for confidence.

    But there's a solution!

    You can go to topcoder.com and register to compete (tell-em "left-handed" sent ya), you'll improve every time and gain confidence. But even as membership approaches 17,000, each match still averages about 500-600 people, because (we think) although people want to fill out 5 pages of registration, they never compete even once because of fear of sucking compared to the 'big guys' (who are very experienced). DO IT ANYWAY GUYS. Then you can also go up to a prospective employer and tell them one of your interests is programming competitions (this shows him/her you're confident in your abilities and can well land you a job just for willing to do it!) Plus, you'll remember more syntax, learn A LOT from looking at how the 'big guys' coded their solutions, and improve yourself. And those 600 people share-in the $10,000 pot every match (2x a week).

  254. ++ for music? by chocolatetrumpet · · Score: 1

    moderators please don't drive me into the ground with this, I know it's sortof off topic

    but here is an area where a young profession can learn from an old one;

    In every music school I know, the emphasis is on applied development (being able to perform on your instrument). There are lots of important things about music, but what matters is that you can demonstrate that understanding through performance. Several times per year we have to take a "jury" where we perform alone for the applied faculty, and this is what really counts so far as you staying in the school and doing well.

    Instruments are expensive so you're expected to not only have your own, but have extensive experience with it before even applying to school.

    Maybe computer degrees can learn a thing or two...

    --
    Spoon not. Fork, or fork not. There is no spoon.
  255. If you can't write it... by geekoid · · Score: 2

    ... you don't know it.
    In the "olden" days, you wrote your program out, then put it in the computer, it failes, loose a letter, try again.
    Now programmers are more try this, doesn;t work? try this? doesn't work, change this. I swear, if I hear "I don't know why this change worked, but it did" one more time, I'll scream.
    I can't think of any other engineering where creating by "vibe" would be acceptable.
    We sure as hell didn't create software to get someone on the moon by "vibe".
    What else you want for your exam. use of a help system? you mommy to hold your hand? sheesh.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    1. Re:If you can't write it... by Anonymous Coward · · Score: 0

      Nothing is implemented with out being tested. Using a compiler or change/test method is the same idea.

      What can I do to possible make this work reliably.

      Until the end of time there will be people thinking about a problem and people thinking about a problem and trying solutions. As long as we are capable of testing theories, solutions, and ideas we should. Its the purest form of creating knowledge.

  256. Not only a compiler by Anonymous Coward · · Score: 0

    IDEs exist for a reason, and it that reason isn't (only) automatic generation of makefiles. For example, the possibility of hitting CTRL-F1 (or similar) to bring up documentation about the class/function/keyword/whatever under the cursor is priceless.
    And even if you don't have an IDE, you almost always have manpages or something similar you can use.

  257. Re:Answer: Not fair. But we have to do it anyway. by geekoid · · Score: 2

    so you feel its OK to pass students who would waste there employers time having to run a compiler over and over again because they where not trained to pay attention to what they are doing?
    Why don't you just show them how to use the help system, then pass them? after all, they can look it up online.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  258. not so terrible... by atatakami · · Score: 1

    It's not so bad - as long as they don't take off for minor syntax mistakes, and consider the method more important then the syntax. I'm not sure why they would do this in college - I suppose to test your mastery of specific language (which is much less important then coding skills; anyone can pick up a language if you have the patience). Cheating is probably a major concern, too.
    The question of the APs was raised by someone; this is an entirely different question. The APs are something of a special circumstance. I think what they are trying to prevent here is any accusation of "favoratism" to "advantaged" schools with more computer labs who could better afford to give the CS AP exams on computer. Personally, I think they're just making kids do it by hand so they can sit around and laugh at how many young idiots they conned out of $80 ;)

    --
    "They do not sin at all, who sin for love" -Oscar Wilde
  259. goto X by Anonymous Coward · · Score: 0

    I only read a few replies and being a former CS student I agree. Writing code that is to be graded at a syntax level for a test is counter productive. I have my own problems with the CS department I was in that being that it was far to theoretical and very unpractical. Yet I am reminded of my beginnings as a computer scientist. Copying code out of BYTE magazine and initially ignoring the line numbers seperated by 10's I learned pretty quick the value of editing ones code after you wrote it.

    As for those of you that think a compiler used for error checking is an indication of sub standard computer science, I challenge you defend the myriad errors that gcc will give that inidicate something wrong that is not even close to accurate. How many times I chased down errors according to the compiler that were completely wrong. Only experience and lines of code can help you become a better trouble shooter/coder.

  260. Space and pace by CopperDream · · Score: 1

    Several of my freshman year professors had the same comment for this problem. I'm sure you must have been given a hint by a professor at some point to space and pace your work. By this I mean you have to leave space between your lines of code so you can go back and add code, and pace yourself. Don't try to rush through the answer. Think about the entire problem before you start writing. This will save you a lot of frustration.

    You may want to start with a small flow diagram before you dive into code. This will help you visualize the problem and save some eraser marks.

    Maybe your problem is partially a fault of growing up so privileged. When I started learning to code a short 15 years ago, I spent more time writing on paper than coding at a terminal. (Now I'm feeling old.) Every so often, I'll still grab a notebook (that's the paper kind) and sit on the couch writing out what I want to do before I code.

  261. assignments bulk of grade / drop coding altogether by kidlinux · · Score: 2

    A lot of people seem to say that "As long as they mark your problem solving skills and not how perfect your code is, it's ok."

    I agree, however, that's not the way it works. In my first year CS courses, we lost marks if we so much as forgot a bracket. That's rediculous. Small things like that happen when you ask someone to write code on paper under exam conditions.

    What I think should be done, if writing midterms and finals on a computer is out of the question, is that assignments should be given the most weight on the final grade. Our CS assignments were handed out weekly, and due the following week. That allows you to take it home, code as many solutions as you can in a week, debug it, etc. I think this approach is a far more accurate description of one's skills as a programmer.
    Another way about it would be to have a "final assingment", which combines all of the skills taught during the semester into one larger than average assignment. You'd have a week to complete this assignment, like the others, but it'd be weighted more.

    Of course, an obvious problem with my suggestions would be cheating. And at the moment, all solutions to this problem I can think of don't seem like they'd be any good.
    I'm open to suggestions.

    Another approach is to change the way CS tests (midterms and finals) are designed. Drop as much of the coding as possible, and simply ask the student to apply the principles they've learned to a variety of problems. This would be a mostly written exam, which leaves it open to subjective grading. Maybe that's the way it should be. Computer Science is about problem solving, not coding. Anyone in CS should know that programming is a drop in the bucket of Computer Science. If you're designing a solution to a problem, you should know how to express your solution in words just as well as you can think of it.

    --
    -kidlinux.
  262. Re:Answer: Not fair. But we have to do it anyway. by IvyMike · · Score: 2

    so you feel its OK to pass students who would waste there employers time having to run a compiler over and over again because they where not trained to pay attention to what they are doing? Why don't you just show them how to use the help system, then pass them? after all, they can look it up online.

    Don't be so obtuse; of course that's not what we did. Quick, without looking: what are the arguments passed into "strtok()"? Personally, I don't know for sure, and that doesn't matter, because "man strtok" gets me the answer on the rare occasion that I need to use it. But it doesn't tell me when I want to use the function, or how to use it in a tokenizer, and as it turns out, I do know that part. And that's the kind of thing that's more interesting to test for. Memorization monkies aren't good employees; good problem solvers are.

    But perhaps you have a point; clearly, your grammar and spelling teachers weren't strict enough.

  263. ditto... by RogueProtoKol · · Score: 1

    i haven't actually done any programming related exams yet (we dont have any programming subjects in my senior school) but i know how you feel... i can't code unless im on a computer

    about the honesty and computers, there are lots of shell programs out there which restrict what a user can do (we have one on our computers at school which stops things like ctrl+alt+del etc..), so surely some1 could just configure this to just allow say notepad?

  264. Re:assignments bulk of grade / drop coding altoget by elflord · · Score: 2
    I agree, however, that's not the way it works. In my first year CS courses, we lost marks if we so much as forgot a bracket. That's rediculous.

    Might be "how it works" in your experience, but there's no reason why this is always "the way it works". In any case, your complaint is about the fact that in your experience exams were poorly graded. An obvious solution to this problem is to use a better grading scheme for exam papers (-;

    That allows you to take it home, code as many solutions as you can in a week, debug it, etc. I think this approach is a far more accurate description of one's skills as a programmer.

    Nope. A good programmer should be able to write simple programs correctly without having the computer to test it for them. If they can take it home, everyone should (and in practice, usually does) get it, but in an exam room, you're measuring how good the students are at catching mistakes (or not making them in the first place) without the computers help.

    Of course, an obvious problem with my suggestions would be cheating.

    Yep. That's why this solution isn't used in practice. It unfairly penalises honest students.

    Another approach is to change the way CS tests (midterms and finals) are designed. Drop as much of the coding as possible, and simply ask the student to apply the principles they've learned to a variety of problems. This would be a mostly written exam, which leaves it open to subjective grading. Maybe that's the way it should be. Computer Science is about problem solving, not coding.

    I mostly agree with this. First year courses do need a lot of coding, so that students acquire the basic skills to coherently express their ideas. I wouldn't put a lot of coding on an exam uness it was an open-notes test.

  265. Re:We did these at the Rochester Institute of Tech by Anonymous Coward · · Score: 0

    what he means is that DeVry graduates are less likely to have rich parents who paid their way through school for them and that enable them to climb the social ladder and attain job positions above "code monkey" easier.

  266. Only one problem by greenrd · · Score: 1
    There's one rather obvious problem with that approach, which is that they could cheat by getting a friend to do it. Unlikely, but possible.

    Perhaps a 1-day programming challenge in a controlled environment (company office, no network connection, no telephone) would be preferable - of course, that won't always be feasible. :-)

    Go ahead, call me paranoid. :-)

  267. How to mark code by Anonymous Coward · · Score: 0

    Interesting that there are so few comments from people who have marked these exams. (Possibly because academics realise that the "500+ lines" must be an error or a wild exaggeration.)

    My students know that there is a hierarchy of tests for code-writing skills -- with computer available, with no computer but with reference material available, pen and paper only -- and that the syntax for pen-and-paper-only just has to be there or thereabouts, any reasonable approximation to the right words will do. And that only short answers will require actual code, which will involve only commonly-used syntax for the key concepts of the course. If you have to sit one of these exams, you should ask about this sort of thing (if your poor long-suffering lecturer hasn't already told you 3 times).

    I am not condoning errors. My students know that I am keen on error-reduction techniques of coding (though most of them seem to fail to adopt such ideas -- sadly that includes those with previous paid programming experience). But what are you really testing for in a coding question? Not what a compiler looks for.

    I would agree with those other replies that question how well a marker could possibly read the code for minor syntax errors. It is difficult enough when *writing* the code for a "find 5 errors" question to ensure that there are not 6 errors!

    Unfortunately, exams have to be part of programming courses -- because staff have plenty of evidence that some students are not writing their own code for assignments that can be worked on in their own time. There are some great stories ...

  268. Computer tests in general are OUTDATED ! by Taco+Cowboy · · Score: 1



    Not only written tests, but almost ALL THE examinations that I've taken, regarding computers, are not only irrelevant to the subject of the exam, but also OUTDATED.

    Take the "Linux Certification" exams, for example, under the "syllabus" of "Linux distributions", the "Stampede Linux" which has closed up shop, is STILL listed as one of the "Major Linux Distributions", and the test modules STILL carry that item !

    The best way to REALLY TEST the ability of a person regarding the specific computer subject is to get the person to JUST DO THE THING.

    If it's about C, then list a problem, and then give the guy a computer with a C compiler and then get that guy to code up a program that solve that problem.

    What counts in the computer field is WHAT WORKS, not what one can put down on the paper, or what's in the syllabus.

    That's all I will say, for now.

    --
    Muchas Gracias, Señor Edward Snowden !
  269. hexa by Hexa+Person · · Score: 0, Redundant
    Repeated message:

    I'm informing you in this message that your use of decimal is disturbing to geeks. Why did you choose to use decimal? I'd really like to know. We may have ten fingers, but we don't even use decimal for time. Decimal is clearly for stupid people. I think it likely that you do not know what radices mean, or else you would be using hexadecimal. Read about hexadecimal at intuitor and repost your comment using hexadecimal. You may use "0x" as a prefix or "h" as a suffix for the numbers. Intelligent people despise decimal--so try to show some intelligence. So do you know what hexadecimal is? Reply to this and prove it, otherwise we will assume that you are stupid.

    Personalized message:

    How many in the list? Stupid decimal-using idiot.

    1. Re:hexa by lrichardson · · Score: 2
      Wow! Checked out your web site ... you desperately need to get a grip! I think you've been swayed way too much by the dominant paradigm (binary) in computers. There's the blindingly obvious advantage of decimal ... ten fingers. And there's a damn practical reason why lots of things (i.e. time) are in base 12 ... it divides into more (common) factors {2,3,4,6} than both 16 {2,4,8} or 10 {2,5}.

      The finger counting example (base 6) is pitiful. Why? Because millions of people are taught an alternative method which allows you to reach 99, rather than the maximum of 35 your method allows. (FYI, right fingers:1, right thumb:5, left fingers:10, left thumb:50).

      I can't decide whether your website is satirical, or seriously deluded. If the first, it isn't obvious. If the second, then I've got a revelation for you: whatever base we choose is arbitrary.

      10 and 12 both offer real advantages over 16. And the rest of the world operates on 10 and 12, not 16. Get over it.

    2. Re:hexa by Anonymous Coward · · Score: 0

      The "cent" in percent means out of 100. The term "hexadecimal percentage" makes about as much sense as "hexadecimal centigrade" or "hexadecimal century".

      I also noticed your use of the decimal notation for 256, as opposed to 100h.

      Curious.

    3. Re:hexa by jellomizer · · Score: 2

      So you are saying that we should use 0x3C or 3Ch except for 60 and 0x1F4+ and 1F4h+ except for 500+ A real geek will find a way to display there value with the least amount of typing. I also find it funny that you couldnt even give us the Hex Value wich makes me suspect that you cannot convert 2 simple numbers to hex. So I 3 lines of advice and an example for you.

      1. Get a life.
      2. Use what is effecient for the task
      3. and if you want to be really geeky use binary.
      60 = 0000000000111100b
      500 = 0000000111110100b
      and I am leaving the leading 0s in a 16bit array to show that is is a positive number in 2s complement.

      Using HEX is for the week at heart who is to stupid or lazy to convert a decimal number to binary they want someting that lines up easly.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    4. Re:hexa by devnullkac · · Score: 2

      I doubt "Hexa Person" actually advocates the use of hexadecimal. Judging from the posting pattern, s/he simply wandered around the site linked by the "Physics in the Movies" post, discovered the Hexadecimal pages, and constructed a new Slashdot account devoted to insulting other posters. Fortunately, it looks like s/he got tired and went to bed after an hour and a half of this nonsense. Hopefully s/he'll forget about it in the morning.

      The irony is that Hexa Person doesn't really understand hexadecimal, since there are comments of the form "$16.99 should be written 10h.99." 0x10.99 is only 16.59765625 decimal.

      --
      What do you mean they cut the power? How can they cut the power, man? They're animals!
  270. hexa by Hexa+Person · · Score: 1
    Repeated message:

    I'm informing you in this message that your use of decimal is disturbing to geeks. Why did you choose to use decimal? I'd really like to know. We may have ten fingers, but we don't even use decimal for time. Decimal is clearly for stupid people. I think it likely that you do not know what radices mean, or else you would be using hexadecimal. Read about hexadecimal at intuitor and repost your comment using hexadecimal. You may use "0x" as a prefix or "h" as a suffix for the numbers. Intelligent people despise decimal--so try to show some intelligence. So do you know what hexadecimal is? Reply to this and prove it, otherwise we will assume that you are stupid.

    Personalized message:

    What percentile? Use hexadecimal percentages (out of 256).

  271. hexa by Hexa+Person · · Score: 1
    Repeated message:

    I'm informing you in this message that your use of decimal is disturbing to geeks. Why did you choose to use decimal? I'd really like to know. We may have ten fingers, but we don't even use decimal for time. Decimal is clearly for stupid people. I think it likely that you do not know what radices mean, or else you would be using hexadecimal. Read about hexadecimal at intuitor and repost your comment using hexadecimal. You may use "0x" as a prefix or "h" as a suffix for the numbers. Intelligent people despise decimal--so try to show some intelligence. So do you know what hexadecimal is? Reply to this and prove it, otherwise we will assume that you are stupid.

    Personalized message:

    If you have to use out of a hundred, just say 1Eh/64h. Unless you're stupid and can't figure it out. Then just don't reply.

  272. Here in the UK by Anonymous Coward · · Score: 0

    We don't have any written coding exams. At advanced level computing (what I'm doing) we do theory, logic, problem solving and that sort of thing, but we never write any code in the exam.

  273. hexa by Hexa+Person · · Score: 1
    Repeated message:

    I'm informing you in this message that your use of decimal is disturbing to geeks. Why did you choose to use decimal? I'd really like to know. We may have ten fingers, but we don't even use decimal for time. Decimal is clearly for stupid people. I think it likely that you do not know what radices mean, or else you would be using hexadecimal. Read about hexadecimal at intuitor and repost your comment using hexadecimal. You may use "0x" as a prefix or "h" as a suffix for the numbers. Intelligent people despise decimal--so try to show some intelligence. So do you know what hexadecimal is? Reply to this and prove it, otherwise we will assume that you are stupid.

    Personalized message:

    I see two grave errors. Reply as a repost or admit your stupidity.

  274. hexa by Hexa+Person · · Score: 1
    Repeated message:

    I'm informing you in this message that your use of decimal is disturbing to geeks. Why did you choose to use decimal? I'd really like to know. We may have ten fingers, but we don't even use decimal for time. Decimal is clearly for stupid people. I think it likely that you do not know what radices mean, or else you would be using hexadecimal. Read about hexadecimal at intuitor and repost your comment using hexadecimal. You may use "0x" as a prefix or "h" as a suffix for the numbers. Intelligent people despise decimal--so try to show some intelligence. So do you know what hexadecimal is? Reply to this and prove it, otherwise we will assume that you are stupid.

    Personalized message:

    How many lines? Two errors. Stupid idiot.

  275. Re:Answer: Not fair. But we have to do it anyway. by a_n_d_e_r_s · · Score: 1

    Quick, without looking: what are the arguments passed into "strtok()"

    A good programmer never uses strtok(). Its use is very dangerous for the health of your program.
    Thus you don't need to know the arguments too it.

    Or even better please forget you ever heard of strtok(), sprintf(), gets() and all other dangerous functions that never should be used by a good programmer.

    --
    Just saying it like it are.
  276. hexa by Hexa+Person · · Score: 1
    Repeated message:

    I'm informing you in this message that your use of decimal is disturbing to geeks. Why did you choose to use decimal? I'd really like to know. We may have ten fingers, but we don't even use decimal for time. Decimal is clearly for stupid people. I think it likely that you do not know what radices mean, or else you would be using hexadecimal. Read about hexadecimal at intuitor and repost your comment using hexadecimal. You may use "0x" as a prefix or "h" as a suffix for the numbers. Intelligent people despise decimal--so try to show some intelligence. So do you know what hexadecimal is? Reply to this and prove it, otherwise we will assume that you are stupid.

    Personalized message:

    How many minutes? Hmm?

  277. Re:We did these at the Rochester Institute of Tech by Anonymous Coward · · Score: 0

    There are positions above code monkey? Oh my God it's a conspiracy!

  278. Re: code on exams by Beliskner · · Score: 1
    And this kind of "pressure" is exactly why Microsoft puts out such sh!tty products. Its quanity over quality
    ... And what's your point exactly? They've got $40billion, it obviously works!
    --
    A caveman dreams of being us, the incalculable power and riches. We dream of being Q, then what?
  279. Separating the 'talkers' from the 'walkers' by waimate · · Score: 1
    At my employer we put interviewees in a room with a computer and give them a practical hands-on programming test to complete in an hour or so.

    We find there's plenty of people who can talk the talk, but not that many who can walk the walk. After all, if you can't cut code fluently under pressure, then what real use are you where the rubber meets the road </cliche>.

  280. OK, this is actually true by Simon+Brooke · · Score: 2
    When I first went to University, I signed up for a Computing Science course. It was very, very bad. So, having averaged 80% on coursework through the year, when it came to the end of first year exam instead of answering any of the questions on the paper I wrote a detailed critique of what was wrong with the course.

    Naturally, I got zero marks for that exam, and went on to take a degree in something completely different, including a Philosophy minor. Immediately on graduating I got head-hunted by the systems engineering department, and within two year was on the academic staff of the Computing Department.

    That's fifteen years ago, and I've been getting paid for writing (and teaching people to write) interesting software ever since. I still don't have any computing qualification. The moral of the story: you don't take a course in quill-cutting to learn how to write great literature. In the Computing Department, when I was a student, they were teaching us to write bar-graph generators in PASCAL on punch-cards to be fed into mainframes; in the Philosophy department they were teaching us to write theorem provers and inference engines in LISP and PROLOG (with a side order on the meta-mathematical basis for the designs of the language interpreters themselves) on micro-computers. Guess which turned out to be more relevent in the real world?

    --
    I'm old enough to remember when discussions on Slashdot were well informed.
  281. Here comes the clue, try to catch it. by slashdot_commentator · · Score: 2


    1) Most universities determine the grade in the class by how well you do in relation to your classmates, not by a fixed percentage of correct answers. If you only get 30% right in a test, and you answered the most questions correctly, you get an A. (Unless the professor has a different policy and the tenure to enforce it.) If your classmates are pumping out functionally correct programs on paper, and you aren't, you should not get an A because you "tried" hard to learn the class material, or can regurgitate theory but cannot code for your life.

    The tragic reality is that in many competitive majors, you end up being responsible for a ridiculous amount of knowlege in a class, some of which would be more appropriate in an advanced class. This is deliberate; to ensure the people who can regurgitate the most get A's, and the also-rans arbitrarily get B's, C's, etc. "Separate the pre-meds from the med-techs." You should always strive to absorb the most amount of knowlege, but if you can't outperform enough of your other classmates, it means you should be looking for another field of study (and thus career) where you can perform better in relation to your peers. Everyone was not meant to be a programmer or a computer specialist.

    2) On a final exam, the professor should not be using as a program question something that would require 500 lines of code. But asking to implement a data structure in code, or a basic algorithm, like a heap sort, should be perfectly reasonable task to be completed in a set time. The professor takes off points in syntax, and your other classmates can code on paper with less errors than you, whallah, they have a greater mastery of the course material than you. They should get the higher grade. An aside: if you can't code in your head under pressure, you have no business picking a career in the computer industry.

    3) If you were truly a bright and mature student worthy of a higher grade than your classmates, and you were aware that you have a deficiency with programming on paper, you would PREPARE for the challenge you know you will confront at exam time, not whine that it is unfair. This can easily be done by writing every programming assignment on paper before implementing it in an IDE. Yeah it takes inordinate amounts of time, and yeah, you won't have a reference book in the exam room, but practice makes perfect.

    When I went to college, IDE's did not exist. The line editor we used to input code on the mainframe made edlin a pleasurable experience by comparison. It was faster to write programs on paper, and that's what many people did, including your professor. Did this generation wallow in self-pity and not participate in the computer revolution because we had to write our program exams on paper? (And before you get bent out of shape by the presentation of my context, please re-read (3).)

    I could blather on forever about exceptional cases, post-primary education, etc. but it can be boiled down to the final clue:

    4) Life is unfair, college is a subset of life, and a bachelors degree does not mean the possessor mastered an academic subject. Grow up, make the difficult decisions, do better, and please not let this diatribe be a waste of our time.

    --
    There is no America. There is no democracy. There is only IBM and AT&T and DuPont, Dow, General Electric, and Exxon
  282. Test conditions. by Anonymous Coward · · Score: 0

    I got one of these. My second interview at this company was really a test.

    I got the description of the program in the morning, they provided a desk,
    a pen, some paper and a working machine with visual C++.

    The program I had to write was a parser of a file format given in the
    description. This included defining the data structures/classes
    to store the data.

    I turned in the program in the afternoon and the manager giving the test
    would review my code at his leisure.

    Actually, I thought I had blown it-- the program wasn't actually working.
    It didn't help that this was my first time exposure to visual C++.
    So it was a bit of surprise to me that they were going to make the offer.
    I suspect me putting in good comments in the code was helpful in convincing
    the manager that I knew what I was doing...

    Later on, after I started on the job, my manager gave me a "warm-up"
    project: fix that semi-working program.

    One of those days I'm going to find out if any other candidates got
    this test and how well did they do.

    -cmh

  283. EXAMS by doofusclam · · Score: 1

    I agree with you 100%. I love interviews, never get worried or anxious, but as soon as I get an 'exam' or written test. I always point out that if they put me in front of a pc I could write the code but some interviewers look at me as if i'm from mars.

    seany

  284. first on paper then on computer. by eske · · Score: 1

    I'm also a cs student, I don't love the exams but
    solve the problem on paper then on computer. I do get better solutions if I solve a problem on the paper first and then just use the computer as a type writer!

    yours
    eske

    --
    What rimes on recursion What rimes on recursion What rimes on recursion What rimes on recursion
  285. Learn your *basic* skills ... by Anonymous Coward · · Score: 0

    Having been in school a very long time (BSc, MMath, PhD), and having taught for many, many years, I can honestly say that I have yet to see a professor ask a student for "compilable" code on an exam. The instructor wants to see if you can issue a sequence of instuctions that solve a problem ... why? Because if you can't do that you don't have the basic CS skills that you should have in order to graduate with a degree.

    The argument about getting a 'vibe' by sitting in front of a computer to program has nothing to do with problem solving. It either implies that you don't really understand what you are doing when you code (i.e., you are writing a solution to a problem - be it on paper or with photons), or that you put zero thought into your code up front.

    As for coding tests during interviews, if you can't do one, don't expect to be hired. Simple as that - these guys are trying to find out if you can think - not if you can iterate between editor and debugger to get a linked-list working. If this worries you, practice. It helps. Bone up on your mental ability to reason out solutions before ever comitting a line of code to paper/editor.

  286. Re:We did these at the Rochester Institute of Tech by Anonymous Coward · · Score: 0

    When I was a professor, I never took points off for errors the compiler would catch for you. I took points off for theoretical mistakes.

  287. Same thing about physics by KjetilK · · Score: 2
    Well, CS exams has been much more friendly to me. I've got just a couple, though. My first was really easy, and the second, well, the course sucked so much I had really given up the whole class one month in advance, but showed up at the exam anyway. They gave us a problem on non-natural splines that was really interesting, so I did well on that exam too. But it is the only exam problem that I can say has had that quality in my 8 years.

    I've been arguing that physics exams, on the other hand, is a major problem for critical thinking. I even had an article in the journal "Physics World" about it.

    --
    Employee of Inrupt, Project Release Manager and Community Manager for Solid
  288. Some advice... by Anonymous Coward · · Score: 0

    I have been writing code for years for open source and commercial applications, so I know a thing or two.

    Let me assure you, that doesn't mean shit

  289. Re:We did these at the Rochester Institute of Tech by themurray · · Score: 1

    Pseudo code is the devil!!!!

  290. Just a practical question by Anonymous Coward · · Score: 0

    How on earth are you suposed to learn to program good code if you don't know how to actually write it? (ie at a computer where you can see: this is readable this is well comented etc.)?

    I can at least understand a code test asking you something simple like why was C written or something...

  291. I had it worse... by wiz_80 · · Score: 1

    Try having a C++ course assessed *exclusively* on the basis of a multiple-choice test - in the second year, not some introductory thing. It didn't help that at the first tutorial the instructor was unable to get the compiler to function on my workstation. I worked it out after a while (paths not properly set up, if you really want to know) but he would not accept that I could have done that.

    I got disciplined for complaining and never went to any more tutorials. I still don't know any C++.

    --
    " There is a rational explanation for everything. There is also an irrational one. "
  292. Re:We did these at the Rochester Institute of Tech by 0x0d0a · · Score: 2

    I just completed Java and COBOL courses

    Those are some odd bedfellows.

  293. I'm mixed by Hi_2k · · Score: 1

    Writing tests on paper is not my strong suit. I've always used a computer since I was 4, and learned how to type before I could write my name properly (teb is still writen on all my papers up till 1'st grade). But when you have a teacher that doesnt know how to program, it doesnt matter whether its on paper or on computers. I had one quickbasic teacher when I was young who had no clue what I meant by a Case statement. she also insisted on using windows 95 machines loaded with every piece of scummware and crippleware you can find, and crashed every 5 seconds. Then, when my friends machine crashed as he was printing, she yelled at him for "ruining" the printer because of a garbled sheet that came out. That aside, there are times when writen tests can be apropriate. My one teacher stressed being able to work the code out on paper. His tests were writen and included code parts where you had to evaluate variable contents or output. For this I can never thank him enough. I am now able to work out what is wrong without a debugger.

    --
    When life gives you crap, Make Crapade.
    Sluggy Freelance.
  294. Generational? by austinBlues · · Score: 1

    I expect a fair number of professors are close to my age (51). When I started, terminals were either unavailable, or too expensive for classwork. I wrote code, on paper, and then went and keyed it on punched cards. Then you turned it in and received the card deck and a listing back in: a few hours, a day, or even a week. A misplaced semi-colon cost you one turn around cycle. You had better be able to proof your work before the compiler gets your program or you will not get your work done in time.

    There are still people who think this is the only proper way to program (see Cleanroom process).

    What the original poster is telling me is that he is brittle, he can only code when Ares is rising, his favorite MP3 is playing, the sun isn't too bright, etc.

    Now preferred conditions are fine, but "I can't code on paper". Fragile, brittle. I like white boards for design, paper for writing, terminals for editting, etc. I've designed on terminals, paper, backs of envelopes, cocktail napkins, etc. I've coded at the key punch, terminal, Starbucks, etc. I've debugged on cards w/ a listing, memory dumps, front panels, hex debbuggers, symbolic debuggers, IDEs, etc. That's what being a professional means. Otherwise you are a recreational coder.

    "The only tool a programmer needs is a pencil with a five pound eraser." - circa mid 70's

  295. Paper and Coding go hand in hand... by AlXtreme · · Score: 1
    Am i alone when saying that you can only code when having a substantial pack of paper to draw datastructures, ideas, flowcharts and the like?

    As second-year CS, first-year AI student i have had quite a few programming exams on paper, aceing them all. If you know a language, be it Java, C++ or Prolog (yummie!), it doesn't matter where you code on, be it paper, an old 386 or a piece of toilet paper, coding remains coding. If you can't get your ideas on papier, in models or source, you can't code, imho.

    Now i do agree that coding on a nice workstation is a whole lot faster than on plain paper, but when coding during an exam it isn't about being as fast as possible, but being as neat & secure as possible to get your code right in one go. It's about knowledge, not about speed...

    --
    This sig is intentionally left blank
  296. Re:An anlogy - the sorbet! by Tetsu+no+Chef · · Score: 1
    so they don't need a banana and an onion in front of them to know that you won't be able to create a decent desert with those two ingredients.

    You, sir, Have apparently not seen enough episodes of Iron Chef. Anything... I say, ANYTHING can be made into a sorbet. (probably have to sautee the onions though)

    There is also the fact that a large amount of a chef's work is recreating tested (and popular) recipies from memory, in addition to understanding the 'ingredient synergy' that is useful in experimentation. It's hardly the picture of a chef being left to toy with ingredients in the kitchen until something edible comes out, is it?

    Honestly, a good chef should be able to stand back and tell other people how to prepare a dish... how many assistant chefs do you think an average resturant-operating chef has?

    Actually, I'm beginning to like the chef analogy. Shouldn't the goal of a good programmer to be to set out with his basic tools (keyboard and compiler), recipies (design patterns and algorithms), and ingredients (libraries and other reuseable code) and come up with a correct solution the first time out... basically try to make sure that nothing leaves the kitchen that would displease a patron?

    Of course it's not horribly realistic, since current time demands place the software (and hardware) industries more on the time-scale of the drive-through at McDonalds. Still, a good goal for any who would stake claim on the title 'professional'...

  297. All recusive functions are loops!!! by oliverthered · · Score: 2

    Ok this is why it's a good question
    given the following code

    rteval f(x,.....){

    f(x,......);
    }

    all calling f(x) inside f(x) does is allocate some space on the stack, this stack space can be preallocated as an array, so that a loop can be used instead of a recursive function call..

    --
    thank God the internet isn't a human right.
  298. Written exams are hard but NOT unfair! by abbamouse · · Score: 1

    The purpose of an exam is to draw distinctions between those that learned the material and those that didn't. I speak as a (non-CS) professor when I say that difficult exam conditions or "unrealistic" tests are hard, but not unfair. Why? Because even though you (the student) find it more difficult to write code than type code, every other student in the class labors under the same conditions. If you still score worse than your classmates, we can't blame it on the pen and paper (though it may be the case that you're not a good test taker -- but then again, that's always a hazard when trying to measure academic performance).

    --
    Make cheese not war 8:)
  299. Tests need to reflect the class by Seahawk91 · · Score: 1

    This topic is less about coding than it is about teaching, learning and evaluating. Every subject matter has its own unique style. Every teacher has his own unique method of evaluating. If we are strictly keeping with writing computer code, did the class teach how to use an ide, were particular data strucures or patterns presented, how tolerent is the teacher of unique programming styles? One class that I attended had a set style guide (deviate and lose ten points; I print in all caps and spent more time correcting to lowercase). Another class asked for pseudo code first so that it became the comments, and bonus points for correct code. Yes, there is always the typical jackoff who can not understand that you used ten lines of code to accomplish his hundred, but is that good programming for a large project where no one else can use your module(job security only goes so far)? My two cents, if you are training people to use a language in a production environment, give them the tools they would have. Multiple projects have always been the best source of improving one's code. Also, don't trust a computer scientist who is afraid to use a computer.

  300. Re:We did these at the Rochester Institute of Tech by jedidiah · · Score: 2

    a) What are you doing coding a single chunk of code that's 10K lines long anyways?

    b) Any good compiler should be able to take you straight to the line where you forgot the semi-colon.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  301. Re: code on exams by jedidiah · · Score: 2

    Their 40 GigaBucks have little to do with how they treat their programmers.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  302. I can't use paper by henben · · Score: 1
    I've recently been asked several times in job interviews to do a task on paper when, if I got the job, I would be doing it for real on a screen.

    I'm not talking about coding here, but copyediting and writing copy.

    I find it really hard to write well on paper because I'm used to editing as I write.

    Of course, all the candidates have the same problem, but surely you want to make your test reflect the conditions of the job? The best candidate when working on paper might not be the best at editing or writing on screen.

    With exams, I can see the argument that as long as you don't demand perfect syntax, paper could be OK.

  303. They can be fair, but it's not easy to do by mikewas · · Score: 1

    Written exams can be very fair and the results an excellent indication of what you know.

    The problem is that it is extremely difficult to write such an exam and to grade it ptoperly. At the university level the profs & TAs that are attempting this have NO knowledge of making or grading exams. Their capability, if any, is in the application (e.g. coding). If the university is exceptionally good the profs got a quick intro to teaching, but they still couldn't give a decent exam to save their lives.

    I was very fortunate as an undergrad to have had a prof that took teaching seriously. He passed up a PhD in engineering in order to get Masters degrees in teaching and psychology. In Prof Kult's classes you worked harder & learned more, you knew the theory & application, and top grades went to those who knew, not to those who regurgitated material.

    He was also one of the most capable engineers I've ever met -- holding basic patents in radar systems, the ECG & other medical devices, digital switching systems, computers ... the list goes on & on. However, he never got the recognition he deserved as an acedemic since his goals of teaching well & being a good engineer kept him from getting his PhD!

    A few years after graduation I had his boss at the University working for me for the summer. I fired the incompetent after less than a month -- he had conned two recent grads that also worked for me into doing his work and passed it off as his own!

    --

    "Glory is fleeting, but obscurity is forever." --Napoleon Bonaparte
  304. My test taking tips by ed1park · · Score: 1

    I'm not going to argue the merits of such testing, everyone here has lots to say. But the reality is that you have to deal with it now and probably again in the future. So here is what I've done for written tests for my programming classes.

    Usually the test exams are printed on one side. So what I do is flip to the back and start scribbling/writing code. If the solution is not apparent, I write pseudocode (write something. anything, to get the brain going). If nothing still comes out, then I skip to the next question. Don't waste too much time.

    Working on a separate problem will sometimes jog my memory, or may use a similar type solution that gives me some insight to the old problem. Then I will go back and flesh out the rest of the solution on the back. Once everything looks good, I will then flip back to the front and fill in my final answer neatly. This second pass allows me to catch any syntax errors.

    I usually avoid writing the answer flat out in final form because often I find that I can optimize the code by leaving out a number of lines, or change the format of my loop, use a different function, or whatever. Or I may realize I have just taken up all the answer space with code that doesn't really solve the problem. So I try to finalize my answer on the back to make sure. And in the event I run out of time, I will just write a note directing the professor to search the backside of the paper for a partial/complete solution to the problem.

    Although it may seem difficult/needless, this is a skill that you can learn with practice and can only help you in the long run.

    My technique is not perfect and won't make up for lack of studying, but I will often get the highest grade. YMMV. good luck.

  305. Me too by macdaddy · · Score: 2

    I had the same problem. They teach us to use the debuggers and trial and error to our advantage. Then they don't actually let us use it in the end. They teach us the process that we'll actually use in the industry, then they want to to resort to pen and paper for testing purposes. It just doesn't compute.

  306. Re:We did these at the Rochester Institute of Tech by Anonymous Coward · · Score: 0

    "what he means is that DeVry graduates are less likely to have rich parents who paid their way through school for them and that enable them to climb the social ladder and attain job positions above "code monkey" easier. "

    thats the dumbest comment I've ever read. I go to Florida State University and the state of Florida offers scholarships to almost every high school student who attends a public university in Florida. My tuition is about $300 a semester. My books usually cost more than my tuition. Tuition is no longer an excuse for not going to school....

  307. Re: code on exams by Alex+Belits · · Score: 2

    I programmed various things since 1986, and in all that time I have never seen a project being completed on time.

    --
    Contrary to the popular belief, there indeed is no God.
  308. I Agree by AgentAce · · Score: 1

    Years ago when I took the AP Computer Science Exam, I failed it. Eventhough I had created numerous programs at home and in the classroom, I just didn't feel comfortable writing the code on paper. Perhaps some revision in testing methods for CS Exams are in order?

  309. Turing by roju · · Score: 1

    Turing is almost a father of CS, and did he actually use a computer?

  310. shooting the idiot who put 10000 data elements by Anonymous Coward · · Score: 0

    Yeh the twat even spent a couple of weeks sorting it

  311. i could have ment linked/doubly-linked by oliverthered · · Score: 2

    Here's my like
    1[x 2] = 'aa....a'
    2[1 3] = 'aa...b'
    3[2 4] = 'aa...c'
    4[3 5] = 'aa.....ba'
    etc...
    say eack node has a 10k string in it,
    you may need to search all 10000 nodes,

    you'r not looking for the data pointer that matches, you looking for the data,so a log2(n) search is not only possible, but probably faster.

    --
    thank God the internet isn't a human right.
  312. Re:i could have ment linked/doubly-linked by Tom7 · · Score: 1

    If n is the 10,000 elements (that seems like the obvious thing), then this certainly won't be lg(n). I suppose you could be counting something like the number of character comparisons, but if the strings are 10k each, then a sorted list REALLY isn't the right dictionary data structure.

  313. Re: code on exams by Anonymous Coward · · Score: 0

    been fast on aritmetic made you a better mathematician?

  314. I agree, paper exams are outdated and unfair... by wessman · · Score: 1

    Sure, life isn't always fair, but in the year 2002, any professor or school that gives a coding exam on paper is not thinking "read world." There is something about the keyboard and the computer screen that helps a computer programmer create code.

    1. Re:I agree, paper exams are outdated and unfair... by DrVxD · · Score: 1

      > There is something about the keyboard and the computer screen that helps a computer programmer create code.
      Sure - they help the code take shape.
      With a screen and keyboard, you can mould the code incrementally - you can build a rough outline, then fill in the details. Move stuff around if it doesn't "work" (either functionally or stylistically). A little like a potter and his wheel. This incremental evolution is next to impossible with pencil & paper. (It's possbile, but it's incredibly time consuming)

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
  315. Exams for concepts - Paper's still good for coding by drbhoneydew · · Score: 1

    A definite "Me, too!" in geisler's direction. They're not out for perfect coding in the exam - it's that you understand how to translate the theory into pseudo-code. My course exams did actually require the odd bit of perfect code in there, but only when they were wanting you to show that you understood certain language features - such as functors or curried functions in ML. Pseudocode was asked for when they wanted understanding of the algorithms or problem solving.
    I don't do a lot of programming these days - mainly due to my debugging ineptitude, but when I do I tend to have an A4 pad as an additional tool. There's something about the feel of putting ideas on paper that makes it a lot easier to work through the logic - I rarely stick actual code on the page. Visio just can't handle quickly doodled and scribbled out flowcharts which you then have to unscribble out because "it was right, no it wasn't (scribble), but if I stick this on here..."

  316. that's not what nonetheless means by bcaulf · · Score: 1

    In the grand Slashdot grammar flame tradition: you meant "for C driver code, no less". Nonetheless, or nevertheless, means "however". "No less" is the strengthener you were looking for.

    I say fire the new hire. If he doesn't love a text approach, he probably won't grow to love it. And if he never loves it he'll never get his productivity up to a very high level. There are plenty of workplaces where he can be comfortable in his IDE orientation.

    1. Re:that's not what nonetheless means by Anonymous Coward · · Score: 0

      "Nonetheless" means "in spite of that" or "nevertheless." Also, "none the less."

  317. Who else here knows what desk checking is? by rabbits77 · · Score: 1

    I can now truly tell that most everyone here is about 15 years old and has almost zero knowledge of computer programming. Being able to work through code in your head or with only a pencil and a sheet of paper is *crucial*. Suppose, for example, you are working on a major piece of software with millions of linesof code that takes an hour to compile. You sure a heck are *not* giong to write some code, compile, test it, change the code, compile, ad nauseum. You would end upgetting fired for being so damn slow. In some shops the practice of "desk checking" code before writing it is still practiced!! This question merely shows an extreme lack of technical maturity on the part of the question asker and the majority of people replying. What a shame.......

    1. Re:Who else here knows what desk checking is? by DrVxD · · Score: 1

      > Suppose, for example, you are working on a major piece of software with millions of linesof code that takes an hour to compile
      Well, if it's got "millions of lines of code", I sure hope you didn't have to write it all out long-hand first. If it takes an hour to compile, you probably want to look at the structure of the source. Mind you, I am somewhat older than 15. And I have over 20 years of experience as a preofessional software developer.

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
  318. Very Simple by JohnHegarty · · Score: 2

    Its very simple... what they should do.....

    in the real world i have a computer and reference books , and caffine (ok last one not too revelent).... i don't have to write programs without those.... why should people be judged on a system that they will never see when they do get a job...

    i have never seen anyone at my company writing software in a room with no computer...

  319. TA/Professor point of view by elwing · · Score: 1

    This past semester, I had the "luxury" of teaching freshman in an intro to C course.

    We gave written exams. These exams were designed to be hard because we allowed open books, open notes, print outs, whatever - just nothing electronic. There were typically 8-10 questions where we gave code snippets and required the students to write the output or explain why it would not compile or why it would segfault. The other 3 or 4 questions were writing code snippets. Most of the problems were very similar to ones they had seen in class or on their programming assignments.

    While grading, we were forgiving about missing ; and {} as long as the indentation made it obvious where they should have been. We were, however, very unforgiving about function calls because they had reference materials in front of them.

    This was an intro programming class where they had (supposedly) learned java the previous semester, and we were merely teaching them the syntax and "style" of C.

    The goals of the course were to teach them C syntax and dynamic memory allocation. And the majority of written problems were taken from office sessions. Someone would come in and not know why their code was segfaulting, so we'd put that snippet of code on the exam so that everyone got that experience.

    The following semester, they will/would have to write their own versions of malloc, and understanding how to debug code with dynamic memory allocation was one of our top priorities.
    With that in mind, we were hard on them on the written exams.

  320. Music Theory and CS exams alike by TibbonZero · · Score: 1

    I will agree, that on some CS exams, they can get absurd. You can't do this, you can't do that. But at the same time, it works out problem solving, and there IS a way to solve it correctly.

    I personally thought that it's always like Music Theory. In a MT exam, you don't really write any real music, you (for Bourque music in theory 1 and 2) can't write Parralell 5ths, octaves, make large skips, use certain inversions, etc. In real life you do all of these. We study Bach in there, but even Bach breaks these rules constantly.

    CS exams are the same way, they are an absurdity of real life, but they teach you a set of rules and logic that apply on any langauge (just as MT can apply to any music but Squarepusher... lol).

    I personally have always done fine on CS exams, often correcting the teacher, or even proofreading the exams for lower classes. Still, sometimes, they just aren't fair, and I agree that there should be a little more flexabilty. But again, just like MT, I know people who have played instruments for 30 years who can't pass a Theory exam.

    The CS exam isn't about programming, it's theory. It doesn't care if you can program much, just as long as you know the theory and some syntax.

    --
    Tibbon
    tibbon.com
  321. Writing is Good and Bad by VaguelyWeird · · Score: 1

    I'm fairly new to programming, but it is a pain to write a coding EXAM. Being a high school student, I completed an APCS course this year. However, in one day I had both AP english and APCS exams: that's a lot of writing and pain. And eraser dust. Don't get me wrong, I enjoy programming, and often write my code by hand first, simply because it helps me think better. Someone suggested not using an IDE as well as some other solutions... But, in a class, especially for beginners, it often seems that what the instructor uses, you use. And honestly, I have a hard time designing algorithms for my programs. I'm lucky. I sit, type, and voila, a functioning program with maybe 10 errors. I guess if you're inspired, or have had ample time to consider to consider the problem, then writing is doable. But when it comes to exams with extensive coding sections, writing will underestimate skill.

  322. What's in a name? Everyting! by fm6 · · Score: 2
    Programming IS NOT "computer science" any more than telescope design is Astronomy (with apologies to Dykstra).
    One of my profs used to object to the very term "computer science". Computers, according to him, are just instruments, and relating the discipline to them is misleading. "It's like calling Astronomers 'Telescopists'." (Hmm, was he plagiarizing Dykstra?) I think he preferred "Information Science". At least, that was the name of the department he chaired. But when I told people that was my major, they tended to infer that I was studying to be a librarian!
    Being the first guy to figure out quicksort... thats science... thats research. Coding a quicksort in LISP is not.

    I've ranted about this before, but it upsets me to see such a misleading headline.

    There's no need to apologize. There are too many people who know some small aspect of computing, and think that qualifies them as experts. Quick, is chess a forced win for White? Ought to be easy to write a program to figure it out!

    However, I don't care for your analogy. Discovering quicksort is original science. But not all science is original. Better to say that understanding all the theory relating to quicksort -- why it's faster than a pyramid sort, what kind of data impacts its performance in different ways -- is science. Implementing a quicksort routine is engineering. Writing a program that takes the routine and sorts data -- well, I want to call it coding, but that's not quite right.

    There used to be people called mechanics. Nowadays that word basically means "repair person". But I think it used to be an honorable part of an important hierarchy. Scientists investigated basic principles. Engineers found practical implementation for those principles. And mechanics made these implementations work in day-to-day life. Nothing wrong with being a mechanic -- I consider myself one. But you shouldn't confuse it with more fundamental work.