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!

Monday, September 17, 2018

The Multiple Natures of Computer Science Education

There was a lot of good CS education activity on Twitter this past weekend. I know I missed a lot of it but some things did stand out for me. One of these was this Tweet from Hadi Partovi, co-founder and show runner at Code.Org:


This is not really new of course. But it does highlight the fact that we can’t look at CS as all analytical and miss out of the creativity inherent in it. If everyone in the class turns in a project that looks identical do we really know if they understand the concepts or are they just good at following directions? Does everyone come up with the same solution? Or do you, the educator, see solutions that are different from what you would come up with? Letting students getting creative makes things more interesting and motivating.

Likewise CS is not just for the college bound or for the career bound. Comprehensive high schools and vocational high schools do tend to look at CS education very differently. We have to be careful that we achieve some balance here. We can’t ignore the tools completely and keep it all theoretical. Nor can we get so deep into the tools that we ignore the concepts that drive the tools.

We have to avoid being the blind men judging the elephant only one what is in reach. We have to share more of the elephant with our students so they become whole people and not limited by too much focus.

Sunday, September 16, 2018

Preparing Students to Ask Questions

I drove behind a Google Maps Street view car for a couple of miles today. Things I wondered about:

  • Will my car show up on Street View?
  • What is it like to be one of those drivers?
  • What sort of meta data are they collecting?

That last question is key. I thought of that because I know something about computer science. I also know that there has be controversy about this in the past. I think I would have wondered about the meta data anyway though.

What is the meta data? What is it used for? Who has access to the data? Lots of questions of the sort we, society, need people to ask. Not just computer scientists but all sorts of people. How are they going to know to ask if they don’t understand what meta data is or how it can be used?

Getting people a basis of knowledge so that they know to ask questions is every bit as important as the “answers” we make them show on exams and quizzes. This is why we need computer science for everyone.

Monday, September 10, 2018

Do We Really Need CS Focused High Schools?

Last week Bill Gates visited the Academy for Software Engineering, a computer science focused high school in New York City. and wrote about his visit. At first reading I was thinking the visit was a good thing. I still think it is – for the most part. Mike Zamansky had an interesting take on the visit (That Time Bill Gates Visited AFSE) that got me thinking.  Basically I like what AFSE is doing but after reading what Mike wrote, I wonder if we really need CS focused schools or could we just do all that stuff at “regular” high schools?

The design class that Gates writes about is a lot like the one my wife teaches at a small, semi-rural high school in New Hampshire. It’s not a CS focused school at all. In fact, their CS offerings in general are pretty limited. But that doesn’t mean that CS concepts can’t be included in other courses or introduced in middle school exploratory courses.  What is takes is administrative support and a trained and motivated teacher. And CS is growing there!

Also last week, Porter-Gaud, a private school in South Carolina, released a video about their two high school CS teachers (Doug Bergman and David Renton – both friends of mine who I admire greatly) and some of that they are doing with their students. Among other things they have their seniors writing software for virtual reality headsets. (Do check out the video of The CS Dymanic Duo )

Porter-Gaud is a college preparatory school not a CS focused school. And yet they have an absolutely amazing computer science program. Again, what they have that many other schools do not have is an administration that is willing to support teachers who are creative, motivated, and willing to learn on their own or (even better) with their students.

We know from several recent surveys that parents want more computer science education.  It is tempting to think that specialized schools are the answer. A lot of people think that CS is not for everyone. Wrongly as evidence strongly suggests. We are also faced with a shortage of teachers with the background to teach more advanced CS and that makes sending them to specialized schools attractive.

If we focus too much on special schools I worry that we perpetuate the idea that not everyone is cut out for CS or that not everyone needs to learn CS. A school like AFSE is trying a lot of things to merge CS into other subjects. That’s a great thing but it will be even greater and more influential if the things they learn about integrated curriculum is shared with comprehensive high schools.

In the long run we as a society will benefit more from things learned in CS focused schools migrating to the wider population of schools than we ever will from the small number of students who pass through these schools.

Wednesday, September 05, 2018

NCWIT Award for Aspirations in Computing–Recognize Girls in Tech

Recipients of the NCWIT Award for Aspirations in Computing receive engraved awards, scholarship and internship opportunities, entry to a peer-network of technical women in the NCWIT AiC Community, various prizes, and more. // Share this status with women in grades 9-12 who should apply!

Several of the girls in my school have received this award in the past and it has been impactful for them. Highly recommended.


Tuesday, September 04, 2018

Why Teach Binary in Computer Science Classes

Sometime when I was around age 11 or 12 I learned about different number systems. I was fascinated with the concepts involved. I literally spent hours experimenting with them. This stood me well when I started studying computer science. We were using Binary, Octal, and Hexadecimal. Octal and Hex are useful for grouping Binary into groups of three (octal) of 4 (hexadecimal). I worked on computers back when one could, and did, toggle code in Binary using switches on the front of the computer. It was awesome.

I’m still fascinated with these systems. I have a Binary clock on my desk and six sided Binary dice in my desk drawer. And of course I try to teach Binary in particular and number systems in general. I’m still surprised that students don’t enter high school knowing this stuff but I guess priorities in education change.

In any case, if you do an internet search for “teaching Binary” you will find a lot of resources and discussions about the how to teach. (My own list is at Resources For Teaching Binary Numbers FWIW) What I don’t find a lot, at least not easily, is justification for why we should teach Binary numbers. It’s obvious to us old-timers. It’s in the curriculum and standards for new teachers. That’s good enough for most of us. For students? Well, students want to know why it is important to learn something.

I asked teachers on Twitter what they said to justify teaching binary. I got some good answers.






There are more reasons as well. Binary explains the limits around the values different data types can hold. That is a key one to me.

Now I want to organize my thoughts and figure out how to present things to my students when I next cover Binary and number systems. Letting students know the importance and having context is bound to help students see the value to what  I am teaching.

So, how do you explain the importance of learning Binary in computer science?