Thursday, March 14, 2019

Awards I Wish We Didn’t Need

Last week my school was told we had earned the College Board’s Female Diversity award for both Advanced Placement Computer Science A and Advanced Placement Computer Science Principles based on how many female students we had in those courses last school year. Yeah!

We’re one of two schools in the state to get this recognition. That’s a bit disappointing. The more I thought about it the more I thought how sad that getting to adequate female representation was so rare that schools were getting special recognition for it. Are there similar awards for other AP courses? Are their awards for schools for getting to Male Diversity numbers in courses were male students are underrepresented? Is that even a thing?

Don’t get me wrong. I am thrilled that we have good representation of female students in our AP CS courses. And I’m not shy about sharing news of the College Board's recognition. 

It’s hard to get solid APCS enrolment period. I teach at a private Catholic school that requires four full years of religion. That has a serious impact on electives. We have even better female representation in our lower level CS courses because we require a full year of CS for graduation. AP CS is going to be an elective so we have to have a good environment to get students to want to fit it in.

With cultural norms the way there are, a lot of female students are encouraged to follow other academic paths. World languages, for example, fit the stereotype and it often feels like that is a more common, if not natural, path for female students. And the boys seem to be less excited about languages.

Our goal at my school is to ensure that all students are comfortable and feel like they belong in computer science courses. We are careful about room decorations. You’ll see women in computing highlighted in posters and bulletin board items for example. I think the most effective effort it that teachers encourage all students, reassure them that they mistakes they make don’t mean they are stupid or incapable, and include projects that are not gender biased. You know, be a good teacher.

For now we all need to make efforts to include a more diverse set of students. And it is nice to be recognized for the success of those efforts. But I’ll tell you, having a diverse group of students is all the reward I really need.

Tuesday, March 12, 2019

High School CS Education: Where Do We Start and Where Do We Go?

There are a number of sets of standards with most based on the CSTA standards ( and the K-12 CS Framework ( A lot of really smart people (and me in the case of the framework) worked on them but I've been thinking about creating my own set to use.

Why? Difficult to explain but in large part to get things clear in my own head. What do I see as the concepts and ideas I should be teaching in my high school? How do I want to express my thoughts – the same as the existing standard or will putting them in my own words help me understand them better? An open question.

Now one might think this is easy with the standards already written. But it is more complicated than that. High school is very much in the middle for computer science. We’re not yet college/university but we want students to be prepared for that level of education. At the same time, there is no standard of knowledge that universities are expecting all incoming students to have. That makes their lives difficult but they have been living with that as long as there have been CS courses. It’s leaves us in high school a little more free to determine our own output goals though.

On the other end, there is no standard set of CS knowledge that high schools can expect all students to have. That is especially true for a school like mine that takes in students from over a score of different middle schools and two different states. Like the universities, our curriculum has to start assuming no background at all. Oh sure students are somewhat tech savvy compared to many of their parents but I still spend time teaching how to move files from one folder to another. Being great with Instagram doesn’t translate to computer science knowledge.

We see some students who come in more advanced as well. They may have done a lot of programming in middle school. Many in an enrichment course, a summer program, or FIRST Lego League or some other opportunity. They may even be programming in higher level languages. Can they skip the first course? Sure, as long as we have something more advanced to help them continue to grow and learn. It would be a shame if they were effectively done before high school and spent 4 years forgetting things before university.

As I think about high school computer science curriculum holistically I think about the Computer Science Curricula 2013 (CS2013) document. One key take away for me there was the three levels for university curriculum. Basically it was things all CS departments should offer, a level that all departments should offer “all or almost all”  and electives. For high school I don’t know that I want three levels. Maybe two would be enough. Things that all high school curriculum should offer and electives. Earlier version of the CS Curricula had only two levels. I am not sure there is room in the schedule for three levels in high school. Electives should be offered in schools where there is more room.

I hesitate to specify standard or required or even recommended electives for high schools. Gradually CS, and other subjects, move down from universities but there is no clear vision for what will move down from universities to high schools in the near future.
An other idea I like from the CS 2013 document in the Knowledge Area breakdown of concepts. This sort of breakdown is also included in the CSTA Standards of course. Do I want to come up with my own breakdown or use the CSTA version? I’m undecided.

Seems like a big task and it is. But I really feel like I need an expression of my personal (well researched and thought out) ideas of what should be taught. Anyone else feel like this?

[Note: I was on the CS 2013 ACM/IEEE Task Force and the K12 CS Framework writing team. And I still think I need to think about this stuff.]

Monday, March 11, 2019

Don’t Cross The Data Types

Remember in the first Ghostbusters movie where the ghostbusters are told not to cross the stream of their ghost busting guns? And then at the end they do cross the streams? Mixing data types is like that some times. You really have to know what you are doing when you mix data types.

The Facebook group for AP CS A teachers recently had this Java example:

Can anyone explain why a + b is NaN but a+=b is zero?
int a = 0;
int x = 0, y = 0;
double b = (double)x/y;
System.out.println("a: "+ a);
System.out.println("b: "+ b);
System.out.println("a + b: "+(a+b));
a += b;
System.out.println("a(2): " + a);


a: 0
b: NaN
a + b: NaN
a(2): 0

NaN is not a number and is the result of the divide by zero. You probably shouldn’t do that anyway but it happens. What is interesting here is the different way that (a + b) is handled compared to a += b

a += b does a conversion of b to integer before it does the addition while (a + b) does a conversion of a to double. That explains the different results. Of course if you were to do a = (a + b) you would probably get a compiler complaint. I think. I know you would in C# but I haven’t tried Java yet. FWIW C# also complains about a += b and demands an explicit cast. Different languages and compilers handle these things differently.

So what is the message here? I think the message is that programmers should usually make explicit casts when they mix variable types. Maybe you know what will be cast to what for different variable types and different operations but a) how much do you want to bet you’re right and b) how much to you want to bet that the next person to look at your code will understand what is going on behind the scenes?

Mixing types causes a lot of confusion for beginners. SO does how numbers are stored (some kids never seem to understand that 0.1 is an infinitely repeating fraction in binary and what that means) of course. Encouraging students to cast or at least to be very careful about the types they use and the types they mix is an important lesson.

Friday, March 08, 2019

Making Projects More Interesting With More Data

My students are working on the palindrome project. You probably know it – enter a string and report if it is a palindrome or not. In my case, I have them create a method to “clean” the string by stripping out all of the characters that are not letters and a second method to reverse the string. My goal is practice in creating methods as well as string handling and loops.

It’s always more interesting if the test data is more interesting. There are lots of common palindromes that students are familiar with such as “Madam I’m Adam” and “Race Car” and the ever popular “Mom”, “Dad”, and “Bob.” My favorite is “A man, a Plan, a Canal – Panama” because you can read it dramatically. This week I stumbled on a web site dedicated to palindromes - There are probably other palindrome related web sites as well.

I’m thinking about supplying a file with lines that are and are not palindromes and having students modify this first program to read the file and report.  More data is better data.

Another idea I have percolating is asking students to write code that creates palindromes. I’m not sure how hard this would be as I’m still thinking about how I would do it. Again, data is important. You want to use real words and ideally the phrase should make sense. Does it have to though? Hum.

I have a dictionary file – a text file with almost 114,000 words in it. I figure that should be useful for something. I keep thinking it would be useful for a lot of interesting projects – things like word games (Boggle, Scrabble, etc.)  or maybe spell checkers.

There are sources of large text files on the internet as well. I have files with the full text of some books (in the public domain of course) and Shakespeare's sonnets. Check out Project Gutenberg which has some 58,000 public domain books

I’m thinking some interesting word and letter count projects are a natural. A lot of the projects that have been presented at the SIGCSE Nifty Assignments session (collected here at involve working with data sets of words or text. You all know about the Nifty Projects resource right?

You can also make interesting data. For a long time I have assigned a project that creates driver’s licenses based on name and birthday. New Hampshire recently moved away from this scheme for privacy reasons but it was/is a fun project. I grabbed first and last name data from the Census Bureau (there are other lists) and wrote a program to create a data file of random names and birthdays. I’m toying with assigning something like that as an assignment some day. Making sure the dates exist (no February 30th for example) makes it fun. OK, harder, but harder is fun right?

What sorts/sources of data do you use to make projects more interesting?

Monday, March 04, 2019

Remember The Ladies–And Act

In March of 1776, Abigail Adams wrote to her husband who would be the second US president “I long to hear that you have declared an independency. And, by the way, in the new code of laws which I suppose it will be necessary for you to make, I desire you would remember the ladies and be more generous and favorable to them than your ancestors. Do not put such unlimited power into the hands of the husbands. Remember, all men would be tyrants if they could. If particular care and attention is not paid to the ladies, we are determined to foment a rebellion, and will not hold ourselves bound by any laws in which we have no voice or representation.” [ emphasis mine]

After all this time, we, mostly us men, seem to forget the ladies. Most of us are aware that there is a shortage or at least an imbalance of women in the computing field. It’s men’s fault mostly.  We make it worse when we ignore the efforts and accomplishments on the many wonderful women in our field.

We talk about Ada Lovelace and Grace Hopper but use them as tokens too much of the time. Today there are a number of wonderful groups whose focus is directly on bringing more women and underserved minorities into the computing field. Unfortunately, they don’t get the attention they deserve.

Reshma Saujani, founder and CEO or Girls Who Code gives an important response to this problem with her post Erasing Women in Tech: How 60 Minutes Ignored Women’s Voices, Stories, and Expertise

Now I can hear someone saying, well, yeah, but is doing great work and they are helping girls and young women. Plus the 60 Minutes piece was a good promotion of computing for all. There is some truth to that but it misses a point.

These other great efforts, those that Ms. Saujani names and more need their own recognition. How else are they going to attract the participants, the supporters, the money, and build sustainability if no one knows they are out there? Outstanding programs like these need the sun shown on them so they can grow and thrive.

The truth is that we need some special programs for girls and minorities because the male dominated organizations are still not making them as comfortable as they should. Oh sure some of us are trying. I like to think my classrooms are safe spaces for everyone. I’m sure most of my regular readers feel the same way about their classrooms and computer labs. We may even be right. But we’re not everywhere.

As a community, we in computing have to be more generous and favorable to women than we have in our more recent history. Our future depends on it.

Wednesday, February 27, 2019

What Are You Reading?

We all get asked this question – What are you reading? Often this is the context of an interview and the person asking is really asking “how are you keeping current in your field?” For computer science educators there are few things better to read than SIGCSE papers. Right now the Proceedings of the 50th ACM Technical Symposium on Computer Science Education are open for download. I think they’re only open (FREE) to non-members for a few more days. The conference closes this Saturday.

I’ve been downloading anything and everything that looks interesting or useful to me as a high school CS teacher and as someone interested in learning more about the field. I have about 35 papers downloaded. It’s going to take me a while to read them all.

I am a member of ACM and SIGCSE so I will be getting these papers in hard copy so you might wonder why I am downloading PDFs. The short answer is that I lose paper documents but I have a lot of room to store soft copy. And I confess that I want to start reading now.

I can’t make it to SIGCSE (it started today BTW) but I will be following Tweets and other social media updates. Having the papers available will help me understand what is going on better.

So are you taking advantage of paywall free access to SIGCSE proceedings? What other places do you go to learn what others are doing?

Tuesday, February 26, 2019

CSTA Board Elections 2019

Wow! Computer Science Teachers Association members should all have gotten an email about this year’s election for the CSTA Board. It is a remarkable slate of candidates. It seems to get stronger year after year. We, members, have to make decisions though. Not that anyone really cares but I am sharing my thoughts.

The K-12 seat is between Doug Bergman and Art Lopez. I’m sure Art would do a great job but I’m voting for Doug Bergman. I’ve know Doug for years and pushed him to run for the Board for several years before I got him to throw his hat in the ring. I’ve been impressed with his performance over his first term on the Board. He is a tireless worker, a leading edge teacher, and a strong promoter of computer science education. Doug gets things done.  Doug Bergman has earned a second term on the Board.

K-8 has another good pair of candidates - Vicky Sedgwick and Alana Robinson. Coming from a big city system and a special education background is a strong plus for Alana. On the other hand, Vicky has been a remarkable advocate for K-8 teachers inside and outside CSTA. Her work with the #CSK8 Twitter chat has been a phenomenal community builder and educational experience for K-8 teachers everywhere.  I would like to see Vicky Sedgwick have another term on the CSTA Board.

School District representative is also a tough choice. Dan Blier and Byran Twarek. I met Bryan while working on the K-12 CS Framework and was very impressed with his work ethic and commitment to computer science education. His experience and performance on the board suggest that Byran Twarek should have a second term.

At-Large is the toughest decision. There is no incumbent nominated for one thing. And both candidates are seriously strong. Lien Diaz has done a lot of work growing computer science education both at her time with the College Board and since moving to Georgia Tech. She’s smart and understands the sort of politics that are involved in growing CS education. Michelle Friend was very important to the creating and early years of CSTA.  Her institutional knowledge of CSTA is very valuable.

I’m still thinking about this one and hate not to vote for Michelle but am leaning towards Lien Diaz.

[Full disclosure: I suggested myself as a nominee for the At-Large opening. I don’t doubt that either of the nominated candidates will do as well or better than I would.]

OK people. My two cents are out there. The CSTA Board candidate bios are available. Read them critically and make your own decision. Agree or disagree feel free to add you two cents in the comments.