Exams

What's the best way to teach and grade programming students? Should they write out code on paper? How did your teachers grade your work and progress?

Attached: Computer-Programming.png (605x612, 155K)

>Should they write out code on paper?
Please don't. Students have no way to test anything.

>if (getColor().equals(Color.GREEN)
>else if (getColor().equals(Color.RED)
You're missing a ) there buddy

>code on paper
Absolute madness
Cumbersome with zero benefits

writing out code on paper would be the equivalent of teaching woodworking by drawing yourself building a chair

Yes code on paper. Ignore these brainlets. Just use a curve. It will REALLY help them when the whiteboard comes rolling.

>write code

just cut off the Wi-Fi and close all the ports, if they manage to rig it to go cheat on stackoverflow they probably deserve to pass anyway

brainlets

Present a compelling argument then.

>cheating almost impossible
>low workload on examiner
now tell me what your alternative would be and how it'd be better

>>cheating almost impossible
Use automated software to detect plagiarizm
>>low workload on examiner
== Lazy examiner
Do the damn job you are paid to do
Bullshit point anyways, it is not easier to check stuff on paper

Exam boards use software that can automatically detect plagiarism.

Brainlet. I'd just being my mobile hotspot. Easy.
See Why can i not have internet when i am taking any other exam? Maybe because you are being tested on facts that you should know from paying attention in class.
Literally not the issue.

>Why can i not have internet when i am taking any other exam? Maybe because you are being tested on facts that you should know from paying attention in class.
If the exam questions all revolve around bullshti that can be found with a search engine in a minute or so, then the exam questions are bullshit. It also shows that the qustions are just as lazy as copy pasting the answers from the internet.

>What kind of computers would students be tested on?
>What kind of OS would they be running?
>How would data transfer between students be prevented?
>How would the results be handed in?
>How would you prevent students from handing in stuff for their peers?
>How would you prevent students from just reading other students' monitors?
>How is your solution applicable to universites where hundreds of students take the test at the same time?
You didn't say what your solution would be and how it would be better. Please explain in detail.
>Use automated software to detect plagiarizm
Pretty stupid when they all get the same test and probably come up with the same kind of solutions.
>== Lazy examiner
Yeah, cause wanting to reduce workload is lazy.
Please first explain why we SHOULDN'T use paper when it's so much simpler?

I think there are two camps:

>Make it easy. Use a popular modernish language, in an IDE with syntax highlighting. Whether you start out with Java or whatever, leave object oriented stuff out of first few lessons

>write C in notepad and talk about pointers right away

I did the first one in college, and I learned pretty well. I think it's more relevant to the majority of dev jobs out there that will use java or c# to do corporate web application development.

Please post 1 (ONE) question that can not be googled and that's appropriate for students.

>Please first explain why we SHOULDN'T use paper when it's so much simpler?
Because nobody programs on paper. Name one company where they do. PROTIP: You can't. It is also not simpler at all. Iterating and modifying code is an absolute pain in the ass on paper. I suppose it could be more okay IF you just dont then require it to be syntactically correct code, ie. psedocode is okay

You are making it simpler for yourself (1 person), at the expense of probably 20+ students
Just think about that

Emacs or Vim

>public Director extends Rock

Attached: patrick-rock.png (471x343, 171K)

Exams should be written entirely on paper. You're preparing students to enter the workforce and they must be able to create code using a whiteboard only. Its also effective in teaching concepts because writing code straight to paper requires a full understanding of everything you have learnt. Exams with a compiler are less effective because poor students can brute force the error codes without learning, unless you go with a limited number of compilations.

I think the best way to teach (from scratch) is to present very simple programs, test once every 2 weeks on the concepts you've covered and make these tests contribute to final grade. 3 "Big" projects that combine everything learnt up to that point helps consolidate work too but these shouldn't be very challenging. Progressions of these should be something like (beginner level):
>Create a program that takes input from a user, performs a calculation and then prints to the terminal
>Create a program that takes input from a user, loops until X happens and then prints the results
>Build something that uses everything learnt and lasts until the user decides to exit
Everything in class should be written on paper (or alternating weeks), homework must be done using a computer.

If you're teaching at a higher level, do 2 large projects and consolidate every 4 weeks. For beginner OOP spend 1/4 year doing simple things you could do with C and then slowly filter everything else in. Graphical programming is an easy way to teach OOP.

>cheaper to do in terms of space, equipment and monitoring
>harder to plagiarize
>easier to catch out weak students

Every major company presents ideas in code on a whiteboard. It depends what the test is on though. If we're testing logical thinking then psuedocode is fine, but if you're testing the persons knowledge of a programming language then they should be able to write it out on paper with no faults. Either way its a work skill that students need.

Maybe you don't deserve a good grade if you can't write good code on paper which is pretty much a testament of the ability to come up with good code in your head.
First think, maybe make notes and sketches, then write.
I'm not an examiner and I'm totally ok with exams on paper.

None of you has presented a maintainable system with significant advantages over exams on paper. You're just too lazy to write.

If i am hiring someone and they cannot tell me how many bits are in a double and how that is different from a float or how to make a simple recursive function. I would not hire them. I'm not hiring a pajeet who can Google. I'm hiring someone with the tools to think and that sometimes requires memorizing things. If i am teaching a class on java, I expect my students to at least be able to write hello world.
This isn't just a programming class pajeet. If the teacher was smart you wouldn't be writing more than 5 or so lines an answer with the average being 1 or 2.
This isn't a class for neckbeards. And you can Google that brainlet.
This
This. And this is coming from someone who writes slower than the average person.

First, teach your students to 'think' like a computer. One thing I recall from my foundation year in college was the 'cup of tea' debate, where the lecturer would have the class discuss how we'd go about writing a program that would make a cup of tea. The debate inevitably devolves into what people's tea preference is, but as kids are shouting over one another, they're doing so that adds onto the previous 'step' of the process. They’re learning how to program without having written a single line of code.
Also, flowcharts.

>If the teacher was smart you wouldn't be writing more than 5 or so lines an answer with the average being 1 or 2.
I assumed OP was talking about making significantly larger assinments than that on a paper
If the exam revolves around trivial one or two-lines then it seems all okay

I think those exercises are too simple. My programming class had 3 tests and 8 assignments, which I found effective testing my knowledge on the course material.

And this was the first programming class.

For a long time I was a proponent of no exams, projects only. Then I saw that a majority of students just plagiarizes existing work, so honestly in the first few semesters, coding exams on paper are a-ok in my book.

Exactly. The first time I made money programming was in highschool when I sold slightly altered versions of my programming assignment to my peers.

>Literally creating pajeets.
What are you doing user?

In my algorithm course students were given 10 or so assignments to pick from and hand over by the end of the semester, you had to give the code and a report explaining it thoroughly, including the time complexity of each function, how did you approach the problem, etc. It was quite cool, felt like I actually got something done for once.

>be poorfag
>stoner with more money than brains says 'Hey, I'll pay you 20 bucks for your program'
>wtf? sure.
it's not like he became a programmer.

if you pick a obscure-ish language I believe that tends to happen way less.
this course was in common lisp

Pajeets destroy the worth of low tier programming jobs but increases the wage of high ones.

This, just don't be to hard on syntax errors, semantic errors on the other hand should of course be penalized.