Friday, September 29, 2017

Who Says There Is No Room for More Computer Science

People keep asking me what required course I would remove to make room for a required computer science course. So I decided to take a look at current requirements for graduation in my home of New Hampshire. This is what I found:

From the state itself:


20 credits? Five classes a day? And 6 of those credits are elective? Seems like a lot of room to me. Now of course in New Hampshire local school have a lot of control so I looked into the local public high school.


Twelve and a half elective requirements. Seems like an additional credit of CS could be added without having fewer of any other required courses.

I teach at a private Catholic high school that requires 4 credits of Religion and still have room for a full year computer science requirement.

So where is the problem fitting in a required computer science course?

Thursday, September 28, 2017

Fear and Loathing and Required Computer Science Education

It seems like every time someone suggests that computer science be a required school subject someone (sometimes several people) bring up on particular objection – that making a subject required makes I a turn off for students. The problem is stated several ways. For example

  • Requiring CS would result in students with unenthusiastic or unprepared teachers
  • Required CS courses would have to be watered down courses
  • Required CS courses force the wrong kind of motivation (extrinsic rather than intrinsic)

While those are all valid concerns are they enough to prevent us from requiring CS? They are apparently not enough to keep us from requiring Math, English, Science, and (in many places) World Languages.

A question that needs to be asked as well is, if students are never exposed to computer science how will they become excited by it? I’m sure we all know someone who got excited about writing from a required English course. Or a math wiz who didn’t know they loved math until that one inspired teacher of a required course got them interested. And the same for just about any subject.

Are we going to turn off some students though poor teaching? Perhaps but that is no more a fear for CS than any other subject. We’re even more likely to excite more students if more students take CS though. Sure the idea of requiring CS is scary to some and the fears must be addressed. But we’re never going to achieve computer science knowledge for everyone if we limit CS courses to people who already know they want to learn it.

Tuesday, September 19, 2017

Designing Projects for Programming Students

Last night a teacher friend of mine gave me a USB stick with the projects he uses with his students. I have projects for C++, Python, Java, and Visual Basic from him. Oh and there are 60+ in each category. It’s going to take me quite some time to go through them. It’s got me thinking about projects in general though.

Keeping students interested is important when designing and assigning projects. The projects I’ve looked at from my friend and the ones I have used myself over the years seem to mostly do that. Although knowing what students a quarter your age will find interesting can be tricky.

For me a big issue is that the more interesting a project is the more programming features and functionality it usually requires. For that reason I am moving up where in the curriculum I teach reading files this year. Projects become a lot more interesting when larger amounts of data are being processed. It also means i can get some good test data in front of students.

Determining  the level of scaffolding is another trick. The projects I am looking at show a wide range of scaffolding. And that makes sense of course. In the early projects you want some solid scaffolding to avoid too much frustration. Over time as students get more comfortable with problem solving and how things work you want less. I usually have students work on a concept with me (following my demo step by step) as one way of scaffolding.

Hinting is also an issue once a project has been assigned. I’ve written about that before - Would You Like a Hint? The more interesting the project the more willing students seem to be to figure things out on their own though.

Sources for projects are an other interesting thing to think about. Some of my favorite projects have come from student suggestions. Others from textbooks. Still more for other teachers.

BTW are you sharing cool projects with others? Blogs or conference talks are both great ways to do that. Do you know about Nifty Assignments from years of SIGCSE conferences? Many of them are for more advanced students but some will work with students still at the beginner ranks.

Other sources are informal conversations like at CSTA Chapter Meetings or other events. I’ve been on a number of advisory boards for career technical programs. Those teachers have shared lots of great project ideas over the years. The Advanced Placement readings are still another great venue for sharing project ideas.  Always look for chances to learn from other teachers.

So where do you get project ideas? What makes for a good project for you?

Monday, September 18, 2017

Congressional App Challenge Launches Today

Something that looks interesting at least in Congressional Districts where there is a sponsor. Visit the web site to check it out.


Congressional App Challenge Launches Today!

It begins today! The third annual Congressional App Challenge (CAC) has now launched and will run through November 1, 2017. The CAC is a congressional initiative to encourage student engagement in coding and computer science through local app challenges hosted by the Members of Congress. This year, there are over 165 Members of Congress signed up to participate!

The CAC aims to bridge the gender, geographic, and racial gaps in tech. In its first two years, the program yielded 239 challenges across 33 states. Over 1,150 apps were created by nearly 4,000 students, and participant demographics surpassed all industry diversity metrics, with young women representing 30% of all competitors. This year, the Congressional App Challenge will strive to build upon those numbers.

During the next 14 weeks, thousands of students in participating Congressional districts will create and submit their own original applications, that will be evaluated by panels of local judges.The Members of Congress will announce the winners during Computer Science Education Week in early December. Winners will be honored by their Member of Congress. More prizes will be announced throughout the Challenge.

The CAC was created because Congress recognizes how essential computer science and STEM skills are for economic growth and innovation, and that the U.S. is currently experiencing a dearth of adequately trained technical talent. By some estimates there are nearly a quarter of a million unfilled programming jobs in the US, right now. The CAC is a congressional effort to maintain American competitiveness, by proactively inspiring our youth and encouraging them to pursue these crucial skills.

The Challenge owes gratitude to Representatives Bob Goodlatte and Anna G. Eshoo, co-chairs of the Congressional Internet Caucus, who requested and supported the creation of the CAC. Challenge execution is supported by the efforts of our Advisory Board, which includes the American Indian Science and Engineering Society, the Computer Science Teachers Association, Girls Who Code, Hispanic Heritage Foundation, Capital One, and Cisco, as well as a broad coalition of CS-focused partners.

For more information about the Congressional App Challenge, please visit If you are interested getting involved or in supporting the Congressional App Challenge, please contact our Director, Rachel Decoste, at

Friday, September 15, 2017

Illustrating the Difference Between Bandwidth and Latency

Earlier this week my AP CS Principles classes were discussing the difference between latency and bandwidth. My curriculum resource (I’m using the curriculum from describes these two words like this:

  • Bandwidth - Transmission capacity measure by bit rate
  • Latency - Time it takes for a bit to travel from its sender to its receiver.

These are useful descriptions but how to make that real for students? Today I found two great examples of high bandwidth but low latency.

BandwidthOne was in the form of this graphic on the right. The latency is slow. It takes a lot of time for the pigeon to fly to the other site. So moving one bit or even byte at a time would not be a good idea. On the other hand since all the data gets to the destination at the same time the bandwidth is high. The story is a bit dated but still interesting.

I shared that graphic on Facebook and a friend of mine who works for Amazon Web Services pointed me to a more current story.

Amazon’s Snowmobile is Actually a Truck Hauling a Large Hard Drive

From the article:

“Using multiple semis to shuttle data around might seem like overkill. But for such massive amounts of data, hitting the open road is still the most efficient way to go. Even with a one gigabit per-second connection such as Google Fiber, uploading 100 petabytes over the internet would take more than 28 years. At an average speed of 65 mph, on the other hand, you could drive a Snowmobile from San Francisco to New York City in about 45 hours—about 4,970 gigabits per second.”

Now that is a story that speaks to moving really large amounts of data. And again, showing the difference between latency and bandwidth.

Thursday, September 14, 2017

Be a Router and Share Messages

The curriculum I am using for Advanced Placement Computer Science Principles is the excellent Code.Org curriculum. I really like the Internet Simulator that is involved in many of the early lesson in the Internet unit. It really lets students try a lot of things. I like to add a bit of my own flavor though and involving physical objects and activities is part of that. So today I had my students send messages through routers where students played that part of routers.

Here’s what I did. I semi-randomly assigned each student a two part address. The first number indicated a router and the second a student “connected” to that router. I randomly assigned a students to be routers. I selected the number of routers based on the number of students in the section. I think you need at least two routers but more would be better if the class size allows it.

imageI prepared a bunch of “message packets.” and handed a couple of them to each student who was not a router.

A list of students with their “IP addresses” was displayed on the board. I could have printed them out if I liked wasting paper but I don’t.

Students were to write out a question in the message field as well as the send to and return addresses (the codes I had created) and send the message. They were to give the message to the “router” they were connected to. The router was then responsible for either handing the message directly to the intended recipient if they were “on the same router” or pass it along to the appropriate router if not. That router was responsible for passing it to the recipient connected to them.

After a bunch of messages and replies were sent we discussed what happened. Some good things happened. Well bad things depending on how you want to look at them. I love learning moments so they were good from my point of view.

One router was overwhelmed with messages and took a while to get them all to the right place. Great! Bottleneck simulated!

Some addresses were not well written and could not be delivered. I may send some messages like that myself next time to make sure that happens. Dropped message and what that means for the learning experience!

I did this with minimal discussion first so that students didn’t know exactly what to expect. I’m hopeful this made the later discussion and the exercise with the Internet Simulator.

What do you think? Look reasonable to you? What do you do to help students understand routers and what they do?

Wednesday, September 13, 2017

NCWIT Aspirations in Computing 2018

Several of my students have applied for this award and all found it quite worthwhile.There are many benefits for students in high school and college. It’s really helpful for girls and young women to be recognized for their interests and accomplishments in technology.

Calling all 9th-12th grade women and educators, as well as college women in tech! 2018 Aspirations in Computing award applications are open:

  • Earn scholarships for college
  • Find computing internships
  • Connect with a large network of other technical young women
  • Discover resources to increase your knowledge of technology

See also Top 10 Reasons to Apply for the NCWIT Award for Aspirations in Computing

Tuesday, September 12, 2017

National Briefing Call on K-12 Computer Science Education

I'm told this will be very well worth the time. I may even join with my Advanced Placement Computer Science Principles students.

We are pleased to invite you to join an important national briefing call on K-12 computer science education and the Computer Science for All (CSforAll) movement Monday, September 18 at 2:00 pm ET featuring remarks from a very special guest (please join 5 minutes early as our featured guest will be speaking at the top of the call).

We will share important updates and progress towards Computer Science for All from key national leaders; mark the one-year anniversary of the launch of the CSforAll Consortium at the White House Summit on Computer Science for All; and provide a sneak peek into the agenda and speakers at the upcoming CSforAll Summit, October 16-17 at Washington University in St. Louis.

Don’t miss this important conversation on K-12 computer science in the US and the role we all can play in achieving CSforAll. To join, add this call to your calendar using the links below.

Feel free to share this opportunity with your networks. Students and educators are especially welcome.

You can also follow along via social media using #csforall.

September 18 @ 2pm ET

Conference Line: (888) 946-4716  //  Code: 3267553#


iCalendar  •  Google Calendar  •  Outlook  •  Outlook Online  •  Yahoo! Calendar

Yet Another Example of the Importance of Good Names

A little Tuesday humor. I think I may use this to help students understand the importance of good variable names and other identifiers.


Monday, September 11, 2017

Who Wants to be the DNS Server?

We’re studying how the Internet works in my AP CS Principles course. I wanted a little exercise to help students understand how DNS servers work and maybe through in a bit about address caching.  So I came up with a little role play to try out. I think it worked ok. I’ll try it again tomorrow with some more instructions.

Here’s what I did. I started by taking screen shots of a half dozen or so web sites. The usual suspects: Google, Apple, Microsoft, Twitter, CNN, MSNBC, and the school’s home page. I printed them out and assigned students to “serve” each site. An other students was assigned to be the DNS server. I handed him a form and asked him to record which student was “serving” each web site. So the address in this case was a student name.

Another student was assigned as the user and still another was assigned to act as their computer. The computer had their own sheet for looking up addresses (student names) for each web site. As we started it was empty. This would become the address cache for the computer.

The user asked the computer for a web page. If the address was known to the computer they asked the appropriate student to display the web page. If they address was not known the computer asked the DNS server for an address.  The DNS server would return the address which the computer would record in cache and then ask the server to display the page.  We ran through several request to see how this worked.

I did this before any detailed explanation of the process. I followed the role play with a video from called THE INTERNET: IP Addresses and DNS that can be found on their collection of videos. Not surprisingly, this video went into some good detail on the very things we observed in the role play. I’m hoping that the combination of the role play, the video, and in-class discussion will help with both understanding and retention of the information.

What do you think? How would you add or change this? Do you do something similar?

Tuesday, September 05, 2017

Curriculum is Hard

Generally speaking I am a roll my own sort of teacher when it comes to curriculum. This year that is a bit overwhelming because I am teaching four different courses. Now two of them are easy. I have been teaching our freshmen Explorations in CS course for about four years now. It’s well set up. I’m not the only teacher teaching it and between us it’s all laid out pretty well. Sure we tweak it a bit every time we teach it but mostly it is good to go. Honors Programming (mostly sophomores and juniors) is also pretty solid. The other two courses not so much.

My Mobile Application Programming course is a total redo this year. I was not happy with how it went last year so I have switched to App Inventor. I’m putting things together from resources that are available from others (see So a bit of mix and match with some ideas of my own. Still largely my own design in my eyes. It’s a one semester course and I know what I want to cover pretty well.

Advanced Placement Computer Science Principles is a whole different matter though. For one thing it is a full year. All my other courses are a single semester. It’s also more high stakes. My students will be taking the AP exam and like it or not we (them and me) will be judged a bit more seriously on the results. It’s not like the other courses in other ways as well. There are performance tasks to accomplish for example. In a sense they are just big project and I use projects all the time. But in an other they are different in that I am not designing my own rubric. I need students prepared properly so they can be graded by others. I want to get this right for my students.

imageSo for AP CS P I am using a pre-written curriculum. There are several great ones out there. There is The Beauty and Joy of Computing out of US Berkley for example. It looks really good but I didn’t want to use Snap!. Not that Snap! isn’t pretty cool but I wanted something different from what I was using in Mobile App Programming and AppInventor and Snap! are very similar.

imageMobile CSP also looks great but it uses AppInventor which, again, I wanted to avoid since I was already using it in another class. 

Yes I know that some people think using the same language over and over again is a great thing. Even a preferred thing. Miles Berry makes the case for One Language at a Time in a recent article. I disagree and I may elaborate on that in a future post.

So what did I go with? I went with the AP CS Principles curriculum from For programming it uses their app lab which uses both block and JavaScript. We’ll be moving into the JavaScript as much as possible when we get to the programming. JavaScript is a growing language and I see learning that as a good thing for my university bound students. They all know some Visual Basic and C# and a good number are also fairly fluent in Java.

But AP CS P is more than just programming which is one reason I am enjoying teaching it. has a lot of good resources for teaching that. Videos (short and interesting) and collaborative exercises. Right now students are using an internet simulator to create and use their own communications protocols. It seems to be going well so far. We’re only two weeks in of course but so far I think this is going to work well for me.

I’m still going to tweak things a bit as we go along. And next year, once I’m comfortable with the course and the curriculum I am sure I will tweak it more. Overall though I’m glad I am taking this route. Your mileage may vary of course.

What are you using and why? I’m especially interested in opinions on AP CS Principles curriculum.

Monday, September 04, 2017

SAVE THE DATE! CSTA2018 Omaha, Nebraska

Dates for the next CSTA Annual conference have been announced. Put it in your calendar and start making plans now. Get your request for professional development funds into your school/district now and beat the rush. More information about the CSTA Annual Conference at the CSTA web site.

CSTA will be bringing its world class professional development and educator community together again in July of 2018. We are excited to offer teachers of Computer Science the opportunity to build skills, meet other teachers, and get inspired!

We are happy to announce that the  National Integrated Cyber Education Research Center (NICERC) will again be joining us for the conference and offering their Education Discovery Forum immediately following the CSTA conference on July 10 & 11. To find out more about EDF: Omaha click here.

Want to learn more about what Omaha has to offer? Click here.

This family-friendly location is easy to navigate and offers our attendees world-class attractions, dining, and of course, professional development for teachers of computer science. Want to know more? Click here for a fact sheet on Omaha.

Want to know more about the Silicon Prairie? Click here.

Sunday, September 03, 2017

Executive Director for Computer Science Teachers Association Search

The CSTA  is seeking an Executive Director. A link to the full position profile with the official details is here. That’s the official list of requirements. I have a bit of a wish list myself. It’s an ideal and I don’t know that anyone fits it all but since I have absolutely nothing to do with who is selected I’m going to give some opinions anyway. It’s my blog. Smile

I’d like someone who is already known in the computer science education community. Someone with some experience either teaching or managing computer science related outreach who people with say “oh yeah, good choice” rather than asking “Who?”

The executive director has to do a lot of fundraising (something I am not that good at BTW – it’s hard) so previous experience dealing with funding organizations like NSF, various foundations, and large tech companies would be very helpful. Closely related to this is the ability to make the case for CSTA. By that I mean able to communicate the unique nature of CSTA (by, for, and about the people who teach), explain its contributions to expanding CS (research, advocating for over 10 years – since before CS Ed became “a thing”), and all the various ways CSTA is helping CS education (conference, chapters, standards development, and more).

Clearly we need a strong and effective communicator. Our EDs have to present to a lot of different audiences both as a speaker and a writer.

CSTA is getting bigger all the time in membership and that growth has to be managed well. It also means that we have to have a staff that works together and is well supported by the person at the top. I think that is laid out in the official requirements fairly well.

CSTA is a special organization to me and I think to many members. We need a very special person in the Executive Director role. Here’s hoping we find someone great.