Monday, October 29, 2018

Getting Computer Science Teachers To The Next Level

A number of related (well in my eyes anyway) have got me thinking about how we need to develop computer science teachers. Phil Bagge’s post Developing Teacher Agency in Computing Part 1 pushed me over the edge. His Bagge scale of teaching agency makes a lot of sense to me.

  1. Computing Science?
  2. Dipped my toe with hour of code
  3. I am teaching using an open-ended programming environment
  4. I am adapting x resources
  5. I am creating my own resources

I might put something between items 2 and 3 but I am not sure how I would express it. Maybe, “teaching from a script.” Regardless, there is a progression here. It takes a lot to move from one scale item to another. Some people are not, let’s face it, going to move very far along the scale. For some it will be time, for some interest, for some lack of support, and well lots of other reasons that will make sense for individuals. We’re going to need more people to move along the list if only so they can develop tools for those at the earlier levels.

Asking teachers to teach from a script is like asking an artist to paint by numbers.I got some push back from this meme - Asking teachers to teach from a script is like asking an artist to paint by numbers. I know that there are fans of tightly controlling what teachers teach and how they teach it. I’m not one of those people. I think we want and need teachers who know when to go “off script.

Yes, that takes someone who is at more advanced levels of subject knowledge and pedagogic experience but it should still be a goal.

Mike Zamansky wrote about From Scripts To Freestyle on his blog last week. He says that “Having a direction but not a script makes it easier to "call and audible." “ An audible in this context means taking a lesson in a new or different path to reach the end destination.  Experienced teachers know that not all groups of students are the same. Even different sections of the same course in the same school year act and react differently. A lot of scripts don’t leave enough room to vary to meet the audience where they are.

Our problem (where “our” means people who want to see computer science in every school for every student) is that we have a lot of wonderful teachers (not enough) who are still at the earlier levels of Bagge’s scale. They need the script. They need a lot of scaffolding. They don’t yet have the content knowledge to “wing it” or jump off script.

Some teachers are never going to get beyond the middle of the Bagge scale. They aren’t that motivated. They see themselves as [some other subject] teachers who have to fill out their workload with computer science. It’s a reality and it will take a long time before we have enough teachers who see themselves as CS teachers who maybe have to teach something else from time to time. So we have to make sure those teachers have the best resources possible even if that means some scripting. It’s a big responsibility for curriculum developers.

I would argue that there is a responsibility for teachers who are developing their own resources to share as much of those resources as they can. I am told there are some teachers who keep their resources to themselves on purpose. I don’t know any of those teachers and I hope they are a myth. But I do know that there are teachers willing to share who don’t feel like they have a sharing platform. Some are to shy or lacking in confidence to propose presentations for conferences.

Blogs make a great platform and they are free to set up. There are lots of options like blogger.com and wordpress.com and more.  Jump in, the water is fine.

Many teachers underestimate their own abilities as presenters. It may be surprising that someone who makes multiple presentations a day the the really difficult audience of middle or high school school students can be nervous about presenting to teachers it happens. Teachers can be a tough audience and there is an intimidation factor of presenting to people who also present a lot and who know the content. My experience suggests that teachers at CS conferences are very supportive and very excited to learn new things. No, really, you’ll be fine. Share what works for you.

So to help others develop I will paraphrase this plea form “Little Shop of Horrors”

Teach Me!

Saturday, October 27, 2018

CSTA New England Regional Conference 2018

cstaNEThis is the second of these conferences. How I missed the first year I don’t remember but I’m glad I made it to this one. The conference was held at Rhode Island College. I got some good things from it.

We started with some welcoming remarks from the president of the college, the Rhode Island Commissioner of Education and a few others. It is clear that there is some strong support for improving CS education in Rhode Island from the state and from the universities. Rhode Island has made some great strides with hundreds of teachers trained in the last 2 and a half years. The have also expanded APCS into 78% of the state's high school.

We than heard from a panel of representatives from the state Departments of Education from all of the New England states. IT was interesting to hear how the different states are progressing towards expanding CS education. Several people said that their state was "working to catch up." Given how little CS education had a few years ago and how much a lot of states are working I don't see these states as behind other states that much. Behind where they want to be is a whole different question. It is probably good that the various states don't want to fall behind other states.

Next came concurrent sessions. Lots of concurrent sessions. Some were an hour long and some sessions were a set of three flash talks. I went to flash talks. Now the flash talks were good and I got value from them but I wish some of them had been longer. The committee might want to think about making some tough decisions and have fewer presenters but for longer sessions. Anyway.

Elizabeth Patterson @EPPHS presented two flash sessions. One was on teaching binary, an interest of mine from way back, and shared the resources she uses at:  https://goo.gl/9qNt3i  Her second session (after lunch) was on sorting (another fun topic) and she again shared resources at https://goo.gl/uAz2t5 I’ll be spending some time looking through  them for my own practice. This is exactly the sort of sharing we as CS educators should be doing more of.

I also attended two sessions by representatives from the Lesley University STEAM Learning Lab. One was on visualizing computation with 3D modeling and printing. Very interesting and I got a few ideas but this one would really have benefited from being a lot longer that n15 minutes. Now that I know about them and their programs I’ll be spending some time at their web site looking for resources that I can use. Their other session was on physical computing. .I didn’t hear much new here but again I think the time limit was more responsible than the presenters. They clearly had a lot more to share than they could in 15 minutes.

Fred Martin, UMass Lowell and the CSTA Board, talked about rethinking computational thinking. There  is a lot of talk about that lately and I liked Fred’s take on it. Fred’s slides are at cstane2018-fredm He concludes with “CT is the “connecting tissue” between the world of computer science / programming expertise and the world of disciplinary knowledge”  I think I like that as much as any definition of CT I have read lately.

Karen Lang, MIT Appinventor, gave a talk on new and coming features for AppInventor. Tutorials seem interesting as does the new CloudDB which seems like a big improvement for data storage. There is a new emulator available for MacOS and a new one for Windows is coming. That’s good news. Also the companion app for iPhones has been submitted to Apple for the Apple store. At some point Apple will (we all hope) approve it and students will be able to put AppInventor apps on iPhones.

Chad Williams, Central Connecticut State University, shared some of his ideas about teaching cryptography. I hope to get his slides because he has some good stuff that I hope to write more about at some point. Since this subject is coming up soon in my AP CS Principles course I can put some of this to work.

Overall, this was a great little conference. I did some networking between sessions. Connecting with old friends, meeting some new people, and getting ideas from informal conversation as well and sessions. The food was good. We had a real breakfast – eggs, potatoes, sausage plus healthy stuff. Box lunches with good sandwiches and vegetarian options. Let’s pretend I didn’t eat the brownies that were available for snacks.

Hopefully there will be a third conference next year.

Wednesday, October 24, 2018

Nominate Someone as a 2018 Champion of Computer Science

Know someone or some organization or some school responsible for doing great things in computer science education? Maybe they should be nominated for this award.


In celebration of the 2018 Computer Science Education Week (CSEdWeek), the Computer Science Teachers Association (CSTA) and Code.org are pleased to present the 2nd annual Champions of Computer Science Awards.

Know of someone who’s achieved something outstanding in computer science education this past year? Tell us about it! Nominate a student, teacher, school, district, after-school club, organization, etc., to be recognized as a 2018 Champion of Computer Science.

Those selected will be awarded a trip to Seattle, WA to be recognized on stage at the kickoff of CSEdWeek. This opportunity is only available for US submissions.

Please complete this form by November 2nd to nominate your Champion of Computer Science. Email awards@csteachers.org if you have questions.

Monday, October 22, 2018

The Imperative to Teach Ethics

Ethics has been on my mind a lot lately. Last week, the ACM had a Twitter chat around the ACM Code of Ethics using the hashtag #ACMCodeOfEthics.It took place during the school day but I was able to take part for a while during lunch. It was a good discussion. Coincidently, Kara Swisher had an OpEd post in the New York Times titled Who Will Teach Silicon Valley to Be Ethical?

There was a time when my biggest concern about the software industry was the poor quality of software (still a concern) These days I worry about the ethical quality of the companies producing that software. This is not a new concern. Years ago I heard the (now former) CEO of a large company talk about his “values coach.” That he needed some one to coach him on the companies published values was unsettling. Kara Swisher talks about “chief ethics officers” to help companies stick to ethical practices. That concerns me as well.

Companies adopt the ethos of their leadership. If they leadership needs someone to tell them that they are pursuing unethical activities there is a problem. And that problem is going to become endemic throughout the company regardless of a chief ethics officer.

We need to teach ethics long before students grow up to become CEOs. I took a look back at the Computer Science Curricula 2013 (CS2013) Final Report today. Yep, all the talk about ethics I remembered from task force meetings was still there. Ethics and professional practices are listed a Core Tier 1 topic. That is the highest of the three levels of importance for undergraduate computer science topics. That means all undergraduate computer science programs should teach ethics!

The discussion in the document talks about the fact that having it as a stand alone course may miss students in some programs but that it can and should be integrated in many, if not most, other courses. In some ways I think integrating it into other courses should be a standard practice with or without a standalone ethics/professional practices course. Context matters.

During the discussion on Twitter last week it was pointed out that many don’t see the ACM Code as having answers to specific questions. That’s probably true but I don’t think it is possible to write a code that answers every specific question. Rather I see the code as a place to start asking questions. How does what is being discussed fit in with ethical practices?  What are the trade offs? There are always trade offs. How do we balance those trade offs to the side of the betterment of society?

Where does that leave us who teach prior to the college/university level? Can we leave the teaching of ethics to the professors? Given the number of people I hear from who say they are unaware of specific ethical practices courses or mandates to discuss ethics in other courses I don’t think we dare. And let us not forget about all those people who bypass university completely! No, we’ve got to teach it.

We’re not going to get many stand alone computer science ethics courses in high schools. OK I teach at a Catholic school and Ethics and Justice is a required course for our juniors.  Ethics shows up in the course description of several of our courses and that is great. But as I said earlier, context matters. I am not going to assume that these other courses are sinking in.

High school courses seem like silos to many students. “Why are we learning Binary in computer science that is a math topic?” is a question I hear regularly. Ethics have to be part of the discussion in computer science courses. It fits nicely into Advanced Placement Computer Science Principles. I think that was/is intentional. We have some great conversations about ethical issues in that course.

What I want, what I think society needs, is for people to regularly think about the ethical impact of computing. Computing is changing every aspect of our lives. Without thinking about the ethical consequences of these changes we risk everything. 

should

Thursday, October 18, 2018

Professional Development Is Expensive–Who Should Pay For It?

I first started to appreciate the cost of professional development when I was working with and for Microsoft. Microsoft at the time was working hard to promote the use of Visual Studio as a programming teaching tool. Part of that effort was through professional development for teachers. I took part in some of these as a student and some of them as presenter. I could go into details but I think is is safe to say that when code.org says they spend thousands of dollars per teacher for professional development events (Moving towards sustainability of computer science in schools) I don’t doubt it for a second.

Still over the last bunch of years a lot of CS education professional development has been paid for by a combination of universities and industry (lots of that industry money was direct from Google to universities and a lot by a number of companies though code.org) This is not really a sustainable/scalable model. Well, it’s not sustainable if we are going to have enough CS teachers for every school to offer (and present) CS education to all students.

As Mark Guzdial points out in his recent post at CACM (Changing who pays for CS professional development in the US and who controls it: It has to be local ) it is not how other subjects do it either.
I have been hearing teachers say for years that industry should pay more to support CS education. And I have tended to agree. On the other side of the issue, many complain about an undue influence industry have on CS curriculum. Too many strings attached to the money. How much you worry about that often depends on how you feel about the company donating the money of course. Either way, is it fair to demand that the tech industry fund CS PD? Do other industries fund PD in their areas of interest?

Actually, yes they do. There is a reason that most math classes are taught with Texas Instruments calculators!  But, mostly you find industry funding for  career/tech programs in career/tech schools which tends not to get the public attention it deserves.
Is CS education a career training course or a core academic course? The answer is, of course, yes. If we want to really prepare students for either an academic or an industry future we have to focus on concepts and not on specific tools or platforms. This can be harder at times with industry funded training.

In the long run we really need two things. One is more pre-service training for teachers who will teach computer science. That has to be folded into existing teacher training programs. While that seems to be happening some it is slow progress. The other thing we need is professional development for in service teachers. That training has to be paid for and prioritized locally.

These days the PD for CS teachers I hear about most strongly supported in Advanced Placement Summer Institutes. That’s great and a lot of teachers benefit from it. My school paid my way to one a couple of years ago and I got a lot out of it. Training for teachers in K-8 and for courses that come prior to AP courses do not appear to have the same number of local options for teachers.

That is changing especially with the work that code.org is doing with their local affiliates. Many of those programs will, I hope, grow and expand to reach more teachers. That will only happen as schools and school districts start encouraging (by funding) teachers to attend these courses.

There is a less tangible, measurable reason we need local funding of CS PD.  Organizations, and individuals, send a strong message by what they are willing to spend money on. Spending money of CS ED PD shows that CS education is important, that it is valued, and that the people teaching it are valued. Making it clear that CS education is important enough to spend money on training for teachers is an important message. I tend to believe spending money of PD will help retaining teachers and that is going to be really important.

Wednesday, October 17, 2018

ACM to Host Twitter Chat on Ethics in Computing October 18

On Thursday, October 18, ACM will host a Twitter chat on ethics in computing beginning at 11:00 a.m. EDT (15:00 UTC). During the chat, ACM will post discussion questions from the Twitter handle, @TheOfficialACM. We are inviting the computing community on Twitter to join the discussion using the hashtag #ACMCodeOfEthics.

Catherine Flick, Michael Kirpatrick, and Marty Wolf (members of the ACM Committee on Professional Ethics, which spearheaded the ACM Code of Ethics and Professional Conduct update) will take part in the discussion.

Join the #CSK8 Twitter Chat 17 October 2018

These are great chats with a lot of wonderful people sharing ideas about computer science in grades K through 8.

Join us for #csk8 chat on Wed, 10/17, at 5pm PT/6pm MT/7pm CT/8pm ET for the 3rd in our series of chats about the cross curricular integration of CS for 5-14 year olds. We will be talking about The Integration of Computer Science & Math in K-8. #CSforAll

Tuesday, October 16, 2018

Lossy Text Compression Project

My motto has long been "steal from the best" at least when it comes to teaching resources. Today I found a good project from Code.org. I'm using their Advanced Placement Computer Science Principles curriculum and we are currently learning about data compression. image

Code has created a Lossy Text Compression app (See image or visit link). that students can try out. The code is also available which is very nice.

The algorithm is to keep the first letter of every word and then remove all the vowels to create a new, compressed message.

Now the app is really nice and because  the code is available several students modified it to try different things out. One of them just changed the message to report 100% compression. No surprise there of course.

I am thinking that I may have some of my coding students (in my classes that are not AP CS P) write their own versions. It is a fairly easy string manipulation exercise which makes it good for beginners. Parsing of text is a good thing to learn anyway. It also lets me bring data compression into the class discussion and I see that as a big plus.

Besides, I just really like string manipulation projects.

Saturday, October 13, 2018

Origin–Dan Brown Takes on Artificial Intelligence

I avoided buying Origin by Dan Brown for about a year.While I really liked The Davinci Code, I have been disappointed with his other books. Recently I saw that it was available for Kindle and in a moment of weakness I bought it. I’m glad I did. It was a better book than others of his that I have read but the big interest for me was one particular character. Winston is an artificial intelligence executing on a quantum super computer. He (it?) has a key role in the plot.

Now both the computer and the AI software involved are far beyond what we have today. Of course part of the plot is that the eccentric, brilliant atheist who created Winston has achieved a huge advance beyond the rest of the computer science world. Naturally.

Winston, our AI with a British accent, helps our hero, Robert Langdon, and the beautiful (naturally) Ambra Vidal as they navigate the dangers involved in solving the mystery.

The questions I have been thinking about though come at the very end of the book. There are some surprises and some interesting and important questions. Now many will focus on the obvious science vs religion question that threads through the whole book but for me the interesting questions are the future of AI.

A lot of us grew up with science fiction AI governed by Asimov’s Three Laws of robotics. You may have noticed that people building artificial intelligence today in real life don’t seem to be programming Asimov’s laws in to their software. Brown’s Winston doesn’t appear to have those laws incorporated either.

I don’t want to give any spoilers but I will say that comparing Winston’s actions to how one of Asimov’s robots would have acted might be an interesting exercise. And topic for debate.

Where is AI going? What rules of ethics or behavior will be programmed in to it? Or will we let it develop its own laws and ideals of ethics? And what will it all mean for the future of mankind? These are the questions this story brought to my mind. Have you read the book? What questions did it bring to your mind?

Friday, October 12, 2018

What Does My Phone Number Spell?

Project ideas are everywhere. Today a friend apparently spent some time figuring out what words his phone number spelled. It turns out that there are several web sites that will do this for you.

The one I tried was https://www.internetmarketingninjas.com/seo-tools/phone-number-spell/ and it works pretty well. My area code has a zero in it so that is a problem. My number also has some 1s in it and there are no letters for that either. Still it can be a fun thing to try.

I was thinking this might make a good programming task for beginners though. Some fun with loops and arrays perhaps. How many combinations are there? Can we verify actual words with a dictionary look up?

How about going the other way, translating seven or ten letter words/phrases into phone numbers?

Anyone tried something like this? I think I may take advantage of my sick day today to play around with the idea some more. Any suggestions?

Sunday, October 07, 2018

What Qualifies You to Teach Computer Science?

Several years ago a parent at an open house asked me the question in the title of this post. He seemed happy with the response. My resume is pretty good I think and better now than it was then. These days we are getting a lot of people teaching computer science who are new to the subject. Sometimes they are very new. That’s a concern.

I suspect it will be a special concern for parents. They are after all used to looking to see evidence that a teacher is “highly qualified” in other subjects. Computer Science has been exempt from this requirement for most states as it was not defined as a core course. That is starting to change in perception even more than in fact.

So will parents ask the question? And will they be happy with the answers? Personally, while I’d like CS teachers to all have a solid CS background and a major in the field that’s not happening soon for enough teachers. Most are going to get thrust into the role of CS teacher with a couple of workshops (a week or three maybe) and some on going learning as they go.

I’ve been thinking about this a lot lately. Earlier tonight I came across and old blog post on the Channel 9 website that I wrote about 11 years ago called Why passion is important for teachers
I think passion for the subject is what I want most in a teacher of any subject. Passion is what spurs interest and learning in students. Students almost never care about a subject as much let alone more than their teachers. And passion fuels a drive in a teacher to learn, to experiment, to continue to grow as a teacher and as a subject expert.  Forcing the unwilling to take a workshop and then teach a CS course is likely to be a complete failure not matter how good the teacher is.

But take a person and help them find a passion for the subject and the long term outlook is strong. In fact I suspect that passion shown by a teacher is the single best predictor of  success. I’m not a researcher and I don’t have objective proof but my observations tells me I’m right. Hopefully the people recruiting teachers are looking for and growing that passion. It’s our best hope is CS for All becoming a reality.

Thursday, October 04, 2018

If you are using global variables you are doing it wrong

One of the hard things for students to learn is simplicity. Beginners tend to over complicate things. In part this is because they lack the full toolbox early in their learning. Another part though is that they tend to see new tools as the answer to problems they are not intended to handle. They really want to show that they can use the tool.

My students are learning about methods and I assigned a project that requires two specific methods be written. I recently had the following conversation.

Student: I may have 5 too many variables for this project.

Teacher: Yes, if you have 5 variables you have too many variables.

Student: I have many more than 5 variables. I have these up here for example [Student shows global variables]

Teacher: If you're using global variables you are doing it wrong.

[time passes]

Student: you are right. It is a lot simpler without global variables.

As part of our discussion of methods we talked about scope of variables. This introduced global variables for the first time. I suspect I did not discuss them enough so that is something I have to fix before I do this again next semester. But that aside, the worst thing is that the student missed one of the reasons we use methods – data hiding.

Students see things differently than experienced programmers see things. They also get excited about using new ideas which can get in the way of them using them appropriately.  “But it works” they say ignoring the fact that other solutions are better and that there are flaws in the way they are using the new tool.

This is one of the reasons I am skeptical of automatic grading programs that only compare inputs and outputs.  It’s not always whether or not your program generates the right answer but that you got there the right way. Helping students find the right path, or at least different paths, means reading their code.