31

I have seen my share of this 'program gets output' but the programmer has no clue how she/he got there. It's funny how that happens so many times. This is what I have done to at least handle the issue. Before assessments, I break down the evaluation to include the following. Simply getting the output gets them the bare passing grade. Those who can use ...


21

If I understand your problem correctly, it's that students can create programs that behave correctly without understanding why they behave correctly. I assume that they do this by some combination of brute force trying things and SO search. Using program correctness for grading has the desirable qualities of being objective and automation friendly. So how ...


20

I have a few suggestions based on my experience this year. I have one prep over two blocks, which meant that for every exam I wrote, I wrote two versions. Moreover, because I take a standards-based approach, students end up retaking the exam but a modified version at that. For some exams, I ended up with 4 versions. Here's how I sped up my own process: ...


11

As a tool for differentiation, writing out code by hand is absolutely worthwhile. I taught this year in a classroom with whiteboard top desks, and students loved a) getting to writing on their desks (even being encouraged to) while b) learning syntax through multiple modalities. What might catch a student's eye or get instilled in her memory through ...


11

I am wondering how much of this is because they can not express in natural language (don't know terminology). How much is because of just fiddle until it works programming. Learning to express in natural language This is important, to allow them to communicate with a larger team, to allow them to look stuff up on an internet search, and to answer some of ...


10

I'm afraid my answer here will suggest that you completely revamp how you teach. The sort of problems that result in issues like this, seem to me to be problems that treat the computer as a fancy calculator. Problems given to students are of the "math-y" type. Some require tricky thinking, of course, but they are unlike the sorts of problems that people in ...


8

It's time for a little "code review." Have a student present his code in front of class and talk about how he made it work. Hey, this happens in the professional world. There is no time like the present to begin learning this vital skill.


7

tl;dr: Just say no. This question is difficult on many levels. I seems to me to be a land mine of misconceptions and has the possibility to lead to poor teaching practice. First the difficulties Only concepts can be abstract. Abstraction is about ideas. Animal is a concept. Mammal is a concept. Animal is more abstract than Mammal since it contains the ...


7

You don't necessarily have to rewrite the entire thing every year. Most of the tests I give are 40 questions. What I try to do is add 10 or 15 each year to the bank that the test is pulled from. That way, each year there's some new stuff. But nobody ever sees the entire set, so questions from past years are new to them. Tweaking what you have. For some ...


7

For me, 60 is a very large class. Let me focus on a course design, extrapolated from other areas, in my case, the compiler course. The intent here is to make assessment feasible, rather than to say how to do it explicitly. I would have two projects for the course. The first is individual and lasts two weeks. It would be to extend a framework that I provide ...


7

Much less detail than the excellent post by Buffy, but directly to the question. Replace unit tests with validations and linters. Have the students create all content in distinct files: HTML, CSS, and JS. Any styles or JavaScript in the .html file is invalid for the project(s). There are many validators and linters for all three, as well as for any other "...


6

I think having kids write code by hand can be incredibly worthwhile, but be careful of how you assess it. I wouldn't take points off for mistakes that would be easily caught by a compiler such as a missing semicolon or mixing up length and size. I also wouldn't take points off for mistakes students might make when writing code by hand that show they know ...


5

First, I dispute your statement that "the summative exam does nothing other than provide a coarse measure of the candidate's performance during the exam." Assessments are not merely chances for us to discover how the students are doing, they are also useful in the learning process itself. They provide a focus for study, and they provide vital motivators ...


5

I also encounter this issue (just encountered it yesterday in a lab exam). This is how I differentiate between someone who has done his work and just not been able to explain it and someone who has crammed/cheated: Deleting some part of code and asking student to rewrite it Asking student to modify a snippet of code Explain this line Usually Point 2 is ...


4

Is there a better way? Consider using an authentic activity that both exercises and motivates the learning. For example, often the author of code has difficulty finding and repairing errors in the code. You can ask learners to help identify and fix errors in code, provided by you, that is "close" but not quite correct. The presence of some errors may be ...


4

There are four places I would suggest looking if your concern is the K-12 environment: ISTE Standards (Note: there are standards here for multiple audiences, including students, teachers, and computer science educators) CSTA Standards AP CS Principles Course Description (Revised for 2017-18) AP CS A Course Description These would probably be the best ...


4

Fundamentally, I question the notion that you can test to see if students understand the idea of abstraction beyond a superficial level, even if you don't restrict yourself to asking just multiple choice questions. It's a little hard for me to articulate, but I sort of feel the best way to learn + get feedback on whether you understand abstraction is to ...


4

I would probably ask students to demonstrate their understanding of abstraction by writing code demonstrating solutions to a small problem at, say, three different levels of abstraction. I'd probably leave it to them to choose the levels of abstraction, and optionally write a short explanation of the differences in level of abstraction the code was intended ...


4

Some related research There has been some research into how to hire people: How do you select people that can do the job. The traditional methods reject too many “good” people, and accept too many “bad” people. It terns out that the best thing to do is to test them doing the job, and selecting for attitude. Therefore to test programming you should test ...


4

I'm not a big supporter of your underlying concept here and it seems like you are overly dependent on exams. I prefer a teaching/grading system in which students don't feel so much at risk. It also has the benefit of making your core concern much less important. And even if you can come up wit questions "quickly" it is impossible to say they are really good ...


3

I am not sure what you mean by a "useful test" in this context. If your goal is to create a bell curve with English speakers at the top, you could administer the verbal section of the SATs. You say that your students are complaining because what you actually wanted from them was unclear without an eagle-eye reading (and from your own accounts, it sounds ...


3

Your tennis racket question, is not good. As tells as that is is abstraction, then focuses on the form, when the most important aspect of a tennis racket is its function. Therefore the answer is non of the above (those are all implementation detail, and you asked for an abstraction). A good abstraction is hitty thing. The 2nd question, is very long, and can ...


3

After reading the answers here I'm left thinking... What about doing classroom code review? That is, have the students take the assignment they've completed, print it out, hand it to someone else, then have the students review the code they now have in front of them. When everything thinks they're done, have them switch papers yet again, getting a third ...


3

Seems like an objective test early in the year over syntax is a really good way to run off rookies. If your kids write enough code, they'll pick up the syntax. After forgetting a semicolon for the 20th time, you start to remember. Trace enough code with = vs == and you'll figure out what's going on. It's the same way experienced coders pick up new ...


3

Here are a few strategies that I have found helpful: Test every bit of code in an IDE or a live coding environment As much time as double-checking code takes, it still takes much less time than unanswerable questions that you ultimately can't count in the final grades. Create the answer keys directly in the examination file. This one actually saves me a ...


3

Unfortunately, the quoted article has serious shortcomings and would be unworkable in practice. In the first place it isn't just about blockchain, but also mixes in quite a lot of other things, such as the bitcoin that is usually associated with it. The article also misrepresents in some ways the reasons why you would want to do this. The financial crash ...


3

tl;dr Approximate the "real world" practice/environment as the assessment. Pre-setup To begin with, I'm going to presume that there is some form or pre-screening, and/or qualification process. I.e.: having taken such & such course(s), being actively enrolled in some, possibly specific, institution, passed through an interview, etc. The process below ...


2

I think that you could achieve your intended goal more easily simply by waiting. People naturally learn from their mistakes and I think that the wrong equals or no semicolon at the end of a line will stop fairly quickly. As for written assessments, I think that it is next to useless to have a written syntax quiz to catch typographical errors and simple ...


2

The Pedagogical Patterns community has collected and published quite a lot of work on Feedback. The book referenced describes practices that have been vetted by the community. There are many more as well. Not all are related to exam grading, of course. Some that apply here are: Kinds of Exam Self Test Own Words Reduce Risk Differentiated Feedback Mock ...


Only top voted, non community-wiki answers of a minimum length are eligible