Tuesday, November 06, 2018

Teaching Computer Science Teachers to Teach CS

My teaching style, especially in the first years, was greatly influenced by the man who taught me computer science. A wonderful man who really instilled a love for CS and a lot of knowledge. We didn’t know a lot about teaching CS or programming45 years ago. In fact I think we were really just starting to figure programming out. How to teach it was almost a black art.

Most teachers tend to teach the way they learned. It worked for them after all. Today though we know more about how to teach CS. Not enough but at least there is progress. Thus brings us to how to teach the people who will teach computer science in K-12.

There are two things future CS teachers need. Content knowledge and knowledge of how to teach CS. Many universities are asking CS faculty to teach the content. My big concern here is that I want teachers to be taught by people who model best teaching practices.  Almost every teacher I know has been in a professional development session about how to teach run by a presenter who didn’t model what they were teaching. It’s not going to be enough to have classes that teach how to teach if content providers don’t model that techniques.

A lot of universities are going to struggle to find such a person. Oh sure their research professors have great content knowledge but teaching to an auditorium of 300 university students is not the same as a class of 15 to 30 high school students. And grades k-3? Not sure many university faculty are ready to teach CS to little kids or to future kindergarten teachers for that matter. (Note that I love and respect kindergarten teachers. My daughter in law and my cousin both teach kindergarten.)

One would like to think that teaching professors, either special role at large institutions, or regular faculty at liberal arts and smaller institutions would be better models. Are they? Surely many are. But many educators don’t adopt research based teaching methods for teaching CS. (Mark Guzdial has written about this several times. For example here) How many university CS faculty know about things like subgoal labeling, and  Parsons problems?

What we need are CS educators to teach pre-service teachers using the methods that we know can improve teaching. That’s going to be tough for a while.

One suggestion that has been made (credit Mike Zamansky) is having current high school teachers teach pre-service teachers. The idea being that they know well how to teach younger students.  Not a totally bad idea especially if those teachers have taken advantage of changes in what we know about teaching CS either from their own experience or from additional study or both. Politics at universities may make that troublesome. And if you think school teachers are underpaid look into how adjunct faculty are compensated sometime. Ouch!

What is going to happen is that some schools of education will do it right. For some definition of right. Those schools will take preparing CS teachers seriously and make it a priority to get good faculty, using current methods, and probably doing CS ED research themselves. The teachers they graduate will be in high demand and attract more students. Those universities will (one hopes) be emulated by others as the demand for well-prepared CS teachers grows.

I can’t wait to see which universities make this a priority and set the standard for the rest. No, really, I can’t wait.

4 comments:

Garth said...

What timing. I just attended a PD at my local university this weekend with a bunch of programming teachers (not CS teachers, most of them were business teachers learning programming). This weekend was a continuation of a week long PD last summer. The PD was primarily how to use a couple of scripted curriculum (conversation about scripted curriculum can continue later), APCSP Mobile and Joy and Beauty of Computing (a Montana State Univ course for high school students). The PD was almost strictly coding. One of the purposes of this weekend was to discuss where to go from here. My suggestion was a PD on CS methods and to expand the material to K-8 grades. The response was sort of funny and sort of pitiful. Apparently the the only person qualified to teach a CS methods PD had departed the university his summer. I know this person, she was a science methods person, not a CS/programming methods person. The really sad part is the idea that the Univ of Montana only had ONE person the people putting on this PD (UM and MSU CS profs) thought qualified to present a high school CS methods PD. And that person had never taught HS CS. I have been in too many methods courses where the material taught did not fit reality in the classroom. (Right about now I am waving my hands above my head and my voice is rising.) Right now the only people qualified to teach a K-12 CS methods PD are K-12 CS teaches. The number of those that have moved to teaching at university Ed departments is what? Well, scarce fits. As long as it is thought the only people qualified to teach a PD of this type are univ profs we have a problem.

Mike Zamansky said...

Just to clarify - I meant the relatively small subset of HS teachers that have strong CS content knowledge. It'll take time to scale but really not too much time.

Grant Hutchson said...

I definitely agree with you about the need to focus on how to teach CS instead of just learning the syntax and semantics of a coding or robotics environment. I have been teaching high school CS for 8 years after 18 years in the IT industry and each year I modify my program. The CS options in Ontario range over 3 years (Grade 10 and 11 are both introductory courses – think of AP CSP style learning objectives) the only full CS course is the senior Grade 12 course. The focus of the senior course is on larger software development projects with some exposure to Object-Oriented design and coding. I see how students transition from block-coding with MIT App Inventor and text-based coding with Processing, Python, and finally Java.
When I returned to University to obtain my Education degree Computer Science was a teachable option, but now it is being offered at fewer and fewer Faculties of Education. The primary motivation for me to change careers was to expose more students to the creativity and challenges associated with learning how to code and explore CS topics. Like you, my high school CS experience was excellent. My high school CS teacher was one of the best Math teachers at my school and she was always learning and exploring new technologies. She had us transitioning from Basic to learning the fundamentals of C programming in our final year. I was very much prepared to study CS in University thanks to her hard work at creating lessons and activities for us to be challenged each day.
The best CS PD I have participated in has always been led by high school CS teachers or post-secondary instructors/professors who teach the introductory CS courses as their experience and teaching practice reflect a similar student (just at a much larger scale).
The summer of 2018 I was fortunate to have been given the opportunity to teach new CS teachers in an online course for the University of Toronto / OISE and it was such a rewarding and challenging experience to explore the curriculum and pedagogy with other teachers. All of these teachers were in-service and currently teaching other subjects (usually Math, Technology, or Science). Some Education Faculties and Government programs in Canada are focusing on exposing K-8 students to CT and coding, but there continues to be fewer and fewer new CS teachers being trained to provide continued learning for interested students during their 4 years in high school.
There is an abundant of PD materials now available for teaching Scratch and other K-8 computational thinking style materials, but good sold introductory Computer Science is hard to find. My favourite resources for high school CS teachers include: Doug Bergman's book "Computer Science K-12" and the "Guide to Teaching Computer Science".

Beth Simon said...

But some of us are working on it!

We're hiring a CS Education professor in UCSD's Education Department: https://apol-recruit.ucsd.edu/apply/JPF01927

Also, we are trying to make quality, accredited courses available more flexibly and across geographic limitations either to support credentialing or PD efforts. Please reach out if you see a value for these materials in your state or professional setting -- we're looking to partner!

https://www.coursera.org/specializations/teach-impacts-technology-k12-education

https://www.coursera.org/specializations/computational-thinking-block-programming-k12-education