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


22

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


14

I would suggest you use a code review tool. This is something they will likely need to be using when working in industry. So worth upskill them on it now. You can use githubs one for free. (You are teaching version control so that should be easy enough) Get your students to create a pull request and review that. You can highlite specific lines and put ...


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


9

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


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.


8

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


8

I think you are taking a good approach with your boot camp. I'd only suggest a warm up exercise/mini-project in which students get some practice, perhaps writing in groups (pair-programming, perhaps). One useful sort of project is called a fixer-upper. There is a pedagogical pattern by that name, actually. Give the students a program that you have written. ...


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

It has never occurred to me to use printouts of code, even though I have an older colleague who does this. To me, it seems a little odd as an approach and inefficient. That said, if you wish to have a similar workflow digitally, you might want to consider using a tablet computer with a pen, Microsoft OneNote, and then saving the final output as a PDF. This ...


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


5

So, if I were reading code, I would object if someone submitted code with every line commented. I am not aware of any professional code that does this, and when I occasionally receive code from students where this is done, it is simply cluttered. I believe that the real criteria here is clarity. Excellent variable naming will often accomplish this sans ...


5

First, there are a couple of things on the list that are wrong. Ben I. has covered one of them. Comments on every line are a "code smell". If the code itself isn't obvious from its naming and structure then it is broken. But lots of comments in the code indicate another fault. The methods/functions you are writing are too long and too complex to ...


5

Autograding doesn't have to be all-or-nothing How can I reduce the amount of grading for the assignments? The term "autograding" implies end-to-end work taking a zip file of submissions all the way to posting the completed grades onto your LMS via the API. I don't see the situation as all-or-nothing, and it seems like you'll only get so far ...


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 rejects too many “good” people, and accepts too many “bad” people. It turns out that the best thing to do is to test them doing the job, and/or 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 ...


4

It doesn't do ranking in any manner, but CodingBat permits you to create challenges with tests for your class in either Python or Java. While the interface begins assuming that you will have one method, you can add as many methods as you wish. However, you are limited to one class (so no inner classes), and you are forbidden Exceptions, so the projects ...


4

One way that you could improve the output for the students (and thereby decrease the grading load on yourself) is to provide a sort of slapdash test-driven development. With each assignment, provide a guiding class with a runner. In that runner, provide the tests you want the students to be able to pass, as well as intermediate tests, in order. Then ...


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


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