I teach 13-14 year old boys an "Introduction to Computer Science" course. For most of them, it is their first structured coding experience.
Before we even touch an IDE, I have them walk through problems like this:
Devise an algorithm that calculates a user’s paycheque.
The program will begin by welcoming the user.
It will then ask the user to input their hours worked.
It will then ask them to input their rate of pay.
It will then calculate their total pay. You may assume no deductions due to taxes, fees, dues, etc... The program will then exit with an appropriate exit message.
The correct answer usually looks something like this:
Begin print welcome input hours input rate pay = hours * rate print pay print goodbye End
A progression to flowcharts then follows.
I guess what I'm asking the group is "How do you teach students of this age and ability to think algorithmically?". I've been teaching C.S. to this age group and ability level for about 15 years or so now. I find that the problem statement/algorithm/flowchart model is about 95% effective. I'd estimate that only 5% of the students that I encounter can't break the problem statement/pseudocode barrier. I'm always looking to solve this problem so any constructive criticism this group can offer is greatly appreciated. Even age appropriate resources would be deeply helpful.