A small world view of CS education

I live in a very small world CS ed speaking.  Most of my world view comes from blogs and internet readings.  There is another programming teacher in my school but his interest is in business (his degree) and football (he coaches).  He has no programming background.  Everything he knows I have taught him or guided him towards so he does not increase my world view much.  He is smart and is a good person to bounce ideas off of but he has a very limited interest in the field.  There is another programming teacher in town, at the public school, but his approach is APCS directed.  My school has 20 kids taking programming this year, out of 180 kids in the school.  The public school has about 20 kids taking programming also, out of 3000.  So it is somewhat logical that I am not impressed by the local public school approach.  I have looked at the APCS curriculum and got bored.  The trouble is there is nothing to tell me that my approach, although I get better numbers, is the right way to go.  I specialize in introductory programming: Scratch, Small Basic and intro to Visual Basic.  I do get a few kids taking multiple semesters of programming where we work with Corona and the basics of C# (that is all I know about C#, the basics).  I want to kids to explore and get an overview of programming.  I want them to have some fun with it.  To tell the truth I really do not have enough programming background to do a rigorous programming curriculum so it is good that I am absolutely not interested in a rigorous course at the high school level.  I do wish I knew a lot more for that one kid every few years that is interested in going to that level.  Since there is no practical way of getting what I need I had better be happy with what I can do.  I occasionally see my graduates and from their feedback they seem to be well ahead of their contemporaries in their programming classes.  This can mean one of two things.  Either I really am on the right track, or their contemporaries were not.  (Yes, I know there are several other logical reasons for this observation but I like this one best.)

One of my elementary school parents is an instructor in the CS department at the local university.  When I asked him about what he sees as issues with his incoming freshmen and what he would like to see more of from the high school level his answer was simple, problem solving skills.  He says he can teach the programming they need but he does not have time to teach them to think on their own.  He says that if they encounter a problem they will not/cannot troubleshoot their programs at the most basic level.

Now for the purpose of this blog entry.  What should a CS Ed certification program teach in the way of programming?  Considering a certification program is probably only 2 to 4 semesters long there is not a long time to squeeze in a lot of programming education.  Should a program target APCS level teachers for that .1% or smaller student population or the 10% basic level group of students but stress problem solving?  Then there is the question if a prospective teacher can be brought up to the APCS level in the required time?  I assume a new APCS teacher is going to learn a lot on the fly the first time they teach the course.  Will a background in Scratch and Small Basic with a heavy emphasis in problem solving and pedagogy be enough to make a teacher capable of teaching APCS?  Not having taught APCS I cannot answer that question.

For smaller schools the basic courses are the logical approach.  The courses attract a good number of students and can give them what they need to succeed at the next level.  Small schools rarely have the gaps in the curriculum to squeeze in something like APCS and the course prerequisites. Also the student numbers in a programming sequence dwindles rapidly each semester making advanced programming courses a bit unjustified in a cost/benefit context.

Here in the West there are lots of small schools compared to large schools so the teacher training requirement could be very different regionally.  A small school is going to hire a multi-dimensional teacher, not a CS major.  So I would have to argue that any national CS teaching program has to target the most need for schools and where the most students are going to benefit.  A teacher training program that targets lower level programming skills has several advantages.  It could attract prospective teachers that typically would not go into a CS program but are looking for an added certification to improve their marketability.  This would probably lead to the larger number of qualified programming/CS teachers that will be needed eventually.  An emphasis on problem solving skills has excellent transference to other subjects.  The ability of a large number of students (compared to a few Java whizzes) to program in a simple language like Small Basic could have benefits in other courses.

There simply not enough CS majors going the education route, the money is not there and, for many, the interest is not there.  We need a teacher training program that will temp the non-computer geeks into teaching programming/CS.  A program focusing on Scratch, Small Basic and other intro languages with a strong emphasis on problem solving and pedagogy might attract the numbers needed for the future.  Of course now there is that minor little detail of convincing universities of offering CS ed programs.  Back to the chicken or the egg.


5 Responses to “A small world view of CS education”

  1. Algot Runeman Says:

    I’m going to introduce mild controversy. When you start down the Small Basic –> C# path, you also lead students into a sort of dead end. In spite of the popularity of the MSWindows, setting students up to focus within that programming ecosystem is unfair. For those students who wish to expand right away, the best chance is in the kind of sharing environment you did introduce with Scratch.

    Python has no proprietary linkage, but does run on all platforms, GNU/Linux, Macintosh and Windows. Python has the advantage of being interpreted. The Idle environment allows quick prototyping of ideas without having to do all the compiling of many other languages. Python is also in use within the community of open/free software (FOSS), and that community is a great path into “real” programming for those that want it.

    MIT/Google has been developing a mobile development environment (for Android) which follows on from the style of Scratch. http://appinventor.mit.edu/

    I’d recommend that CS Ed also avoid the limitations imposed with proprietary tools which cost more for each student and back them into a programming corner. Based on reading I’ve done, POSSE and “Teaching Open Source” is worth looking into.

    APCS might also do well to consider that “formal” programming in any language isn’t what attracts real students. Programming is a creative exercise, not just another excuse to pile more content and programming ‘rules’ onto a student’s brain.

    • gflint Says:

      I would love to explore the Python route but there just is not enough time. It also is not “attractive” to the kids. The kids will take a “hard” elective only if there is something interesting about it. One of the big advantages to the VB,C#,Small Basic route is that it is all free, There are lots of tutorials and goodies and I sort of know how to program in it. I have the kids look at enough environments that hopefully they do not get too focused on MS products exclusively.

      • geekymom Says:

        I use python with calico (calicoproject.org). The included libraries for robotics and graphics keep kids pretty interested. I’m a big fan of open source for philosophical reasons, but also because I rely on the kids to use their own computers. They shouldn’t have to pay for stuff.

  2. geekymom Says:

    Completely logical thinking. I know you, like me, have other responsibilities besides teaching CS. Several CS majors turned down my job or were rejected because they needed a broader skill set than just programming. There is an executive CS master’s degree here but it’s focused on the IT industry. And education degrees don’t include CS and are often full time–like I have time for that.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: