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!