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 http://appinventor.mit.edu/explore/) 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 code.org. 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. Code.org 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.

Thursday, August 31, 2017

Gamification and Teaching Computer Science

Gamification is a huge buzz word in education generally today. There are proponents and opponents of course. And both sides have good arguments behind their opinions. I’ve had mixed feelings about the whole topic for a while. This is largely because it is hard to re3ally know what it means and how it might work for me and my teaching style. A couple of recent events have me looking at it some more.

I had one group of students brainstorm using how to get students more involved and attentive in class. They seemed to really like Kahoot!.image I was hoping for something new and out of the box and I know a number of teachers who use Kahoot! (and some similar tools as well.) So I thought I would take a look at it again. It looks interesting. I am not sure I have enough time to set up sessions right now but apparently there is a huge library of questions from other teachers. I plan look through that when I have time. (Christmas break is coming.)

Time is a problem for some of these gamification tools.

imageThe other event was sending my students to a somewhat addictive Binary number practice game from @codeorg. My students wanted to play it for a while. I could never have gotten to convert Binary to decimal or decimal to Binary as many times as they did playing this game using a worksheet.

On one hand I can see where that looks like an old fashioned “drill and kill” sort of exercise. On the other the students had fun, got some great practice doing conversions, and they seem (how will I check? )to be a lot more comfortable with the idea of doing these conversions. So there is something there.

imageAn other tool I have used in the past that is along the lines of gamification is Code Hunt. It has coding puzzles available in C# and Java. A teacher can create their own or use the ones that are already there. I’ve had mixed success with this. Some students love it and some students struggle. Code Hunt involved writing code that works with test data that is generated and displayed with results. Some students are terrible at this and get frustrated. Other students just eat it up!

 Problets by Amruth N. Kumar are a somewhat similar tool. Problems for students to solve. Amruth describes Problets as “problem solving software assistants for learning, reinforcement and assessment of programming concepts.” All of the problets are available in C++, Java, and C#. Some are also available in Visual Basic. I may try problets this year. We’ll see. There is that whole time issue again.

I want learning to be fun. I don’t want to have students playing games just to be “the cool teacher.” Things that look like games have to have real value and promote actual learning and/or indicate that learning has taken place.If a game does that I’m ok with it. But I need to make sure it has value first.

Tuesday, August 15, 2017

Ideas for Computer Science Teachers from CS Teachers

For me one of the big benefits of social media is getting and sharing ideas from other computer science teachers. Blogs, Twitter, and Facebook are regular sources of good information. I’ve got several to share today.

It starts with Kimberly Laron’s Facebook post on a teaching aid for number systems.image I’m always looking for new aids for teaching binary and the like. Her Google Sheets tool is pretty cool.  I made my own version for Excel because I’m an Excel sort of guy.

Then there are the cool images that Jill Westerlund shares on her blog at Say it better with Boolean && binary. She has a bunch of them and both shows images of how she is using them and direct links so you can download copies of them for your own use. Check them out. I’ll be using several of them in my own lab.

Another favorite thing is new projects or new takes on older projects. Doug Peterson who had a recent birthday wrote about the Birthday Project. Maybe you’ve used on or maybe not. In either case Doug’s take on it is a great read. Plus he links to the Wikipedia article on the Birthday Project for more information.  But there are more links than just that one. Visit Doug’s post for more.

Thursday, August 10, 2017

#BUILTBYGIRLS Challenge - for teen girls with startup ideas

This looks interesting. Know a girl with entrepreneurship dreams and ideas?


#BUILTBYGIRLS is looking for the next wave of startup founders and change-makers. Are you building a mobile app, hardware device, robotics project, game, or something no one has invented yet? Does it have the potential to succeed in the real world?

Wow us with your product concept, designs and working prototype for the chance to win $10,000. Finalists will get the trip of a lifetime to San Francisco to pitch in front of expert girl judges, tech moguls and industry experts.

Are you ready to build the next big startup?

https://www.builtbygirls.com/programs/challenge

Eligibility

Girls 13-18 years old who can participate in SF from 9/14-20, 2017. Open to teams of up to 4.

Tuesday, August 08, 2017

How To Retain Computer Science Teachers

One of the big topics around computer science education is the shortage of teachers with enough CS knowledge to properly teach the subject. One fear is that anyone well enough versed in computer science to teach it is likely to leave teaching for industry. Mike Zamansky addressed this a bit recently with his post On Retaining Teachers. And earlier in Will we lose CS teachers to industry? This sort of discussion comes up a lot. The typical "answer" advanced is higher pay. Sounds great but not really practical.

Union rules in most public school systems prohibit paying premiums for different subject teachers. Where rules don't often custom or a systemic view of fairness (all teachers do the same job regardless of subject) prevent different salaries. If that is out, how does a school or school system retain teachers.

Mike Zamansky in his posts suggests non financial benefits for teachers. New electives for example. Letting teachers teach courses they enjoy is a good incentive. In the case of computer science teachers I can think of other incentives. Of course everyone is different and is motivated in different ways. So what seems good to me may not make everyone happy enough to stay. But I think they'll appeal to many.

Really things boil down to treating computer science teachers with trust and respect as well as giving them the tools to do their job better. For example, do computer science teachers have administrative privileges on the computers in their lab? If not, why not? One would expect that a well prepared CS teacher should be able to safely handle that responsibility. In fact it is often necessary for them to experiment with new tools and teaching techniques. Keeping administrative access from them shows a lack of respect and trust. That will make anyone feel less valued.

How about keeping teaching labs up to date? Yes it costs money but if you want students to be current then the equipment they learn on should be current. Plus making CS teachers find work around and hacks to deal with inadequate computers leads to frustration and discouragement. And by the way, the CS teachers should be consulted on decisions about computers and software for their labs. Believe it or not stories of teachers returning from summer break to find that PCs have been replaced by Apple Macs or Google Chromebooks are far to common. This is incredibly disruptive and makes for serious stress and aggravation for teachers.

Professional development is another area where CS teachers can use some support. While most systems have some money for professional development but teachers are not always encouraged to apply for it. With CS constantly moving regular PD is really necessary. Unfortunately it is not always close or inexpensive. Conferences like CSTA are wonderful but often districts are unwilling to pay the full cost (transportation and housing are the big costs.) These events are great for teachers but not all teacher can afford to pick up the slack on their own. Not on a teacher salary. Schools need to invest in CS teachers.

Related to both professional development and new electives (there are huge opportunities for CS electives that appeal to teachers and students alike) is some funding for new equipment for teaching. Not just the previously mentioned lab computers but things like Micro:bits, robots, quadcopters, and other electronics that can make CS more interesting and even more cross curricula. Different teachers have different interests and encouraging them to follow those interests and bring them to their teaching can be very motivating. And help with retention.

So that's my bit of brainstorming on the subject. What do you think? If you teach CS what sorts of thing motivate you to stay teaching and stay are your present school? What sorts of things make you want to leave? Maybe we can help our administrators out with some ideas.





Monday, August 07, 2017

Twitter Chats for Computer Science Teachers

With the isolation that many computer science teachers feel social media can be an important part of both building community and professional development. Recently I have focused on blogs (Five Must Read Blogs for Computer Science Teachers ) and an online forum ( An Online Forum for Computer Science Educators ). Today I'd like to list a few useful Twitter chats.

  • #csk8 5pm-6pm Pacific Time every other Wednesday during the school year. This is a must attend chat for CS teachers in pre-secondary education. I get a lot out of it myself FWIW.
  • #ethicalCS 5pm PT/8pm ET Wednesdays during the summer. I'm hoping it continues as discussions so have have been fascinating.
  • #caschat 8-9 pm London time, during term time.Hosted by Computing At School in the United Kingdom. Lots of value for those of us in other parts of the world as well.
  • #PiChatUSA Thursdays 8:30-9pm Eastern Time, if you use Raspberry Pi. in class you'll want to join this one
  • #InfyEdChat 5 PM PT / 8 PM ET Mondays. Each chat is hosted by a different person and very well run. I hosted one myself back in July 2017 Always interesting chats.
  • #TynkerChat Mondays at 4pm PT / 7pm PT for a 1/2 hour. very useful for people who use Tynker in their classroom.

The Exploring Computer Science people are running their first Twitter chat tonight at 5PM Pacific time. Follow at #ECSeduECS Chat

Personally I really like Twitter chats. I've really found a bunch of people to learn from through these events. And of course learned a lot from them.

BTW I recommend checking those hash tags from time to time when there are not formal chats going on. People often use them to signel information of value to others who participate in these chats regularly.

Tuesday, August 01, 2017

Cybersecurity–This Summer's Computer Science Education Buzzword

Cybersecurity seems to be all the rage these days. It was a big topic of conversation at this summer's CSTA conference, I've had a number of parents ask me if we teach it at my school, and it is been big on the CS ed social media scene. The NSA even came to talk to teachers at the CSTA conference! It's a big deal! But what does it really mean? Well to quote the great philosopher:

"When I use a word," Humpty Dumpty said, in rather a scornful tone, "it means just what I choose it to mean—neither more nor less."

Or perhaps the story of the blind men studying the elephant is even better? In short, every seems to have a different idea or no idea at all of what cybersecurity means or how it should be taught in schools.

I've been asking around for people's thoughts on this lately. One of the people I asked is a former student who does security work at a local university. Some of his thoughts are below with some edits of my own.

There are two 'tracks' in education that I've seen as a result of this. 

1. Security IT people.  These people think at a business-process level at best, and simply IT service provisioning at worse.  They clean viruses, install operating systems, evaluate products, establish procedures, write policy, inspect network traffic etc.  Security for these people is either strategic or tactical.  They are concerned about 'doing the right thing' as far as security goes, even though they are usually not a technical nerds as one might generally like.

When I've seen people do this at a college level, they do blue-team/red-team hacking and defending either as a class or in clubs.  I personally _hate_ this approach, but I get why people do it. 

A. its fun,

B. its sexy

C. it can be competitive and cooperative and

D. it give something much closer to real world experience.

its also E. Not what _most_ people spend any serious time doing.  That pen-testing stuff gets outsourced to whatever place can do it the cheapest.  Its usually done as part of audits and other really-boring activities and the burnout rate for new people in those professions is 2-5 years.  In my experience, students that do it need lots of oversight so they don't go hacking things they shouldn't and sometimes people need to make a 'safe' lab environment so they don't affect anything else.  That can translate to a lot of time and resources. 

A better approach would be to do a IT modeling course of some reasonable kind.  At one university, there was an course on networking at the grad level, and while they didn't do much actual networking, they would work in teams to design IT technology layouts.  The students learned a lot about modern IT systems, servers, desktops, networking, software management, firewall, IDS/IPS tools, etc.  The Big Project was, given a somewhat real-world-ish scenario (a courthouse, a college, a city, etc) design an IT system from the ground up.  There was a presentation to a small panel and the winners won a prize. 

2. The other track, secure programming.

This is an extremely useful skill too, but its absolutely not sexy.  These people design good algorithms, write solid encryption, read and debug code, do proper QA and acceptance testing, etc.  The lower-level code, the better.  I'm not sure how useful this is though to the average programmer.... never-mind a high school student.... given the fact that if you are using reasonable libraries and sticking to a high-level language, you are usually fine for most development.

A similar approach that might have less direct programming, would be to look at a book like 'Threat Modeling' by Adam Shostack.  He's a Microsoft guy and has done a lot of work thinking about applications of a threat model to different situations.  You would have to do a little 'translation' of the book to high-school programming skills, but in it he talks about software design and thinking through potential security use-cases using a standard model.  Being able to read and debug code someone else wrote, thinking about things in psuedo-code before writing something ('Ready', 'Fire', 'Aim'? ;-), and understanding Information Security goals of Security, Integrity, and Availability without getting all theoretical about it. 

The first category, Security IT, seems like the natural thing for high schools. It fits in very well with network management type courses. And there are all those CTF (Capture the Flag) contests that many students seem to like. Plus is plays into a desire that seems to be prevalent to learn hacking.  It's not for everyone though and for some it doesn't feel like "real computer science." A term that is hard to define for many as well.

The second category, secure programming, is more interesting to me personally. I spent some time doing operating system development where among other things I was responsible for maintaining the code that allowed users to log on and off. Plus we made major security changes to the OS while I was part of the team so threat analysis and design for security was a big part of what we were doing.

It's not so glamorous as "hacking into computers" or even preventing malicious users fro breaking into your network for many students though. But it is oh so important.

I'm still quite a way from deciding what a cybersecurity course might look like at my high school. I can easily think of a couple of ways it could work at the higher education level but fitting it into the high school curriculum seems harder.

What I have decided is that I need to include some discussion of various cybersecurity issues in several existing courses. We talk about some security issues already, good passwords and their use for example. We could do more though. And in my programming courses we could talk about secure programming more. Most of all we could be including discussion of various cybersecurity issues in Advanced Placement Computer Science Principles. For the time being that is my plan. But I'm going to keep working on the idea of a dedicated computer security course. Let me know if you have suggestions or know of good existing cybersecurity courses at the secondary school level.

Monday, July 31, 2017

An Online Forum for Computer Science Educators

Stack Exchange is one of  a number of online forums being used by the computer science community to ask and answer questions. While most of these are targeted at the professional or would be professional developer there is a new forum open for Computer Science Educators.

The Stack Exchange for Computer Science Educators is now open in beta. What that means is that is is currently small but growing. Interestingly enough there are more people answering questions than asking them. That means it is a great opportunity for teachers, especially early career teachers,  to get their questions answered.

We all know that most computer science educators are isolated – often the only CS teacher in their building. Often one of only a few in  a local area. Forums like this one are a good chance to build community and provide mutual support.

An additional advantage of forums like this one is that it is easily search able. You may find that others have asked and answered your question already. A great time saver. And of course this being a community of CS educators there are often multiple answers looking at questions from different angles.

Check it out at https://cseducators.stackexchange.com/ and read through it for a while. It can be very educational.

Friday, July 28, 2017

Where Will We Get The Teachers/

Computer Science Teachers Needed. But Who Will Pay to Train Them? It's always someone else's job. Or someone else's money. Who will step up and say "I'll do it!." A few companies have stood up. Google, Microsoft, and Infosys Foundation have all spent a lot of money teaching teachers. Take CS PD Week which was sponsored by the Infosys Foundation USA, with support from the National Science Foundation, the National Center for Women & IT and the Computer Science Teachers Association. The event was hosted by Colorado School of Mines. A great event that just finished its second year.

But that is all only a start. Long term we need more funders to step up. It's not going to happen on philanthropy alone.

Thursday, July 27, 2017

Do We Want Computer Science to be Required?

Is making computer science a required course for everyone really a good idea? Doug Bergman made some interesting comments on Facebook today:

"A required course means people HAVE to take it, which on the surface is what we say we want in CS, but when you dive deeper forces us to ask different questions. I do not want to be like math where everyone takes it but few actually like it."

We're really a long way from that nationally of course. Mostly people are focusing on CS being at least available for everyone. The school I teach at does require a year (well two semesters) of computer science for graduation. So we're a bit ahead of the curve. We work hard to have a course that builds enthusiasm for the subject rather than killing it. And we offer several opportunities for a second semester after our first course that almost everyone takes. Other subjects do that as well I believe. We still often take the fun out of some courses. We need to avoid that everywhere but for CS which is still gaining acceptance this may even be more critical.

IF we are to have CS as a required course we really did to be thoughtful about how those courses are taught. We have to make them relevant understanding that relevant means different things to students of different ages and backgrounds. One size does not fit all. We have to have classes taught by teachers who are enthusiastic about the course. The last things we need are teachers who don't want to be teaching computer science and who don't enjoy the material themselves. They'll teach students to also hate the subject in spite of their best intentions. In short, if we don't teach required courses in ways that encourage all (or at least most) students we risk losing traction in offering CS to everyone. We don't have hundreds of years of being a core subject to fall back on.

So perhaps for now access for all students is enough. On the other hand if, as some of the data suggest, CS is offered a lot more often to students of privilege (for various definitions of that sometimes incendiary word) maybe we do need to push a few (many?) for people into the field to get the diversity that we know the field needs? Over the years, before we required a full year of CS, many of my students took advanced CS courses because their parents pushed them into it. Parents who are engineers, scientists, executives, and similar see the need for CS education and want it for their children. Do barbers, mechanics, sales clerks, and other jobs that traditionally haven't required advanced education see the need for their children? Obviously some do and they push and support and motivate their children just as hard, if not more so, than parents with a lot of education do. But are they there for all students? If a parent, like my grandparents a generation or two ago, think that high school is plenty of education are they going to push their child into CS? Can we bet their future on it? It's complicated.

Ultimately I think we will get to requiring CS for all students. We'd better do it right though.

Wednesday, July 26, 2017

Time to Include More Hardware Devices in Teaching Computer Science?

Lately I have been thinking hard about including small programmable devices in my programming courses. Talking about his on Twitter brought me both encouragement and some discouragement. The discouragement challenged me to think harder about why I wanted to use these devices. Pat of that challenge was a link to a paper by Monica M. McGill called "Learning to Program with Personal Robots: Influences on Student Motivation" IF you don't have access to the ACM Library and really want to read it let me know.

That research work focused on the use of robots as a motivational tool. The results were not that encouraging. A lot of the complexities of using robots, fickle hardware, batteries running out, software that is not quite there yet, and other logistical items probably apply to small programmable devices of other sorts. The robots didn't seem to be as motivating as the authors, and many supporters, would have hoped. Students didn't see the robots as relevant to their lives and interests. SO are the robots worth it? It's a fair question. Are my little devices going to be different? If so, different in what way? So many questions.

My thinking is that I need to look at more things to determine how or if I should proceed. Addressing some of the logistical issues is of course important. The "why" of going through that is the bigger question. Here I look to relevancy. This is were I see some potential differences from robots. The challenge becomes more than creating projects that are meaningful and motivating for the students. I have to have and communicate a reason why students should be learning g about these devices. Something beyond the project of the hour.

We're really moving, some would say have moved already, into an era with we are seeing smart devices everywhere. Many of these devices are tied in with "the cloud." Are we preparing students to deal with that reality with software only computer science education? I'm concerned that we are not.

I asked the questions "Wondering if it is time to more software people to learn more hardware? Do we need to be teaching more of this stuff as well?"and received  a lot of positive responses from both educators and industry friends. The support did not come without more questions (I have smart friends) such as where in the K-16 CS curriculum should it come and what sort of things should be included? We are really still figuring out this whole CS for All thing. (BTW Mark Guzdial's CS Curricula, Standards, and Frameworks will Need to Change for more on this.) In a way, this needing to figure things out makes me want to try more. Someone has to do it. Trying things on a small scale seems to me to be worth the effort. I want students to think about hardware and how it is part of a complete system. I want them to see that they can combine hardware and software in new ways to create new things.

Will this be more motivating? I don't know. Will it help them learn programming faster or better? Again I don't know and the research suggests not in a big way. On the other hand it seems likely to teach themselves some things they would not learn at all without the involvement of hardware.

I haven't yet seen much research out of the UK on the impact of the BBC Micro:bit. They didn't really have a full year to work with it though so it is early. People using it still seem enthusiastic  about it. People are starting to develop more software and curriculum around the Micro:bit, Arduino , Raspberry Pi, AdaFruit Circuit Playground and other similar devices so I don't feel alone. Well not completely at least. And I am going into it with modest expectations.

I'd like to hear from others who are asking these questions as well. Do you use these small devices? If so, why? If not, why not?

Sunday, July 23, 2017

Is Computer Science Education Facing a Bursting Bubble?

The other day Audrey Watters, one of my favorite contrarians, posted  Why Are Coding Bootcamps Going Out of Business? which focused on the failure of some coding bootcamps and the consolidation of others. Today I read A Tech Bubble Killed Computer Science Once, Can It Do So Again? also posted in the last few days. Articles like these make on think about the future of CS education. Well I think about that a lot anyway but mostly I travel in upbeat circles. CS education is seeing growing interest and is being taught to more students. All good right?

Both of these articles focus on CS education as a way to get jobs in software development. While that is probably a good reason to study CS it is not the only one. Of course we have seen lowering demand for CS professionals decrease interest in studying CS drop in the past. SO it is something we do have to look at and think about.

Part of the problem here is getting a clear view of the demand for CS professionals. Many companies say there is a shortage of skilled developers. The contrarian view is that there is a shortage of people willing to do the job for the money being offered. Those people see the calls for more H1B visas as a way to keep salaries low more than as a way to fill a real shortage. I suspect the way the Trump administration looks at foreign workers (see the H2B visa shortage this summer) may give us a chance to find out. On the other hand some people predict that tech companies are headed for a bubble burst so there is that as well.

If tech companies do falter that may indeed cause a drop in interest in CS education. I’m not quite ready to predict an eminent bubble burst there though. It really feels to me like a lot of things are moving forward very strongly and very widely across industries for that to happen soon. We’ll have to keep an eye on what this means for jobs though. While it looks like starting salaries for recent university graduates are up slightly (Salaries for 2017 College Grads Hit All-Time High) tech like many other industries has this tendency to hire young and squeeze out older more expensive workers. I hear lots of stories of how hard it is for experienced professionals in their 40s and 50, let alone 60s, to get jobs in tech.

Personally I still maintain that learning CS is important for people in all lines of work and that becoming a professional software developer is not the only or even the best reason to teach CS to everyone. Even if there is a drop in people majoring in the field if there is an increase of people learning some CS we’ll be better off. The hard part is convincing all these other people that the reasons we teach all HS students Physics and Biology are just as valid, if not more so, for computer science. We need to go beyond the vocational idea of CS education. If we can do that we can continue to see CS education grow to the benefit of us all.

Friday, July 21, 2017

Five Must Read Blogs for Computer Science Teachers

I maintain a computer science education blog roll with as many good blogs for computer science teachers as I can find. It's a good like for the most part. Some of the blogs listed are seldom updated though. And some are really more general purpose education or not as focused on CS education. (Doug Peterson's blog is an example but I never miss it.) So I decided to write about the five best in my humble opinion. Just to get people started. Other than the first, these are in no particular order. I always read these blogs.

If you only read on blog it should probably be Mark Guzdial's Computing Education Blog  Mark is probably doing more research in how to teach computer science right than anyone else I know.  He talks about the work they are doing at Georgia Tech both in terms of teaching new and different courses there as well as the Georgia Computes! program that is helping to develop more CS education at the HS level in Georgia. I wish I wrote half as well as Mark. Whether if be his commentary on the various articles he finds or information about his own work or discussion of  things his graduate students are doing what you will find here are well thought out, well written and informative posts. His are the first posts I read most days.

For some often contrary opinions but always interesting reads try Mike Zamansky Mike used to run the computer science program at Stuyvesant High School in New York City (a top public magnet school).  These days he is working on the honors program at Hunter College. He has strong opinions and a long background in teaching CS to back them up. If you want someone who doesn't just take ideas at face value Mike is the man to read.

The small school perspective is a highlight on posts by Garth's CS Teacher Blog  Garth Flint is a teacher at a private Catholic school in western Montana. Garth always gives me things to think about. He writes about curriculum (He's always trying new things), teaching, and even some system management. In many small schools the CS teacher is also tech support. I love his writing style as well.

Doug Bergman is the award winning head of Computer Science at Porter-Gaud School in Charleston, SC. Doug is very innovative and a huge proponent of project based learning. He is also great at getting grant money to buy new hardware for teaching CS. Robots, Kinects, and even HoloLens devices show up in his lab (and blog posts) as he has students work on very interesting projects. Doug gets excited and it shows.

I recommend my blog as well. I think to think I write with a teacher voice but my background in industry over the years gives me a different perspective. Plus I link to good stuff from the (possibly too many)  blogs I follow as well other things I find on social media. If you don't care about my ideas you may still find value in the stuff I share. Sharing good ideas from others is my passion.

Thursday, July 20, 2017

Algorithms, Bias, and Beautiful Women

I've been keeping my eyes open for things to discuss with students this fall, especially in Advanced Placement Computer Science Principles. This week bias in algorithms kept crossing my path. It was even a topic for the #EthicalCS Twitter chat this week. It's a real problem if we really want software to meet the needs of everyone. And really to keep people safe.

I've got a couple of good examples to share. One is attempts to scientifically determine what beautiful women look like. Personally I think that is a silly goal as beautiful is in the eye of the beholder but it sells magazines I guess. Take a look at this story. The 10 Most Beautiful Women in the World, According to Science. All of the women are white. Do we really believe that beauty is limited to white women or is there perhaps a bias involved? I would suggest the latter.

While that is sort of trivial in the scheme of things some biases in algorithms have a lot more risk. Take this story A white mask worked better': why algorithms are not colour blind about the discovery that some facial recognition doesn't recognize Black faces. More information at this TED Talk Joy Buolamwini - How I'm Fighting Bias in Algorithms. Imagine the possibilities. Police and other authorities use this sort of software and this suggests the possibilities for miss identification are frightening.

Take a look at this story as well Samsung adds and swiftly removes sexist Bixby descriptor tags Not so much an algorithm bias is a software inclusion of biased opinions. How did they miss that? I wonder how many women were in on that decision?

Biases are pretty much unavoidable. As one professor Tweeted me "Most biases are inherent/unavoidable part of cognition. See books by D. Kahneman, R. Thaler, or D. Arielly." If anything this agues for more diversity on software teams. Different biases may, one hopes, help to balance things out in algorithms and software in general. I think though that as educators it is the job of computer science teachers to discuss this issue with students. They need to be aware of the issue if they are to have any chance to moderate the effects.

Wednesday, July 19, 2017

GP–A General Purpose Block Programming Language

GPLogo260I added GP to my list of block programming languages this morning. Mark Guzdial announced on his blog that it was available in Beta (The General Purpose Blocks Programming Language, GP, is now in beta)

According to the website “GP is a free, general-purpose blocks programming language (similar to MIT's Scratch) that is powerful yet easy to learn. It runs on most platforms, including laptops, Chromebooks, tablets, and web browsers.”

This one looks particularly interesting because the GP stands for General Purpose. What does that mean? I think it means more sorts of apps can be developed with it than the more domain specific block languages we have seen so much of.

Since I am not a fan of web apps, that it is available as an executable for a wide variety of platforms (Windows, Raspberry Pi, Mac, and Linux) I’m happy. Available as a web app as well for you Chromebook people!

The development team includes some pretty impressive people who have experience teaching with it. And they have some teaching resources available already because it has been used for teaching. This one seems really worth a deeper dive.

Monday, July 17, 2017

Teach Me How To Teach

Garth Flint hits it out of the part with It is not about coding

Key issue?

"Although both camps were for teachers neither dealt with any pedagogy on how to teach coding or programming. Both stressed syntax and how to read the curriculum they had designed. It was implied in both camps that although pedagogy was important it was something that would somehow be easier that coding and syntax."

This may be the biggest problem with professional development for computer science teachers - we are taught what to teach but not enough of how to do the teaching.

Saturday, July 15, 2017

CSTA 2017–Some Thoughts

Normally I write several blog posts during a CSTA Annual Conference. Not this year. Why? Too much going on! The sessions I attended were very good and my time not at sessions was never boring. Lots of great conversations connecting with new friends and regular attendees. And the exhibits were worth the time as well.
Let me start with the exhibits. I know that there are people with several different opinions about exhibits at conferences but I love them. This year there were over 40 exhibits and they were all relevant to attendees. What were my highlights? Well there was Rolls Royce showing off virtual reality technology that they use in manufacturing and development. They are a technology company make no mistake about it. They need our students.
WP_20170709_11_15_40_ProMaking things was a big topic in the exhibit hall as well. Several people were showing off things to make/create in CS classes. 3D printing, robots, and programmable gadgets. I think physical computing is a coming thing. Microsoft was showing some really cool projects using the Micro:Bit and AdaFruit Circuit playground. Much of these were also at ISTE BTW. They have a web site called MakeCode.com that lets students program several devices and Minecraft it
There were several exhibits showing robots with Wonder Workshop (makers of Dot anWP_20170709_14_40_28_Prod Dash) having the largest exhibit. There was a session on the legal ramifications of using drones in education as well.
There were very few sessions on using robots and programmable small devices though. Maybe that will change in the future as there seems to be a lot of interest in all of these things especially in K-8 CS education.
Cyber Security was another big topic at CSTA this year. Lots of people are looking into how that fits into the curriculum. Closely related was a session on ethics which has spawned conversations continuing over the summer on Twitter with the #EthicalCS twitter chat (See Ethics and Computer Science Education )
Social media was a big topic with a lot of people tweeting at the conference and a Birds of a Feature that included a short mini Twitter chat. I did tweet a good bit myself. The conference hashtag was #CSTA2017 and you can look for people’s tweets to see what others were interested in.
Conversations for me were wide ranging. Talks about these cool new devices. Chats about the growth of CS for all and what that means. How we teach different things. What different things. I talked to a number of people about AP CS Principles. Most of us agree it can be a really good course that is rigorous and interesting for both students and teachers. So many ways to teach it though!
A few other observations. I didn’t see as much interest or discussion of mobile phone development. Yes, people are using App Inventor more (or so it appears to me) but they are not as focused on phones. I didn’t hear any iPhone talk. That I didn’t hear something doesn’t mean it wasn’t talked about of course but I do hear a lot.
There was more talk about AP CS Principles than AP CS A. Maybe all the APCS A people feel more established in that course but of a lot of us are still working our way though Principles.
Interest in CS is sure growing. That we had 650+ people suggests that alone. And industry is being supportive with something like 150 people getting funding help from Infosys Foundation, Google, and Rolls Royce to attend. That’s all good. It feels like there were more K-8 teachers this year as well. That is a fast growing area in CS education.
All in all I think I picked the Computer Science Education Things I’m Watching in 2017 back in January. Movement on all fronts. We’ll see what happens in September and the new school year but I think the CSTA Conference is still a leading edge professional development experience for CS educators.
Were you at CSTA? There was much to much for any one person to see it all. What were the things that moved or interested you there?

Friday, July 14, 2017

Ethics and Computer Science Education

Are ethics and the effects of computer science a reason to teach CS to everyone? Increasingly we are seeing all sort of impacts on daily life because of computing. Some are unintended but others are intended and often some of these impacts are not good. What is going on? Basically I think two things. One is that people are not going beyond asking if something can be done to should it be done. The other is just plain unethical behavior done for profit. Perhaps education in ethical thinking can help. It is at least something we should try.

Computing and its effects are still relatively new. We’re doing things today with computers that were the stuff of science fiction not very long ago. Smart phones, GPS navigation, self-driving cars (I heard about self driving boats – big ones – at CSTA this week) and much more. Schools are teaching students how to make these things possible but are we teaching enough about how to weigh the consequences? Not always. But we should.

Teaching good behavior on the Internet and in social media is becoming very common. In fact in some places it is required to be taught. That’s great as far as it goes but computing is so much more than that.

The CS 2013 curriculum for undergraduate includes ethics and professional behavior. But what are we doing in K12? Are ethics part of the discussion in K12 standards? It is in the CS K12 Framework. Still it seems to be on the backburner for many teachers. Why? Well full curriculum for starters. There is not much room for it in the APCS A curriculum. There is in the AP CS Principles curriculum and hopefully there will be some good educational discussions in those classes.

Really though it shouldn’t be a separate topic in my opinion. Ethical behavior is something that we should bake into the curriculum in various contexts. We need students to be thinking about ethics from the very start. I argue that students need to learn to think about if something should be done as they learn how to do it. Take big data for example. Data analysis is a powerful and wonderful tool. It can be used to solve all sorts of problems from medical research to how to get around the neighborhood. But it can also be used in negative ways. Can you imagine what the  Nazis could have done with modern databases? Think on that for a while and realize that there are bad actors in governments in the world today.

Computers can be used to make car engines cleaner and more efficient. They can also be used, as we saw with Volkswagen, to cheat on emissions tests. Did the engineers who wrote that cheat code think about the ethical implications? We’ll probably never know but our students should be taught to think about it.

Some may argue that ethics belongs in a separate course or that CS teachers should leave that teaching to others but I think the special context of CS and in fact the special power that CS knowledge gives requires we, CS teachers, include it in out curriculum. More than that I think that everyone, not just the people who will be CS professionals, needs to understand how to think about ethical computing. Can we really expect business or political leaders to think about ethical use of computers if they don’t have training in the mix? I don’t think so.

The ethics of using computers, how and why they are used and what they can do, is increasingly an important life skill. Ethical computing is another reason we should teach CS for all.

BTW The other day there was a twitter chat about ethics and computer science education (Check the #EthicalCS twitter tag). Saber Khan is organizing them on Wednesday's during the summer (8pm Eastern time) and this was the first. It was an interesting conversation and brought a lot of ideas to light for me. I recommend joining in over the summer.

Thursday, July 06, 2017

Computer Science Teacher or Teacher of Computer Science

In some respects we have an identity problem in computer science education. Some of us think of ourselves as computer science teachers. Generally that means we identify as teaching computer science first. Maybe that is all we teach. Other times it is not the only thing we teach but what we want to teach the most. Either way “computer science teacher” is how we self identify.

Other people see themselves as teachers who also teach some computer science. Some of these teachers see themselves as math teachers, science teachers, gym teachers, or art teachers who also teach some computer science. Others are K-6 or middle school teachers who teach several things or “everything” and computer science is just part of what they do. But many of these teachers feel like they are not in the same category as “real computer science teachers.”

This really shouldn’t be a problem as we all have computer science in common but sometimes it can be. It’s a problem when teachers who teach some computer science think that professional development for computer science teachers isn’t for them. It is though! When I look around the CSTA Annual Conference (which starts in a couple of days) I see all kinds of people who teach computer science and there is something for all of them there. No one asks if people teach something else at a CS PD event unless it is casual conversation or if they want to talk about cross curricula teaching. Many members of the Computer Science Teachers Association have membership in other subject matter associations of teachers and that is great!

I guess it can be a problem if someone really doesn’t want to teach CS and want to be purely some other sort of teacher. As much as I love CS and teaching CS I understand that some people have other priorities. There is only so much time in a teacher’s life for professional development.

Teachers of CS who want to learn more CS  shouldn’t hesitate to jump into things with people they see as computer science (specialist) teachers. As we in our society work to bring computer science to more and more (hopefully all) students there are going to be many more teachers who teach computer science along with other subjects. I hope we can mix CS with more subjects as well. It will make everything more interesting and relevant to teachers and students alike.

So computer science teacher or teacher of computer science – however you see yourself join CSTA, come to chapter meetings, come to our annual conference and know that we’re all in this together.

Wednesday, July 05, 2017

Twitter Chat - teaching computer science away from the computer #InfyEdChat

I'm going to host a twitter chat on Monday, July 10, 5PM PT / 8PM ET. Join me to talk about teaching computer science away from the computer. Bring your ideas and pick up more. Follow #InfyEdChat to take part.
#InfyEdChat (49)[483]

I think most of us are looking for ideas for helping students get the concepts and doing so away from the computer can be more comfortable for make. So jump in with what works to you. See you in Twitter on Monday!

Friday, June 30, 2017

Professional Development for the Advanced CS Teacher Teaching Advanced Students

This is sort of a riff from yesterday’s post about what to teach students who are beyond the normal Advanced Placement CS level or perhaps looking to something advanced in place of the AP course. Most professional development for computer science educators is for teachers who are beginners at teaching CS or who are teaching beginners at learning CS. That’s wonderful as far as it goes but as we move more and more CS down to the younger and younger grades there has to be more. What is that more?

Honestly I am not sure. Of course I have some ideas for topics and I have blogged about them. But are they the right ones and do I, or other teachers, know enough to teach them? OK some of them I think I could handle. I’ve been around the block a few times but there are a lot of teachers who are going to be facing students who know as much as they do very soon. Let’s face it some teachers are facing that already. IF they are not now they will be soon.

We don’t have a good handle of the “what comes next” because it hasn’t often bee an issue. But it would be a good thing if some of  those teachers who teach advanced students already (I’m talking about a large number of people at career/technical schools BTW) would share what they have learned with the rest of us. As I mentioned earlier (After ISTE–More Questions Than Answers ) this topic has come up in the past but we’ve never really addressed it as a community.

I think it is time we put some effort into this situation. What are your thoughts?

Thursday, June 29, 2017

Finished Advanced Placement Computer Science–Now what?

This question is now more complicated since we have two AP CS exams again. Does CS A follow CS P? Should it be one or the other but not both? But let’s put that aside for the moment. Suppose a student takes one of the AP CS courses as a junior (or younger – it happens) where do you go from there?

This may seem related to How Many Times Can You Teach Loops? but it’s not really. We’ll assume that these students have some solid understanding of computer science and programming. Not undergraduate major level but really solid for a high school student. What do you do with them if they want more? And many will want more!

There are a number of options as I see it. One is that you could have a domain specific course. Perhaps network programming. Or web backend programming? Maybe something like a cryptography course? (OK that one I would like to take.) Or go a bit more Information Technology with a system management course. Perhaps network security? Actually you could probably look at the average college catalog and get even more suggestions. All of them are good and interesting. I’ve been thinking along a different line though.

How about a major project course were each student or group of two to four students take on some major programming effort? I’m thinking they should have a customer. Perhaps an app for the school or for a local non profit. That’s the ideal perhaps. But maybe it would ok if they thought about some real tour de force that required them to learn a lot of new things. Maybe even learn some hardware.

What I’d really like to see is a self directed research sort of project. It would take motivated students and a teacher willing to let things get messy. Grading would be a challenge especially if one has to give regular grades to keep administration happy. I’m not really sure how it would work but I’ll bet some students would learn an awful lot.

Wednesday, June 28, 2017

How Many Times Can You Teach Loops?

Suppose you have students learning computer science from first grade to high school. How many times can you teach loops? Maybe you start with blocks using Scratch or Alice and they learn counter loops and perhaps loop forever. Do you teach with that language a couple of years? Maybe. Do you reteach loops for each of t hose years?  Next you switch to a text based language. Now you teach for loops (by some name or other) using words. Maybe you add in while loops. Next year maybe you add in loop until. At some point you add in For Each.Have you taught each of those several years running? Are your students bored yet?

We’re looking at K-12 Computer Science Standards and there is a great K-12 CS Framework. But what exactly do we teach each year? Now perhaps we don’t teach CS every year. Perhaps we decide on one semester in each grade band (defined differently for your situation) where we teach Computer Science. Great now we can do it all together and avoid some duplication. In the two years or what ever between CS course the students forget much of what was taught so we have to reteach stuff. What stuff? Who knows so reteach it all?

Seems like a pretty serious problem. Fortunately for me I don’t have to solve it for grades K-8. Well not right now anyway. I do have to look at what students entering my high school know though. I teach at a private Catholic school that gets students from over 20 different middle schools in only a few fewer districts than that. These days I can pretty much run my first class is if they know nothing about computer science. That is not going to last for much longer as CS moves into the lower grades. But for the near future there is going to be a wider and wider range of previous experience. That complicates things a bit. A related post is What CS Should a Student Know Before High School

I expect that many high schools will have to have different entry points to the high school computer science curriculum. Some students will want/need to start somewhere between nothing and just a little. Some will have more than a little and even a bit of programming. Still others will have a good bass in programming and will be ready fro one of the Advanced Placement courses.

When students enter high school ready for Advanced Placement or the equivalent we’ll have to think about what to offer them to keep them interested and learning to a deeper level. Wow! Sounds like another blog post.

How do you see the K-12 landscape? What progression would you like to see in your school district or area? How long is it going to take to get to CS at all levels and what sort of changes do you see that making?

Tuesday, June 27, 2017

After ISTE–More Questions Than Answers

One of the great things about ISTE is a chance to talk to people face to face. When that happens a lot of things come up. Yesterday and today, along with walking the exhibit hall and attending sessions, I had some good conversations with people. It all has me thinking a lot. I’m going to dump a few thoughts here and hopefully follow up on them in future posts. Feel free to jump on them now though.

There are lots of things at ISTE for beginners. Not just for the younger grades but for teacher who haven’t taught computer science before. What is there for people who have been teaching CS for a long time and who have advanced students? Not really a lot. This has come up at the CSTA Conference a few times as well but today it struck me that we (the CS Ed community) need to fix that NOW! More on that in a future post.

Here’s another question that comes up. How many times can you teach students how loops work? If we have CS in grades K through 12 what is the sequence? Sure the standards are starting to cover that and the K12 CS Framework has stuff for all grade bands but how does that translate into curriculum sequences? More on that coming to this blog.

All these cool news toys for teaching? Do they work and if so how do we know? Anyone reading know of some research or are we all working on wishful thinking – again? I only have questions on that. I still want to try some of them though. Does that make me part of the problem or the solution? Time will tell I guess.

What should be the role of industry in developing curriculum? I got pretty excited about some of the things I saw from industry – especially from Microsoft. But the question becomes are they just gimmicks or are they the basis for real improvement in learning? Some companies are developing things that are clearly their platform specific – Apple and Swift and other iOS specific tools. Some less obviously platform specific. But clearly industry benefits from more and better trained CS people. Take a look at How Silicon Valley Pushed Coding Into American Classrooms on the New York Times. If that doesn’t raise questions read it again. Personally I see a lot of good coming from industry and Code.Org. But I have concerns as well.

The exhibit hall has a surprising (to me) number of Chinese companies seeing things like robots and 3D printers. Competition is good and I can see this possibly lowering prices. On the other hand most of these products come without curriculum and other things teachers need  for support. Most, though not all, of the American companies understand this and make an effort to provide some teacher support. Some more than others of course. My concern though is bean counters who show based on price alone. Anyone know administrators like that?

I’ve got one more day at ISTE and I am not yet done walking the exhibit hall or attending sessions. Already though I have a lot to think about. And to  think I still have the CSTA Annual conference to attend. If you will be there come find me and help me think about all these questions. If not, drop some comments. Please.

Monday, June 26, 2017

Coding is Not a Four Letter Word

I am at ISTE and have lost count of the times today someone said "you can program this without knowing how to code." Usually they mean this because they use a block based programming environment like Scratch or Blockly or Snap! Well to me that is still coding. Just because the language is not text based doesn't mean it's not real programming or real coding. I come back to the idea that coding and programming can usually be used interchangeably. If anything coding is a superset of programming. HTML is certainly coded instructions but probably not really programming. At least not all the time. Arguably using CSS is programming of a sort. Arguably.

Personally programming or coding, how ever you want to call it, is what I am teaching. If it doesn't need coding than I'm probably not interested. Of course when I talk like that they tell me that I can also use JavaScript or Python or Java or any number of other more traditional programming languages.

Most of these companies are, I feel, really trying to sell some hardware. They must think that coding or programming is scary. Or perhaps that it is too much for someone. For students? For teachers? I'm not sure who. It shouldn't be scary though. It should be empowering. There is a place for block programming tools for sure. But some of us want the power and flexibility to say nothing of the easier transference of skills to other domains that text based programming languages give us.

So don't tell me your device can be controlled without programming or coding because you are using Blockly. That just doesn't compute. And real coding might just be what I am looking for.

ISTE 2017- A First Look

If I am seeing a theme at ISTE 2017 so far it is making. Session after session demonstrates learning by making things. No where is this more true than with computer science. Micro:bit and AdaFruit Circuit Playground Express are being seen in booths at poster sessions and discussed in workshops. Those two seem to be the tip of the ice burg though. This morning I saw a programmable (in Scratch) device that can be inserted in a flying disk.

WP_20170624_17_00_40_ProThe image on the left here shows a “guitar” made from duct tape, cardboard, and a Micro:Bit. The accelerometer in the Micro:Bit means that when the guitar is shaken it plays sounds.

AWP_20170624_16_58_12_Prond then there are these “magic wands” that respond to both movement and sounds. There seems to be a virtually unlimited set of ideas for making smart devices that include the various miniature devices that are becoming available. Microsoft MakeCode is usable to program many of these devices.

One of the cool things about MakeCode is that you can switch between a block like language and JavaScript. That means students don’t grow out of it very quickly – if at all.

What does this mean for computer science? Several things I think. One is that it means we can bring programming to younger and younger students. Most of these devices can be programmed with drag and drop block languages using words that young students can understand. Add to that color and creativity and you have a recipe for keeping lots of students engaged.

But it means something for older students as well. A key thing for getting students engaged is tying their learning into things they are interested id doing. For some that is robots. People who teach in all female environments tell me that women and girls are interested in robots. They just see different robots than boys usually do.

And fashion? NCWIT has e-Textiles-in-a-Box that looks very exiting. Just like robots are not just for boys, e-textiles are not just for girls either. I’ve seen a number of posters involving wearable items that mix electronics and or computer devices with clothing loosely defined.

ISTE is really just getting started today. I expect to see a lot more and will share some of the best of it.



Thursday, June 22, 2017

Student Programmer Fix This Code

Recently I came across this cartoon and shared it on Facebook.

robotskilling

Responses were interesting. The newer one was to programming the more likely people seemed to be to explain why the if statement wasn’t working correctly. The more experienced one was the more likely they were to point out that you probably shouldn’t have written that code (an option to kill humans) in the first place. There is some validity in both responses of course.

In teaching we often create code that is less than ideal to force a particular observation of a concept if less code. How often do we explain that to students? And how well does it take? I’m not sure but it does concern me.

Returning to asking students to debug code. I like the idea and it is something I want to do more of in the future. The problem comes when students don’t have enough experience yet to find the less obvious errors. On the other hand how will they get experience if we don’t let (make?) them practice debugging? Most debugging practice students get is on their own code. Often they are too close to it to see what is wrong.

Last semester I gave students code written by other students and asked them to test it. Most of the code worked as advertised and what students reported out was missing functionality rather than “broken” code. Maybe I need to write some broken code of my own and have students look at it?

How are you helping students learn to debug code? Any ideas to share please leave them in the comments.

BTW there is some discussion if asking students to debug code is better than asking them to write code on the new CS Educators Stack Exchange. You may want to join in there as well.

Wednesday, June 21, 2017

Become A Computer Science Teacher in Five Days

Garth Flint is a computer science teacher in Montana. While most computer science teachers are a bit isolated, most are the only CS teacher in their school. Garth is more so because Montana is a big state with a small population and few computer science t3eachers. Recently he attended a workshop to teach CS teachers. He wrote a review of the experience - A week of in-service: Another Python course

Some of the teachers had no previous computer science background let alone experience teaching computer science. They were mostly told to teach a course in the fall and figure it out.

Only a couple of us had actually done any CS/programming teaching.     It was a bit interesting talking to the teachers that had been give the directive to offer a programming course at their school.  It was a “come up with something” type of directive

I hear this a lot. You know a good teacher can teach any subject with a little prep time. Well no they cannot. Can you imagine asking an English teacher who spoke no French to teach a French course after a one week PD even at a local college? I don’t think so. Why is it less crazy to do the same for computer science?

As Garth points out in his post, teaching (and learning) programming syntax is the easy part but there is a lot more to teaching computer science than programming language syntax. One doesn’t just learn syntax rules and some vocabulary and suddenly speak French. No, there is idiom involved in a new natural language and that is no less true of computer science.

A week long course can give a CS teacher enough to get ready to teach a new programming language or a new curriculum. What it can’t do is really get you seriously into computational thinking or go deeply into the how to teach or why things are done they way they are. There is just no time.

The best professional development for teachers new to the subject are more involved (and longer) than 5 days. They involve pre-workshop work, post workshop work and ideally the workshop[ is longer than a week.  Even then things are going to be pretty tough that first year (or three). What worries me the most about assuming enough can be learned in a week is a) students will get turned off b) students will have to be retaught later (if we can get them in class again) and c) that teachers will get frustrated and quit before they get good at it.

There are many who believe that it is easier to teach a teacher to teach CS than to teach a CS person how to teach. Please do not mistake me for one of those people.

Tuesday, June 20, 2017

Movies for Computer Science Students

Today was watch movie day. I watched two movies that I have been thinking about showing to my computer science students.

The first one I watched was "The Imitation Game" about Alan Turing. Frankly I didn't like it. I like it even less for showing to my students. Why? Because I don't think students will identify with Turing. He is just to weird. Make no mistake I think Turing was an amazing individual and there are lessons in his story. But, well, it just didn't inspire me to want to do things.

The second movie was "Hidden Figures." This one I loved. Even though few of my students are females of color these women are real and normal in ways that Turing wasn't. They had children, families, and were concerned about others. They had things to overcome and fought to overcome them. That is a message that resonates. I think my students will see people to aspire to be like in this movie.

My experience is that students who see stories like "Hidden Figures" see the injustices against both women and minorities. They understand how wrong that treatment was and is. Sure there were horrible injustices against Turing and his death was a tragedy. But his personality, at least in the movie, is not one to make people feel as sympathetic as the women in "Hidden Figures." And the women won! And in their winning they opened the doors for many others.

So what other movies should I think about showing my computer science students?”

Micro:bit Small-board Computer Launches in U.S. & Canada

The Micro:bit (nee BBC Micro:bit) is now available in the US and Canada. This little device has been in classrooms in the United Kingdom for about a year and a half but is only now become commonly available in the US and Canada. Now at first glance this may not seem like a bit deal. It is a little device that must be connected to a larger computer to program. Seems like an extra step.

Microbit%20render%202%20no%20background But it is a big deal and it is more than just a little device. In a word, the thing that makes the Micro:bit interesting is “Making.”   This little device is easily included in little projects that can really interest students. Just programming the device on its own might get boring quickly. It was for me. But including it in a maker space sort of project is a game changer.

Now you’re asking for resources. The device is programmable in a number of languages and tools from Scratch to Python and JavaScript. There is a 14 week curriculum developed for students by Microsoft. Project Lead the Way also has a curriculum. Both are designed around making things that include the Micro:bit.

The Micro:Bit web site has a bunch of project ideas if you are looking for what others are doing. This could be fun!

Wednesday, June 14, 2017

How To Teach Computer Science

I always read articles like this one - The 5 Worst Ways to Teach Computer Science – with some trepidation. I always expect to find out that I’m doing it all wrong. The other thing that always concerns me is that the author will be all wrong. Everyone who knows how to code thinks they are an expert in teaching computer science. Many of them are wrong. But this article is a good one. (In other words it mostly talks about doing things the way I already do them.) I think to most experienced CS teachers it is review. I think it is written for teachers who are new to teaching CS though and it fits that role well.

I do think there is a place for individual projects though. Not every project needs to be or even should be a group or team project. So the second thing that article did was get me thinking about good practices.

One of the worst ways to teach computer science that the article doesn’t talk about is Do Everything On The Computer. I am seeing that that can be a real problem. My teaching focus is always concepts first and while after 40 years of writing code a lot of things on the computer seem obvious to me. Not so the “digital natives” I am teaching. Many of them separate real life from what is going on in the computer.

We think they see them as the same because of the social aspects of computer use we observe but I don’t think that is really the case. Young people see the communication aspect of using computers as somewhat parallel to their real life but that is much different from most computer science concepts.
Take counters and accumulators for example. They don’t think in terms of those computer science type words even though they use both in their daily lives. It’s hard for them to make the connection using code. I have them count a hand full of coins. Then I have a student total the value of the coins. Now we can have a conversation about counters and accumulators in the context of a loop.
Speaking of loops I have students walk as a loop. Walk seven steps or walk to this point – demonstrates counting and while/until loops. I’m struggling with how to have them act out recursion though. Ideas?

cs unplugged
More and more I am looking for kinesthetic learning that gets students physically involved in computer science concepts. There are some great ideas at CS Unplugged which I use with several classes. “Steal from the best” I always say.
We use some exercises from there when we teach sorting, parity checking, and more. They work well and get students involved. Of course kinesthetic learning is far from just a computer science teaching thing. The growth of maker spaces is one newer aspect of it and “making” has some potential in computer science education. We can also connect computer science to other subjects which will help students learn both/multiple subjects.

The important thing is that we don’t narrow our teaching to just lecture and things the students do on the computer. We have to be more interactive and include ways to get students doing things.

Friday, June 09, 2017

What is the purpose of a computer science education?

One of my former students posed that question. He then asked if it were:

  • Building computer scientists
  • Building software engineers
  • Building citizens

Now context is important in this question. At the university level, many schools see the first item as their main priority. Some see the second a a priority but then they may also see software engineering and computer science as very different majors. Where does the third item – building citizens – fit? Recent events (think Volkswagen diesel issues and hacking and more) suggest that building good citizens should have some thing of a higher priority.

At the high school level , where I teach, the questions are different still. We are not, for the most part, trying to turn out job ready CS students. Oh sure, many of my students have gotten summer internships and part time jobs based on what they have learned in my classes. But I’m not trying to make everyone a professional developer. Nor am I expecting the end result of my course to be a serious (for example published) computer scientist. No, high school is more about preparing students to take their place in the world as informed and (hopefully) ethical citizens. I teach in a Catholic school so we are allowed to emphasize values pretty strongly. In fat that is part of our mission.

I see the purpose of teaching computer science in high school as about several things. Not about making professional developers but giving students the tools to understand computers.What can computers do? What can they not (yet?) do? And how do these things impact the world they live in?

I see my role as building enthusiasm for the subject. (See What CS Should a Student Know Before High School) Not every student will major in CS in college nor should they all. But if I can encourage a few smart kids to do so that is great. At least I don’t want to kill enthusiasm that students might have.

I really want to instill some ideas about ethical practice. High school should be something what about citizenship. That  is where I want students to start thinking about the consequences of computer science and what it enables. They really have to understand CS to understand what is happening though. They need a vocabulary and some understanding of basic concepts. They need to be able to participate in conversations intelligently and with some knowledge. And they have to learn how to learn more.

High school computer science is a beginning and not an end in itself. A high school diploma is not a terminal degree. If students are a little more prepared for a world where computers are important we have been successful.  

Wednesday, June 07, 2017

What CS Should a Student Know Before High School

Recently a middle school teacher asked what computer science knowledge would high school computer science teachers like their incoming students to know. The first answer was the obvious “send them with enthusiasm and we’ll work with what ever knowledge level they have.” Pretty unsatisfying. I know because university CS faculty tell me the same thing when I ask what they want. So I had to think about it a bit.

So what would I really like? Well I’d like them to know the way around the operating system they use. Creating folders, moving files, renaming files, connecting a network printer, and connecting to wi-fi. That’s not computer science you say! Yes it is. It involves knowing something about how computers work and how to get around in the system. It will save me a bunch of time and the students some heartache. I’d also like them to have some experience trying things out. They should know were to look for different things in menus, in tools, and online.

How about understanding how the Internet works? DNS, packets, IP addresses, and stuff like that. I don’t mind teaching that. It’s actually fun. But students could learn that earlier.
.
For programming things? I’d love to spend less time on variables, loops, and decision structures. Can they use them to solve simple problems? Do they understand the connections between a variable name and a location in memory, a variable type and how much memory is uses, and how values are identified? Can they understand how a loop works and how an if statement works? If so I saved about three weeks that I can use for more advanced things like arrays and objects and methods and scope and a whole lot more. Even if they know those concepts in something like Scratch or Alice I can jump right to syntax for text based languages.

Honestly though few of my feeders are going to do all that. So I’ll still need my current freshmen course. But if a couple of kids can jump right into Honors Programming or AP CS Principles I could be very happy.

Thursday, June 01, 2017

Need Funds to Attend the CSTA Conference?

OK this is an opportunity too good to pass up if you are a K12 computer science teacher. Seriously.

If you are a K12 teacher, then Rolls Royce wants to help get you to the conference in STYLE!

CSTA and our partner Rolls Royce are excited to announce a scholarship to help K-12 teachers attend the CSTA Conference in Baltimore, Maryland this July.

Thanks to a generous contribution from Rolls Royce, over the week of June 5 - 9 we will give away a total of twenty-five (25) $1,000 travel scholarships for the CSTA Annual Conference. Each day we will release five (5) scholarships until they are gone.

How do you get one of these scholarships?  Here are the rules:

  • You must be a K12 Teacher to be eligible. No exceptions.
  • You may only receive one scholarship to attend the conference. Recipients of other CSTA conference scholarships are not eligible.
  • Each day by 9:00 AM EST we will post a unique application link for that day via Facebook, Twitter, and other media.
  • Applicants can submit one entry each day. All applications become the property of CSTA.
  • Each day there will be a simple question or activity to complete.
  • Each application will remain open for 24 hours.
  • Recipients will be randomly selected from eligible entries and notified by email.
  • Recipients will have 24 hours to confirm the scholarship or it will be released to another applicant.

Have fun, and we look forward to seeing you in Baltimore for fun and learning at THE event for and by CS teachers & teachers that teach CS!

The CSTA Annual Conference will be held in Baltimore, MD on July 8-11 and we have a great lineup of sessions, workshops, and exhibitors planned.

Click here to find out more about the conference.

Need more information?