Blocks or text? Which should I use with beginners? On one hand, I read research backed articles like Mark Guzdial’s High school students learning programming do better with block-based languages, and the impact is greatest for female and minority students which strongly suggest I should be using Block based programming languages. Well, at least in the first course. On the other hand, I had programming in block-based programming languages.
Sure it should be an easy choice – go with the research. Sometimes I hate data. What happened to when we could all just go with our guts?
Seriously, it is hard to argue with peer reviewed data and I am rethinking a lot of things. I currently teach four different courses and each one uses a different programming language. Advanced Placement uses a combination of block-based programming that migrates to text-based JavaScript. That’s ok I think. Most of these students have had previous programming in either or both blocks or text languages.
My mobile application programming course does use a block based programming language (currently AppInventor) and it works well there. Most of these students have had very little if any previous programming experience. The pace is slower than my honors or AP courses and students seem to like it. I need better assessment tools to really understand how solid of a foundation they have for future computer science and programming. That is something I am working on.
My Honors Programming course uses C#. These are students who, for the most part, are highly motivated, have a good base to build on, and want to be challenged. I think C# is a good language for them. Opinion I admit.
Where I am really having to think hard is with our freshmen class. We currently introduce programming with Visual Basic. Should we be using a block language? Maybe. Unlike the other courses I teach I am not the only teacher. I teach two sections out of a total of 11 or 12 sections. Three other teachers also teach sections and the department chair teaches more of them anyone else. So it is not just my call. At least not for everyone.
What I am currently thinking about is doing a pilot with my sections. What I need to do first is come up with some sort of way for use to assess the difference (if any) in results. Since I teach the second course for many of these students I could look at who takes more programming and how they do with the next course but that takes a lot of time. And how do I know if the language used influences (and in what direction) if students do or do not take more programming?
I guess I have research to do. On the other hand, if there are some of you who have made this sort of change and would like to share what they have learned I’d love to know about it.