Monday, December 31, 2018

Looking Back on CS Education in 2018

The last few years I have written start of the year posts about things I want to track in Computer Science education in the new year. Last year’s post is at Computer Science Education Things I'm Watching in 2018 At the end of the year, like today, I write about how those things tracked over the year.

The first thing I wrote about last January was Advanced Placement Computer Science Principles. I was half way through the year teaching it for the first time at that point. Now I’ve been through a whole year and am half way through the second. APCSP grew a lot and continues to grow. Curriculum from, Beauty and Joy of Computing (BJC) from UC Berkeley, and Mobile Computer Science Principles (Mobile CSP) from MIT continue to be top curriculum in use. It’s a heady time for AP CS. At this point APCS P is pretty settled into many schools and looks to grow even more. The existing “canned” curriculum and related training are key factors.

The next big item I was following was K-8 Computer Science Education. This is still an up and coming area. The #CSK8 twitter chat has been my best window into this area and it continues to grow. The first chat of 2019 will be 2 January 2019 at 5pm PT and 8PM eastern US time. I didn’t attend ISTE in 2018 and that is usually my other deep dive into K-8 CS. But K-8 CS continues to grow as the CSTA Annual Conference and local professional development events like the 2018 CSTA New England Regional Conference.

State Standards continued to grow as more and more states adopted them. In the last year or so my home state, New Hampshire, adopted new CS teacher certification guidelines, state standards, and passed a law including computer science as part of the definition of an adequate education. Other states moved forward as well. I confess I spent a lot more time looking at NH than other states.

It was a good year for computer science education in general. Here’s hoping we continue to see progress in 2019.

Friday, December 14, 2018

Sub Goal Labeling in Computer Science

One of the interesting ideas in teaching computer science I have been looking at is sub-goal labeling. I’m experimenting with it but to be honest I don’t feel near ready to share what I am doing.

As a wrote recently (The Problem With CS Education Research ) it can be hard for teachers to take research and adopt it because, well, research papers can be hard to read for some of us. And the world of the university classroom is a little different from that in the high school.

Fortunately for me, and for you, Clark Scholten has been trying things out and blogging about it. I highly recommend his posts.
Anyone have more suggestions of resources for learning how to use sub goal labeling?

Friday, December 07, 2018

Teaching Phone Programming Should be Easier

Garth Flint and I have been independently looking at resources for teaching mobile phone application development. (Garth’s posts are linked below) I’m currently teaching a course using AppInventor which is going ok but not as well as I’d like. Most of my students own iPhones which AppInventor doesn’t currently support. Their iOS support is currently under review by Apple but my course is almost over. Even with Android phones I still have some trouble with connectivity. And the emulator is a mess. Some days I can’t get it working at all. So I’m thinking about what to use to teach next year.

There are other options. I have been testing Thunkable with some of my students. The good is that it supports both Android and iOS. The bad is that this support doesn’t support many sensors and really that is a huge part of what I want students to do. Without sensors its just another desktop app with a tiny screen.

I still need to take a closer look at LiveCode which seems to come up in this discussion so I don’t know much about it yet. Input welcome!

I haven’t tried the platform specific (ie professional) tools yet and I am reluctant to do so. The ones designed for iOS or Android only work on those platforms and I’d like to use both. Since most of my students have iOS devices than going Apple might be a way to go except that that requires developing on Macs. We have a Mac lab but its already used a lot. And they are all Macs which comes with its own complications. I am not a fan. That’s a last resort.

Microsoft Xamarin with Visual Studio is a cross-platform professional option. I’ve looked very briefly at it in the past. Setting it up is non trivial and I do have to have some connection to Macs for the iOS loading. Networking to a Mac or three might be an easy option.  Well, easier than taking over a whole lab. I need more time to work on that option though. I don’t know many teachers using it which is a concern.

I really wish Windows Phones had not died out. I have a Windows Phone and writing apps for it with Visual Studio (2015 or earlier only) is a piece of cake.

Wednesday, December 05, 2018

Where Does Computer Science Fit–Revisited

David Renton is teaching his students at Porter-Gaud how to program virtual reality projects. He posted a video of some of these projects a few days ago.

These are pretty cool, Virtual Reality apps created by [David’s] Porter-Gaud High School senior CS students using Unity for SteamVR. They tested them using HP & Lenovo Windows Mixed Reality Headsets. They each created at least 2 3D models themselves using Maya and imported the other models from the Unity Store and/or They also created at least one sound effect themselves using Audacity. They coded the interactions using C# in Visual Studio.

One project was highlighted on the Microsoft Education blog with a post by the young lady who created it. How a VR trip through the solar system honed my down-to-earth skills – go read it. I’ll wait.

That is a project that involved math, physics, and art into a computer science project. I suspect that the math teacher she approached for help was pretty pleased to get involved. I’ve sent students to math teachers myself over the years. 

We don’t ask where reading fits in the curriculum after some magic line in elementary schools. We teach students to read in large part so they can use it as a tool to learn more about more subjects than just reading. I’ve long believed that computer science can, and should, become a tool that students learn to help them learn other subjects.

Yes, we need students to have a base of CS knowledge first. David’s students have had several years of CS, starting in elementary school, before they get to him. Using that base they can learn more about CS for sure but they can also create projects that interest them and motivate them to learn more, not just about computer science, about a wide range of other subjects.

Like reading, we need to teach enough CS that it can be used across the curriculum. It can’t stay a silo subject if we’re really going to see students use it to their potential.

Edit: See also the Luminous Science curriculum being developed by  Ben Shapiro’s student. Brings together science, art and #computing. Also awesome! Ben is on twitter @bennytheshap

Monday, December 03, 2018

Happy Computer Science Education Week


It’s CS ED week again. Yeah! This is the week that thousands of teachers around the work introduce millions of students to computer science. Many of them for the first time. Some through the Hour of Code, some though special speakers, some though creative ideas of their own, and on and on. Teachers are by nature creative people which it comes to sharing ideas. It’s an awesome week.

Earlier today I joked that there were no Hallmark cards for CS education week. The obvious suggestion, print your own, came very quickly. It’s not a bad idea. It got me thinking though. Wouldn’t it be nice is one aspect of cs ed week was an appreciation of those teachers who work to bring computer science education to students on a regular basis?

Last year, CSTA and started the Champions for CS awards. You can read about the 2018 Champions for Computer Science Awards. Those awardees will be presented with their awards at a special 2018 CSEdWeek kickoff event today. That is great. I hope we can safely assume that part of their role is to serve as a sort of proxy to honor other hard working CS educators as well as highlighting exceptional teachers, students, and programs. At least that is how I choose to see it.

Personally, I’d like to thank the many CS teachers who have shared ideas with me, taught me, and supported me over the years. There are so many of them and I can never list them all. There have been blog posts, comments on blog posts (mine and others), teacher presenters at conferences and PD days, hallway conversations, and formal training events. So much to learn and so many teachers who are willing to share what they know. We in CS education have a wonderful, caring, and helpful community. Thank you all who are part of it. You’ve made my career and my life richer.

Wednesday, November 28, 2018

Ready, Fire, Aim–Why Is Design First So Hard To Learn?

“Hours of coding can save you minutes of planning”

We’re talking about top-down design in my APCS Principles class this week. I gave the students a worksheet (part of the curriculum which is really well done) that asks students to pair up and design the functions they would write for a given problem. The first question from a student? “Do we have to do the design before we write the code?”

Now you may be asking yourself – what sort of question is that? Of course you design first. That is not how students think some times. They want to jump right in and write code. It’s not that they know how to do it or that they have a design in their minds though. They want to try things and see what works. They are more into trial and error. They have high tolerance for error as long as they are moving forward and the development environment is not giving them error messages.

Now not all students are resistant to planning. Over time most students come around to the idea of design first. It can be a tough sale though. Design doesn’t have the same instant gratification that writing and trying a line of code does.

Back in the day (yeah, old guy reminiscing) we had long turn around between writing code and seeing results. We handed in our deck of punch cards and waited (hours or even days) to find out what worked and what didn’t. We really could not afford to skip the planning phase. We thought deeply about how things should work.  We closely desk checked code before submitting it and after getting early results.

Now I am not saying I want to go back to those days. (even though in weak moments I might think it would be good for students.) I do wish it were easier to keep students from writing code first though. I’ve tired having one student write a design and than having another student write code from it. The second student tends to mostly ignore the written design and do it their own way which may or may not look like the design at the end. Often it is easier to blame poor design than a failure toe follow the design. Students do want their programs to work and they don’t want to make peers look bad.

What I am trying to do more and more is to model design thinking myself. We create programs as a class and I work though the design before showing code. For example, we are working on a program to give and score quizzes. We worked though a discussion of what a question class would look like. What data would it store, what functions would it need to support, and how would it be used?

I can force students to write out designs. And they’ll try. Over the years though what seems to influence students most is what they see me do.  If I get lazy they’ll get lazy. If I take shortcuts they’ll take short cuts. If I use good practices though so will they. If I model design, planning for expansion, and show that I am thinking beyond the near term so will they. I keep reminding myself of this.

Leading by example is the best tool of all.

Thursday, November 22, 2018

The Problem With CS Education Research

There is some research in who t teach computer science (OK, mostly its about teaching programming but that’s important too) but not a lot of teachers or professors are adopting it. One has to wonder why? Eugene Wallingford takes a look at this question on his blog Why Don't More CS Professors Use the Results of CS Education Research?  He has so reasonable answer having to do with peer pressure and pressure from students and parents to do things “the way we’ve always done it.”

The path of least resistance is tempting of course. And change is hard. But I think there is more to it than that. I mentioned Parsons Problems to a professor at a university and he knew nothing about it. And why would he? For many professors at R1 schools research is a higher priority than teachings. And teaching high level courses has a higher priority than lower level courses.  But higher education is not my area so I look closer to home – secondary school teachers.

I should start with myself though be fore I look at others. Problem number one for me is lack of understanding. I’ve read some papers on worked examples and Parsons Problems. I think I understand them. Sort of. But the language of research papers is not one I am totally comfortable with. No, that’s not quite right. I read it comfortably but figuring out how to put the conclusions into practice is often still a little opaque to me. These papers are written for other researchers and not for people to implement in their own classrooms. So that is problem one.

Then there are the tools that are used in the research. I have played around with a couple of Parsons Problems tools. Eh. Clearly they were developed by people who were developing for a specific audience that is possibly more forgiving or willing to work harder than the average high school student.   Lots of them look like the old school (i.e.. before windows) applications adopted for the web. Hardly the thing to grab the attention of a modern HS student. To be honest I tend to worry about using tools developed for research projects. One never knows when the researcher will move on to a new interest.

I want to use Parsons Problems but I struggle to find the right tool to use. I want to use worked examples but I need to spend sometime with someone (or some paper) that knows how to help a HS teacher learn best practices. I’m sure there are other things I can and should learn from CS Ed researchers but I don’t know what they are.

That brings up the next problem. I spend money out of pocket to be a member of ACM and SIGCSE. That gets me a lot of great papers to read. Money well spent IMHO. But it’s been a while since I have been to the SIGCDE conference (maybe this winter) and that would let me get more out of these papers. I could ask more questions and hear the questions of others. I think a lot of HS CS teachers don’t really even know much about SIGCSE or attend the conference. Yes, there are a bunch of HS CS teachers at SIGCSE. They’re a small subset of the total community though.

There are more HS CS teachers at the CSTA Conference but that’s not a venue high on the radar of university CS Ed researchers. There are other conferences more likely to help a professor get tenure or impress possible funding agencies. That is not to suggest that CS Ed researchers don't care about HS CS. They absolutely do. Several have been very generous in their support of CSTA and of spending time helping HS CS teachers. I owe them a debt.

Many HS CS educators don’t have the time, energy, or motivation to go digging for new ways to teach. It’s hard to blame them. Their students do well on examples, pass the AP tests, do well in university, and generally seem happy with the statues quo. How are they ever going to learn how to do things better or even decide if there are better ways?

In short, yes, some are unwilling to try new things but more would if a) they had a better understanding of the techniques and b) they had tools more suited to younger learners. The biggest factor though is they just don’t know about the research and what it suggests. Someone needs to take that on. Calling NSF, Code.ORG, CSforAll, SIGCSE, and CSTA!

Monday, November 19, 2018

The Learner Gets A Vote

One of the cool things about Twitter is that some interesting discussions take place among really smart people and the rest of us get to watch and, if we’re smart, learn. One such conversation took place over the past weekend with a number of really smart, very well informed (with, you know, actual research behind them) educators talking about CS pedagogy. 

The discussion was between a number of high powered university professors. As a lowly high school teacher I was hesitant to inject my thoughts. But I seem to be genetically incapable on keeping my thoughts to myself so ..

My comment was “A lot of times we forget the student and the environment they live in. The best thought out pedagogy in the world doesn't work if students reject it.”

It may be surprising but many students have strong ideas about what they should be learning. Their ideas of what is relevant are often different from that of their teachers. It’s easy for us as educators to say “we know what’s best” but students do get a vote.

If students think the tool is too hard, too easy, or just wrong it will be a struggle for them. Sure we as teachers can do a lot to make things go smoother. We can explain why it is good to use that particular tool for example. And we can make sure that projects and exercises are interesting to students and not just to us. What we can’t do is just assume that because we know the pedagogy is right that students will take that for granted and wholly embrace our methods. In fact, we have an obligation to do so. “Because I said so” almost never works as a motivation.

Friday, November 16, 2018

Testing Computer Science Knowledge Is Hard

How to evaluate computer science students is always a tough question. It’s everywhere that computer science is taught. There is something of an issue with a course offered in the United Kingdom f or example. Exams ‘useless’ for computer science, say experts  Among the experts they quote are two educators. Miles Berry is someone I know and he definitely qualifies as an expert.

The software developer the article quotes develops educational software, which is interesting. It seems like articles on software education always seem to include a quote from a software developer. Why?

In any case, evaluating CS knowledge is a tricky thing. I prefer projects to tests and quizzes but they have limitations as well. Mostly that it is easy to cheat. Students have time to figure things out, which is great, but that means one has trouble knowing what they know against how good they are at looking things up.

Calling this cheating might not be the right word because real programmers share and copy code all the time. And being able to look things up is an important skill.

Paper tests are harder to cheat on but limit creativity. And they're no fun. I use the occasional quiz in my classes. It sort of keeps kids honest to a point and lets me get a better handle on where students are struggling with concepts.

Having one on one conversations might help some. But that doesn’t scale well. Some students have trouble communicating what they know and some teachers have trouble asking the right questions. So much depends on the teacher student relationship.

I wish we didn't have to grade at all. That would require students who learn because they want to know things and not just want to get good grades. As teachers we would still have to understand where students were having a hard time because that would help us to teach better and students to learn better. Most evaluative instruments feel like blunt objects to me.

Thursday, November 15, 2018

16,000 BBC Sound Effects

I don’t know about you but I regularly go on the lookout for sound effects for projects. Today, I have to share this new source for sound files that may be used for educational purposes. 16,000 BBC Sound Effects

I found this database to be fairly easily searchable. Clips are various lengths and sizes so be aware of that. I imagine you could convert the WAV files to other formats if you really needed to. I’m still experimenting with them.


These 16,000 BBC Sound Effects are made available by the BBC in WAV format to download for use under the terms of the RemArc Licence. The Sound Effects are BBC copyright, but they may be used for personal, educational or research purposes, as detailed in the license.

Wednesday, November 14, 2018

Post-secondary Cybersecurity Curricular Recommendations

There is more computer science than we could ever cover in grades K-12. So much of it is important and exciting. Every parent open house I get suggestions for what we  should teach in high school. There is no way we can teach it all. There is no way we can do everything in universities either. One other thing is clear, cyber security is growing in importance. While I try to cover a little of it in my courses (easily fits a few classes in several courses) I can’t cover as much as I’d like. My hope is that universities cover a lot more. I think most do.

The ACM and IEEE have just reported out a document to help post-secondary schools design their cybersecurity programs. I haven’t read the whole document yet but I know some of the people involved in writing it  and in the process that goes into creating documents like this. so I am confident in recommending it.

Do you cover cybersecurity in your curriculum? How much do you have time for?

First-Ever Global Curriculum Guidelines Reflect Worldwide Demand for Qualified Professionals and Urgent Industry Needs

After an extensive two-year process, a joint task force led by the Association for Computing Machinery (ACM) and the IEEE Computer Society (IEEE-CS) has released a first-ever set of global curricular recommendations in cybersecurity education. This new set of guidelines, Cybersecurity Education Curriculum (CSEC2017), is designed to be the leading resource for comprehensive cybersecurity curricular content at the post-secondary level. More than 320 advisors drawn from 35 different countries contributed to CSEC2017.

Tuesday, November 13, 2018

Toys or Tools

Are we using toys or tools to teach computers science? The cute little robots for example. Or Micro:bit? or any number of other fun little gadgets that we use to make learning more fun and interesting? Toys or tools? Calling them toys makes them seem frivolous and unimportant. See Merriam-Webster definition of toy which includes “something (such as a preoccupation) that is paltry or trifling” “Tools” implies work or perhaps even not fun. Too serious for some though.

The definition of “toy” also includes “something for a child to play with” Ok, “play” seems a little better than “trifling” but still not so serious. Isn’t school serious business? Yet educators know that play is the way children, especially little children learn. And we’ve know this for a long time.

“The most effective kind of education is that a child should play amongst lovely things.” ~ Plato

I had a related conversation with my programming students the other day. I asked who needed more time to finish a project. A student replied “Everyone but the students who actually write programs for fun.” I do have a couple of those. I tend to see one or two and sometimes three in a course.

The students who find the fun in the course are the ones who do the best. They learn the most. They learn the fastest. And they create the most interesting projects. There may not be a coding gene (as Mark Guzdial insists and backs up with research) but some students sure do seem to find coding more fun than others. As a teacher I do try to make it fun for as many as possible.

My experience tells me (not research so doesn’t count for much perhaps) that students who enjoy their projects learn more and do better at coding. Calling the tools we use to make things more interesting “toys” or “tools” doesn’t change that they make things more fun and interesting. Words may bias people so we should be careful how we use them. Perhaps we tell the funding people they are tools. And maybe we say the same to parents. Calling them “toys” will lower stress for some students and cause others to take things less seriously. It can be a tough call.

Among ourselves (educators) we can call them toys because we understand that toys and play are the tools of learning.  For the most part I think we should avoid categorizing them as either tools or toys. There is too much emotional baggage about both of those words. Let’s try to avoid broad characterizations completely and just call them what they are: computers, robots, sensors, or what ever.

Remember fun is good even when it looks like work to someone else.

FWIW I found that Plato quote at Child’s Play Magazines Quotes about play Lots of great ones to choose from.

Some of the web most things on the Internet are blogs. This post is inspired by a post from Doug Peterson (as many are) that quotes and links to another blog. Specifically Doug’s Toys or Tools post that links to Tim King’s ECOO BIT18: Reductionism and Ignorance in Educational Technology post. Both posts are worth a read.

Monday, November 12, 2018

Guest Hosting a TweetMeet on CS and Hour of Code #MSFTEduChat

Computer Science Education week is fast approaching. It's a big week and one of the big activities for a lot of teachers, students, and schools is the Hour of Code. Microsoft Education is running a Twitter chat or Tweet Meet on the topic and I was asked to be one of the guest hosts. It should be very interesting with a lot of international flavor.

Save the date - Nov 20
Quite an interesting line up of international teachers co-hosting across time zones, national borders, and languages. I hope you’ll join us.

Combined headshot

More information at 

Friday, November 09, 2018

How Do We Define a Successful High School Computer Science Program?

Mark Guzdial has an interesting post asking When do we know that a programming course is not working for non-CS majors? The focus of the post is undergraduate level computer science courses. Can universities create CS courses that work for CS majors and non-CS Majors at the same time. It’s an important question for universities who are faced with more and more CS students and having trouble hiring enough faculty. We face some similar questions in secondary school computer science.

In secondary schools we don’t really have majors and we don’t have a way to identify CS majors. So all of our courses have students who may or may not major in computer science when they get to university. We not only have to ask if our courses are working for future CS majors and for students moving into other majors. Do we even know what “working” means in the secondary school environment?

Is a first course working if enrollment is up in more advanced courses? If enrollment does not go up does that mean the first course is not working or are their systemic reasons like guidance pushing students to more world language or other sciences? Or perhaps scheduling problems with too many interesting electives and to few open slots in the schedule?

Are our courses working or failing based on the number of students who do go on to major in CS? Or is that not a good measure because a lot of people in other majors are likely to need CS. More and more math and science courses make use of programming for example.

Generally it is very hard to collect data about our students once they graduate. I need to think on this some more but I am hoping some of you, my readers, have some thoughts on the matter. We probably need some answers as we work to convince more schools to offer CS. Administrators will likely want to know how we know we are teaching the right things the right way.

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.

Monday, November 05, 2018

Programming Projects Should Be Personal

I’m always looking for new projects. I find them in the strangest places. Facebook for one. And some not so strange places. The AP CS Principles curriculum from has lead me to several. Most recently, the unit on data and privacy took my class and me to the Data Privacy Lab at Harvard

imageThe site has two sections, one looks at your browser history and the other looks at some of your demographic data to see how identifiable you are. One enters imagetheir zip code, birthday, and  gender. The system looks at census data. and shows you how identifiable you are from that limited data set.

Well that is interest but where is the project you hint at in the title of the post. Ah, good question. Since this is a tool based at Harvard you can also see how unique you would be at Harvard. This suggested to me that looking at data from the school were I teach might be more interesting to my students. I asked my Director of IT (have I bragged about how awesome tech support is at my school lately) and a short time later I had a nice comma separated list of gender, birthday, and zip code for all of the students. No more personally identifiable information than that. image

A little bit of coding and I had my own data tool.

That’s when I decided that I had a possible assignment for my students.

I think that students are more interested in projects that are personal to them. Looking at data from Harvard, as fascinating as that could be, is probably not as appealing to a student as data from their own school. They should be able to find themselves in the data. I hope they’ll want to see what they have in common with others in the school.

Now I could assign all of my students the same project. That is what I usually do. I’ve been wanting more variety though. I don’t want one student to solve the project and just share it with their neighbors. A little help, a few pointers, that’s ok but not the whole thing.

For this exercise I decided to try something new (to me at least) and offer a lot of options. They’re all the same basic logic and require the same basic “tools” but there are enough different to confuse a student who copies without understanding. At least I hope that is the case. So I gave options:

  • How many males is a particular zip code
  • How many females in a particular zip code
  • How many males born is a specific month
  • How many females born in a specific month
  • How many males born is a specific year
  • How many females born in a specific month
  • How many people from a specific zip code were born in a specific month
  • How many people from a specific zip code were born is a specific year
  • How many people were born on a specific day (same exact day, month, and year)
  • What percentage of students are male and female
  • Which zip code has the most people (this is a tougher one for people who like a challenge)

None of this is hard (although one of my students insists I am not allowed to say anything is easy) but I just want them to have a little practice problem solving with arrays before we move on to a new topic. I am not allowing students who sit together to do the same exercise. Eventually I want to assign everyone their own unique variation. IF this works out I will start trying to think of similar little exercises that can be just different enough for each student that they have to think on their own.

Anyone else do this sort of thing? Does it work for you? Does it just sound crazy? Yeah, grading will be interesting. Any other concerns?

Friday, November 02, 2018

Propose a Presentation for the CSTA Annual Conference 2019

CSTA just announced the Call for Proposals. for the CSTA Annual Conference just days after I blogged (Getting Computer Science Teachers To The Next Level ) that people who help others develop as CS teachers. Coincidence? Actually, yes, but who cares. Now Doug Bergman has a very nice blog post about why you should submit a proposal on the CSTA Blog. It’s all good stuff and all true. You know I have to add my two cents though right?

Presenting at a conference like CSTA is a great way to make a contribution to the greater computer science education community. Making a difference is why we teach isn’t it? A conference like CSTA is an opportunity to expand our reach and make a difference beyond the walls of our own school or the boundaries of our own districts.

We all have idea and we all try different things. Some of them work. Some of them don’t work. We learn and go forward regardless. There is a saying that anyone can learn from their own mistakes but the really smart people learn from other people’s mistakes. Conferences are a chance for people to learn from the mistakes of others.

I have known a lot of amazing teachers who say “but I’m not good enough” or “my ideas are nothing special.” Yes, the imposter syndrome is strong in many of us. If something works in your classroom than you have a success story to share. If A project, a role play, a lesson plan, a tool you have made, adapted, or explored has made a difference in your teaching practice you have something to share. Few of us use nothing but canned scripts.

The audience at the CSTA conference is very warm, friendly, and supportive. People are their to learn and share ideas not to be critical of others.  Sure you’ll get questions and you will probably get suggestions as well. A good speaker presents to learn as well as to teach. Presenting at CSTA will make you a better teacher. You’ll get as much (if not more) than you give.

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 and 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:  Her second session (after lunch) was on sorting (another fun topic) and she again shared resources at 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 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 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. 


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 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 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 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 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 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.

Friday, September 28, 2018

Girls in APCS Research

Are you an Advanced Placement Computer Science teacher?

Are you concerned about increasing the number of women in computing? 

Are you willing to help out a fellow teacher with a research project?

If so, please find the time to help Derek Miller. There is a link after the introduction to Derek and his project.Thanks.

Derek Miller is a computer science teacher from the suburbs of Chicago and has been an AP grader for five years. He is currently working on his dissertation and needs as many AP Computer Science teachers as possible to take a 20-minute survey. The results of the survey and follow-up interviews with a handful of participants will hopefully generate some ideas to help recruit and retain more girls in computer science classes. All participants will receive the research results so hopefully everyone will learn something by taking the survey. If you have any questions, please let Derek know by emailing him at

Girls in AP CS Survey Link

Thursday, September 27, 2018

Progressive Code Demonstration Programs

One of my goals this year is to improve my demonstration code. As part of that I want some demos that build on top of one another. A lot of things beginners code is complicated because they don’t have all the tools they should have. I find that a student who has seen or done something the hard way often really jumps on a new concept that makes things easier.

My current demo starts with various string library methods. For example, we are using the ToUpper, and ToLower methods to format data. We are using SubString to extract parts of a string, IndexOf to search for substrings, and Length to control a lot of what we are doing.

In the form below, a label shows the input string after the first character was set to uppercase and the rest of the string to lowercase. The list box shows each word in the input string one at a time. You’ll notice those words are not reformatted. We’ll get to that.


Very soon we will start some serious discussion about writing our own methods. At that time I will use the same base program but write a method that formats a string to first character uppercase and the rest lowercase. We’ll plug that in to the existing code so that students see how easy that makes things.

Later we will get serious about arrays. That will also be a good time to introduce the Split method which breaks a string apart based on a search character and puts the resulting substrings into an array. We’ll see a much easier way to split a string without writing our own loop and other code that can get tricky quickly. And we’ll see how much easier processing from an array can be.

That’s the plan so far. We’ll see how it works in practice but I have high hopes. Do your do demos or projects like this?

I know that some people teach with a large project that builds over the course of a semester as students learn new things. That sounds like a great idea as well. I struggle to think of the ideal project for that so I’m open to suggestions.

Tuesday, September 25, 2018

Doug Bergman–Amazing Computer Science Educator Revisited

About five years ago I interviewed Doug Bergman for my occasional series of interviews with computer science teachers.  Doug is constantly doing new things so I thought it was time to interview him again.

How would you describe the changes in CS education in general and at your school in particular in the last five years?

We are seeing CS find it's way into schools where is simply did not exist before. Certainly that presents challenges, such as how do we find teachers, but what an AWESOME problem to have, right?!. And supply and demand usually drives the market, so I would think that "if we build it, they will come" (name the movie?).  We are already seeing the numbers of new teachers in CS increase dramatically.

Our program has always tried to keep at the leading edge of technology and CS education. And for many years, we were far out, but over the last 5 years we have seen other CS programs really start to make traction, even entire schools and school districts and even entire states (AK due to the incredible leadership by Anthony Owen et all). So, it has pushed us to continue to innovate and try to stay ahead of the curve.

This year with the addition to David Renton to our department, we are adding in Virtual Reality development into our curriculum. In fact we have started exploring that with our 12th graders and are excited to see what projects they propose. Other areas we are aggressively exploring are A.I., cloud based computing, cybersecurity, and IoT.

You always seem to have the latest state of the art hardware at your school. Be it Kinect, robots, or Virtual Reality headsets.  How do you get that stuff?

So, this has happened through a variety of avenues. We have had several grants that we applied for. Early on, we actually went out into the community and actually asked for seed money to get things started.  We are a private school, so we have to distinguish ourselves from our competition (public and private), so once our program started to get traction and our enrollment numbers started increasing, it started to become something the school can use as a tool of recruitment, so there was good reason to support a budget. We don't really use textbooks, so while other departments spend thousands of dollars on textbooks, we use that textbook money for technology. Then we use that technology for years afterwards, so it spreads out the cost.

Our school also has a couple programs where we can apply for money for special projects, and we take advantage of those.  But one line item in my budget is just an exploration item. We need money to explore new technologies. And the school supports our efforts.  I'll sometimes speak to the board at their meetings, and I also like to invite board members/administrators to our events, so they can see what we are doing.

Our school does a lot of marketing , so I make sure we are part of that as often as possible. We usually have several NCWIT award winners, so I make sure the newspaper and TV and gov't leaders are aware of the awesomeness coming out of SC (and also PG). Whenever I present at a conference or have some type of public "something", I make sure our school name is front and center, giving them credit.

Speaking of those hardware options, what do they add to your program in terms of student engagement and student learning?

Students needs to be comfortable working with a variety of technologies that have non-traditional inputs and outputs. Everyone can code with keyboard and mouse and output to a screen, but we want our students to go beyond that.  Inputs such as voice, touch, light, infrared, proximity, thought, temperature, footpad, game/hand controller, steering wheel, or sound---  and outputs such a VR goggles, tablets, robot motors or lights or sounds, a webpage, database, or message.

Each ones requires a different way to interact and most likely a different language. I want students to have that experience, so when they go into whatever industry with whatever technologies, they will be comfortable figuring things out.  Students get used to failure and exploration and experimentation, but also how to use different technologies to address things that matter to them.

How does including (arguably) fancy equipment change how you teach?

I would be teaching the same style with whatever technology. Having access to it just helps be at the forefront of what is out there. It keeps class relevant to the them...and to me. I gotta admit, I get to play with, take apart, and program cool toys all day every day.

Porter-Gaud added a CS teacher this year – David Renton. (Loved the interview with you both ) Is that because of growth in numbers of students taking CS? If so, how do you account for that growth?

Yes, we are bursting at the seams. Our numbers are increasing every year, along with that our percentage of females is also increasing!! (woohoo, it's one of the goals of our program. We are at 40%). We have borrowed people from math dept, I.T. dept and taught overloads. Then this years, we brought 5th grade up to middle school, so Bob Irving (also doing amazing things in MS) who was teaching some 9th grade classes for me had to go teach the entire 5th grade as well. So we officially just needed someone.

We were very aggressive in what we were looking for. I needed someone who can come in and hit the ground running with skills we don't already have. We needed someone who explores and experiments every day, but also sees project-based learning as the most effective tools for the CS classroom.  David had already mentored several of our students over the years, (via Skype, email, and FB) even though he was in Scotland.

You are currently a member of the Board of the Computer Science Teachers Association (CSTA). What are your goals in that position?

I love being on the board right now. Our new Executive Director, Jake Baskin, has taken us to the next level in just his first few months on the job. We are now the national (international?) organization that the world has been looking to. Great things to come, and I want to be right in the middle of that.

Another big thing you have done since my last interview is to publish a book - Computer Science K-12: Imagining the possibilities! What is the book about and who is the target audience?

As CS becomes more and more a part of what schools offer, we have chance to do things differently than some of the other more traditional disciplines have done. I don't think lectures, worksheets, and textbooks are the best way to design a meaningful, relevant, and innovative Computer Science class,whether it is a beginner level or advanced. The technologies that are part of CS are engaging and interactive and dynamic -- our CS classes should be like that as well.

My book offers a different way of teaching Computer Science.

Over the years, I have found ways to design projects where the learning is all student-driven and active learning...students choose the topics of those projects, so the projects mean something to them. They are more likely to put in extra work, extra thought, and extra effort if they are creating something that was their own idea; we see that over and over every year in all our classes. 

Teachers can setup their project proposal documents in such as way that students propose a project with complexity and focus enough to include all content/programming-language skills/constructs/vocabulary that is the focus of the project.

My book talks about things you can think about to design a class or program that is truly student-centric. There are lots of examples of projects, rubrics, assignments, and specific student examples, even examples from other teachers.  So for that CS teacher looking to up the ante on their class, perhaps to increase enrollment or change direction, there are lots of ideas in there.

For the CS teacher who is brand new to the field and does not really have anything to go on, it can be a great resource full of links to help get get his/her class off the ground, plus get involved in CS education and community.

And the other group that I think might find good value is that politician, board member, community leader, or principal that doesn't really know what Computer Science is and how it fits into schools. The first part of the book just looks at CS in the world and gives an example in every industry, and then looks at how they might translate into schools.

I can't even think of an industry that is not not heavily dependent upon technology. So, those students that understand, can interact with, can control, can program and reprogram that technology to address and solve the problems of that industry are the future leaders.

Friday, September 21, 2018

What Makes A Great High School Computer Science Program

Not long ago someone asked on Facebook for great HS CS programs to visit. Three schools came up quickly and repeatedly. Two are large magnet high schools and one was an impressive private high school. I know something about all three schools and they are doing really good things. They all have an edge though. Some selectivity in students for one thing. The public schools are large with multiple computer science teachers. These are not always things that are possible. Many schools are small, underfunded, take anyone, and have other limitations. So what is the hope for them?

What is a great computer science program? How do we define it?  Can it exist in a smaller school?  Does it require lots of courses and lots of students? Is Advanced Placement a requirement for a great HS CS program? It all boils down, in my thinking, to what result does a great HS CS program show.
Perhaps I should start with my idea of what great outputs are. I think the best programs turn out students who a) really want to study more computer science and b) are well prepared for learn with a solid base of understanding.

Not that all students go on to take more CS. No, I don’t want everyone to take CS. There are a lot of other interesting and important things to study. But if some students decide to take more CS that’s a great thing. If we give them a head start with knowledge that is probably the difference between an adequate CS program and a good CS program.

Great? Hum, what more is there? Perhaps a great program give students the opportunity to learn and produce outside the box if the standard curriculum.

How do you get there? The more I think about it the more I think that the difference between adequate and good and on to great is the teacher. What is a great CS teacher? I think there are several factors. I think domain expertise is very important. I think teachers who are great teachers can get very good results without great subject matter expertise but I’m not sure they can have a really great program. Not until they learn more themselves. Yes, this is a problem. But a workable one.

I think great teachers are willing to admit that they don’t know everything. I know that seems contradictory with the last paragraph but it is not. Computer Science is too big for one person to know it all. A poor teacher, confronted with a question they can’t answer, says “we’re not going to get into that.” A good teacher says “let’s learn about that together.” or “Here are some resources. Come back and teach me.”

A good teacher may teach the same, solid way every year or every semester.  A very good teacher changes what they are doing constantly. Seeing what works and refining it and tossing what doesn’t work. And they don’t count on just their own expertise. They seek out professional development, they read blogs and research papers, and they participate in the larger CS education community.

What about curriculum? I have mixed feelings about the Advanced Placement curriculum. Some days I love the range of topics in AP CS Principles. Other days I wish I could go far deeper into specific areas.  AP CS A, well, let’s just say I am not a fan. At the same time I am realist enough to know that the AP designation plays well with parents, students, and administrators. It is the only way some schools will ever get an advanced CS course.

Can an AP course be part of a great HS CS program? Probably. A lot of people define at great HS CS program as one where a lot of students get 4s or 5s on the AP exams. I find this a narrow definition but I also think that teachers can do some creative things even with the nature of the AP program. It’s just harder.

Career Technical schools often don’t offer AP courses. On the other hand they also have students for 2 or even three solid years with the flexibility to cover things their own ways. Students come out of these programs ready for, if not jobs, paid internships. They also have good preparation for the CS part of higher education and strong motivation. Like the magnet schools I wrote about above they are largely self-selecting though. I think teachers in comprehensive schools can learn from these programs though.

At Career/Technical schools there is a clear purpose, a practical purpose, for what students learn – a job. We don’t often “sell” the reasons for what we teach in CS in comprehensive schools. “It will help you in college” is a bit abstract sometimes.

A great HS CS program helps students find their own motivations. This means projects that are meaningful to students. Students have some agency in selecting their projects, the concepts they are learning, and the tools for that learning. This too takes some courage on the part of teachers. I think it also takes some willingness on the part of administrators to allow for some courses that are atypical. Perhaps even dropping AP CS! Great CS programs will know about the boxes but be willing to move outside of the boxes when it is appropriate. Or to expand the size of the boxes they live in.

How do you define a great HS CS program? Are you part of a great CS program? If you are part of a program that is good or just OK, what do you think you need to make the program great?

Tuesday, September 18, 2018

Deciding What To Include in High School Computer Science

The more I talk to people about what should be included in high school computer science the more I thing of the Indian story of the blind men and the elephant.

blind men and the elephant

I attended an industry advisory meeting for a local career technical school last night. I attend several of these at several schools every year. I hope I provide some value to them from my time in industry and my education experience. I know for sure I get a lot out of these meetings. Industry attendees always have suggestions of what should be included in the curriculum. Usually their suggestions relate to their particular business needs. Hence the elephant story. Computer science is huge as a discipline but the parts we interact with regularly are the parts we think of as important.

When it comes to high school computer science curriculum we do have some standards. The CSTA Standards are really good. In a way though I see them as the floor - the minimum. Even the AP CS courses are not far beyond these standards. They practically read as the AP CS Principles curriculum though one could meet them without the AP CSP course. But what if you want to do more?

The standards are also about concepts and not implementation. That is also great. That is how it should be. It leaves us open to the question of how to implement the teaching of these concepts. This is where the things industry wants us to teach, which is often more about tools than concepts, can be influential. If we want it to be. We don't always want to take those suggestions too far as our students are not ready for everything industry would like us to teach.

What I have been thinking about lately from conversations with industry people are four things:

  • Cloud computing
  • Virtual Reality/Augmented Reality
  • Artificial intelligence
  • Internet of Things

Whoa! That's a lot. And they are all more and more intertwined. It is hard to implement IoT without cloud computing. AI is an important part of VR/AR and the cloud is where a lot of AI is executed. AI, Cloud Computing, and IoT combine for a lot of image recognition. I could go on but if you are a regular reader of this blog you probably know a lot of this.

Which of these is the most important? I think we could get arguments for any of the four as well as various combinations. And while we might like to think we can include a little of each, let’s face it, any of these could be a year long course by itself with bits and pieces of the others to support the main emphasis. So what is a teacher to do? Personally I have totally decided. Actually, just about every day I totally decide on a different one of those four things. Not helpful. Sigh.

Cloud computing looks pretty exciting. Amazon Web Services (AWS) and Microsoft’s Azure both have programs for educators. AWS Educate from Amazon and free Student Azure accounts from Microsoft. Which to choose? I need to spend some serious time looking into both of them I guess. Anyone using either of them in high school want to help me out?

Virtual reality/augmented reality is quite “sexy” and I can see it attracting lots of student interest. David Renton is having his students program VR which is cool. But at $200 a head set funding a classroom set seems daunting.  Still it is cool. And one can teach a lot of concepts to students who are highly motivated to create something awesome.

Where do I start with artificial intelligence?   Microsoft AI School looks like a good place to start learning and using some of their AI tools. OK I’m overwhelmed. I need a face to face course. Somethings are just too much for my old brain.

Internet of Things may be the item that interests me the most. It is a mix of hardware and software and my gut tells me that is as much key to the future of computing as anything. Mix in a little cloud computing for hosting. Perhaps an existing AI took for analysis. Maybe even a little visualization. Not quite VR/AR but interesting non the less. That could be a great course. Now all I need is curriculum or a year of free time to learn it on my own enough to develop curriculum. Sigh (again)

What I’d really like to do is have a class where the students figure all these things out themselves. Have them design and build a major project involving one or more of these technologies while doing the research, experimentation, and learning while I coach. Perhaps connect them with people and documents and videos and the like. Then they can teach me. Now wouldn’t that be great!