I teach a beginners course in programming on highschool level in Norway. Just 
like Devin, I have found that the most important thing is what you want your 
students to learn. The development environment is not very important. I try to 
introduce various components in a way that helps build the students 
understanding of the fundamental concepts and principles used in programming.

I use a methodology quite similar to the one Devin suggests at the end of his 

1. I present and show my students a concept/principles/method
2. We use this concept on various simple problems together in the class - this 
will often be accompanied by classroom discussion
3. The students then get a task where they can apply the concept on a problem 
that is quite similar to the problems used in point 1 and 2
4. Then I give my students a task which involves a more complex problem, where 
the application of the concept is not very obvious. At this point I encourage 
my students to help each other with the task.
5. The students then show their various attempts at solving the problem, either 
to a group of students or the whole class, and we discuss the various solutions 
in class
6. If needed I will then show them examples of «best practises». Here I will 
also present various controls and how they can be used as part of the solution 
of the given problem

At the moment we are setting up the classroom to facilitate this approach in a 
better way. The classroom is divided into five groups, each group having its 
own large table with a 42 inch monitor, that all students can connect to, at 
the end of the table. We are about to set up a solution with HDMI Matrix 
Switches that will allow each student to route their screen to any of the 
monitors and to the main projector if needed. Likewise, I can share my screen 
with any of the monitors or the main projector. This will help my students in 
sharing their solutions/problems with each other.

Like Devin, I have also come across research that seems to indicate that 
drilling is better than complex problem solving in teaching basic skills. 
However, my experience is that to much of this will make it harder for my 
students to become good problem solvers. In my course, all students must 
develop an application of their own choosing, from initial idea to finished 
product, in the last term. Many of my students have indicated that this have 
been the most important factor in the development of both understanding of and 
skills in programming. I think that the most important factor in this is the 
kind of problem the students face in step 4 of this method. This problem most 
be near enough to the original problem, but still different from it. This 
decides the quality of the discussions we get after the students have tried to 
solve the problem.

Best regards
Tore Nilsen

> 10. okt. 2019 kl. 20:36 skrev Devin Asay via use-livecode 
> <use-livecode@lists.runrev.com>:
> RIchmond has an excellent point: your development environment is less 
> important than your goal.
> The reason that all of us immediately typed ’set the userLevel to 5’ in 
> HyperCard is that you wouldn’t get far in your task until you needed a 
> bump-up to a higher level of capabilities.
> I also teach beginning programming (beginning application development is 
> actually a better term), but to college students rather than primary kids. I 
> realized recently like a bolt of lightening that I have been spending far too 
> much instruction time describing the development environment and too little 
> on setting tasks and then telling the students about the tools in LC that let 
> them accomplish the task. I don’t know why it took me so long to come to that 
> insight, because “need-based” learning is how I learned both HyperCard and 
> LiveCode. (And probably how most of us learned.) Now I’m thinking about ways 
> to incorporate more task-based instruction into my classes.
> But then I’m faced with the paradox that, according to some of the research 
> I’ve looked at on teaching programming, large problem solving assignments are 
> less effective than focused focused practice in teaching fundamental 
> programming concepts. What I take from that is that students are helped by 
> “drilling” a concept with canned, focused, smaller tasks than they are by 
> setting them a complex problem to solve. So my evolving approach is 1. 
> present a concept, 2. do some drill and practice on the concept, 3. set them 
> a more complex task that requires them to apply the concept.
> I had imagined by this time in my career that I’d have figured this all out. 
> I might just be slow. :-)
> Devin

use-livecode mailing list
Please visit this url to subscribe, unsubscribe and manage your subscription 

Reply via email to