Thursday, January 24, 2019

Computer Science Standards and Frameworks

I’ve been thinking a lot about computer science standards and frameworks the last couple of days. It’s all Mark Guzdial’s fault because he posted Frameworks and Standards can be limiting and long-lasting: Alan Kay was right Following Mark’s post are (as I write this) 38 comments. Some of the longest and most thought provoking have been from Alan Kay. Yes, that Alan Kay

This was hard to read for me because I was involved in writing the Framework and invested a lot of time in it. I thought I was doing a good thing. But I can see some of the flaws with the benefit of time and an outside view from many smart people.

I was also on the CS 2013 task force so I have seen two different processes for two very different documents. I do, and always did, wish the Framework process could have been more like the CS 2013 process. I feel like the reviews between drafts of the CS 2013 were done better with solid input from many and varied outside reviewers. There were both too many and two few people involved in the  K12 CS Framework. Too many doing the actual writing and perhaps too few doing reviewing.

For an other thing, I felt like the Framework writing became a lot more about how things were said (worded) than what was said. Not that what was said wasn’t important but that politics drove the working. Perhaps that is because I joined the writing team late in the process but I still wonder if the emphasis was right.

I’m still thinking about some of the comments from Alan Kay on Mark’s post as well. Especially the section below from his comment on my comment.

I’ve always been a big enthusiast about Jerome Bruner’s idea that *for every learner you can (and need to) find an intellectually honest version of a subject they can learn if you heed their level of development”.

In order to do this, I think you really need to have a good picture and as good as possible a definition of the subject before trying to find “intellectually honest versions of it” for different kinds of learners.

This was not done for the CS Framework. If the subject were physical sciences, one would first start with top scientists to put together a workable picture of the sciences as the best people in the field see them at that time.

So how to I look at the existing framework and standards (either CSTA or as adopted by my state)? Should I write my own “standard” or more accurately named “Alfred’s list of what I think high school students should know about computer science at graduation?” It might be an interesting intellectual exercise but would it be valuable?

As a classroom teacher I don’t spend a lot of time looking at how my curriculum matches a standard or a framework. Maybe I should. My wife can tell you all the standards she is working to follow in her curriculum.

Teaching at a private high school I have more flexibility and self determination than I suspect teachers at public schools have. I have also spent a long time in the computing field as both an educator and an industry professional so I have a sort of confidence (ego perhaps) that I can decide what students need to know. Students seem to be well prepared for university, or so they tell me, so I can live with that for now.

The problem is what to specify for newer, less experienced (more modest?) teachers. The Framework was one attempt and it was well-meaning I am sure. What we need to do is not so much focus on its flaws but discuss where to go from here. And who should lead the way!

Thursday, January 10, 2019

Lecture As Performance Art

Mark Guzdial posted a link to an article about him (The social justice case for computing: transforming tools for some into a language for all  – you should read it) that had a picture of him teaching. His comment on Twitter was that “Pictures of me teaching look like I'm either a preacher or a Jazzercise instructor.” Shuchi Grover suggested “Bollywood’s greatest actor.” Now Mark is a great speaker, very dynamic. And really dynamism is a hallmark of good presenters.  A number of professors have large YouTube audiences because of the way they present material.entertained

Now I know there is often pushback from teachers saying that their job is to teach and not to entertain. Let’s face it though, all the “teaching” in the world is of little use if no one is paying attention.

Not everyone is a great entertainer. Lots of them are in the “lecture is dead” school of thought too!  There is a lot of pressure to be the “guide on the side and not the sage on the stage.” Personally I think most material needs a mix of the two though. Students need somewhere to start and often that means a lecture of some sort. BTW showing a video is a form of lecture not matter how cool the sound and graphics are.

If we’re going to stand in front of an audience we owe them our best efforts. I’m a firm believer that part of what makes a teacher, and a lecture, a good one is the presenter's enthusiasm for the topic. If you are really enthused it will show and it will be contagious.

I’m always amazed at how little formal training most educators get in presentation skills. One would think that would be a regular occurrence. When I worked in industry I was given a mandatory presentation skills training about every second or third year. Eventually I hope to get good at it. I’ve noticed at events with both educators and industry people presenting the industry people are often the most polished and, yes, entertaining, presenters.  Industry speakers often get salary reviews based on the reviews they get from giving presentations. Educators are evaluated differently of course. And that’s not bad.

With as many distractions as students have today we really have to up our presentation game though. No, we are probably not entertainers by a strict definition perhaps but at least we have to be interesting. And give students some reasons to stay awake.



Wednesday, January 09, 2019

Everything Old Is New Again

I try not to throw code away. I have punch cards in my attic that are over 40 years old. I also have a bunch of code from my university days on a magnetic tape (a DECtape) that I will probably never be able to recover. But a lot of code since the PC era I still have in accessible form. Today, Facebook memories reminded me of a blog post I wrote 10 years ago today. Next step was to look though my archives for the code it referenced.

I haven’t thought about the project, parsing a string to evaluate its strength as a safe password, in  some time and thought I might want to use it in one of my courses. Honestly, I didn’t remember my algorithms and while I could think of several ways to do it I thought a memory boost would be fun.

It turns out I have a second example that someone else, another teacher who shared his projects with me, had written. Comparing the two programs was interesting. There are, as usual, more than one way to solve a problem like this one.

With two very different solutions and some other options that have popped into my mind while thinking about the project I am rethinking how to use this project.

Typically I would just assign the project and see what solutions students come up with on their own.

On the other hand, I could provide a structured set of recommendations. Various ways of implementing scaffolding would leave more or less flexibility for the student. Still musing over that.

Another option is to provide students with several code examples and ask them to evaluate them. I see a couple of benefits to this plan. Students would get some valuable practice in reading other people’s code. We don’t do enough of that in my opinion. It would also show different techniques (tools if you will) that they may want to incorporate in their own future projects. And it would allow us to have some conversation about efficiency.

I’m still noodling on these ideas but I thought I would toss my thinking out for comment. What do you think of these various ideas? What would you do?

Tuesday, January 01, 2019

Happy New Year 2019

I’ve been thinking about this post for the last several days. My usual practice has been to start the year with a list of things I want to watch in CS education during the coming year. As I look at last year’s list (see Looking Back on CS Education in 2018) I don’t see a good list for this year. The things I’ve been watching have largely matured. The next big growth area is not clear to me.

Sure we’re making progress in getting computer science education for more and more people. Of course there is more to do and room for growth but it feels like momentum is going to carry us through.

So this year I am thinking about what I can do to give my students an edge. What can I shoehorn into my curriculum that will go beyond the average. There are people who way ahead of me of course. Doug Bergman and David Renton at Porter-Gaud School are doing amazing things. A number of the career/technical schools I know of have room in their curriculum for a lot of things I haven’t been able to fit into mine. Likewise, there are a number of magnet schools covering some really advanced topics. Most of these have more room in their curriculum for CS than my school. That means I need to do things differently.

I suspect that most teachers at comprehensive or college prep schools have some similar time limitations. We have room for only so many courses. In may case I have what seems like a lot of options. We teach some programming in our freshmen course (it’s only one semester long and we cram a lot in already). I have a one semester honors programming and a one semester mobile application programming course. In both of those we get students to the point that they can do interesting things and then the semester is over.

We offer both Advanced Placement Computer Science courses. They're both a full year long but it feels like they are pretty constrained. I only teach the Principles version so playing with APCS A is a moot point for me.

The AP courses are a problem of sorts. As they say, a blessing and a curse. Parents and administrators love them. They help make schools look good to parents. They make students look good to college admissions officers.  There is lots of well-developed curriculum and professional development for teachers. What’s not to like?

But you wind up teaching to the test. It’s almost unavoidable. Your curriculum plan has to be approved by the CollegeBoard for starters.  While you can get clever about things like projects, tools, and for APCSP even languages there is always that constraint about what is on the test that you have to focus on. If APCS is the only course one teaches you probably have the type and energy to get really creative. If you teach four different courses (as I do) it can be a bit overwhelming to make big changes to the AP CS course.

The path of least resistance (for me teaching APCSP) is to use the developed curriculum and teach using that. The code.org APCSP curriculum, which I am using,  is pretty amazing for teaching that course. Since I have two other courses I teach alone based on self-developed curriculum there is some strong motivation to spend time on those.

What I want to squeeze in somewhere are cloud computing, Artificial Intelligence, and Virtual Reality development. I don’t really know enough about any of these to know how hard it will be to fit any of them in or where they would fit logically. If I had a year long course after my honors programming class that wasn’t constrained by the AP curriculum I would recruit a group of smart curious students (plenty of them around) and we’d all learn together. Alas, that is not currently an option for me.

My current thinking is to try and learn more about one or two of these on my own and by the summer have an idea where I can fit some of it. Amazon Web Services has AWS Educate which I have signed up for. It has a bunch of free resources and training. Seems like a good place to start learning the cloud. It looks pretty well set up for teachers as well. SO that is the cloud piece.
Next is either VR or AI. VR requires some hardware to do right as far as I can tell so I have to factor that in. Both AWS and Microsoft have some AI that can be used. Since I already know about the AWS resources I may start there with AI.

VR is pretty exciting as well and there are some great resources for using Unity with C# for that. I already teach C# using Visual Studio so going the VR route may be a good option.

I hope to get my current semester long courses in good enough shape during the school year that I can really deep dive into the cloud, AI, and VR over the summer. Not that I will wait until then to start but that will be when I can get deepest. And of course the search for resources for my own learning, for teaching, and for making this stuff fit goes on all the time. Let me know if you have links to share.
So basically my message is, 2019 has some serious potential.

Monday, December 31, 2018

Looking Back on CS Education in 2018

The last few years I have written start of the year posts about things I want to track in Computer Science education in the new year. Last year’s post is at Computer Science Education Things I'm Watching in 2018 At the end of the year, like today, I write about how those things tracked over the year.

The first thing I wrote about last January was Advanced Placement Computer Science Principles. I was half way through the year teaching it for the first time at that point. Now I’ve been through a whole year and am half way through the second. APCSP grew a lot and continues to grow. Curriculum from Code.org, Beauty and Joy of Computing (BJC) from UC Berkeley, and Mobile Computer Science Principles (Mobile CSP) from MIT continue to be top curriculum in use. It’s a heady time for AP CS. At this point APCS P is pretty settled into many schools and looks to grow even more. The existing “canned” curriculum and related training are key factors.

The next big item I was following was K-8 Computer Science Education. This is still an up and coming area. The #CSK8 twitter chat has been my best window into this area and it continues to grow. The first chat of 2019 will be 2 January 2019 at 5pm PT and 8PM eastern US time. I didn’t attend ISTE in 2018 and that is usually my other deep dive into K-8 CS. But K-8 CS continues to grow as the CSTA Annual Conference and local professional development events like the 2018 CSTA New England Regional Conference.

State Standards continued to grow as more and more states adopted them. In the last year or so my home state, New Hampshire, adopted new CS teacher certification guidelines, state standards, and passed a law including computer science as part of the definition of an adequate education. Other states moved forward as well. I confess I spent a lot more time looking at NH than other states.

It was a good year for computer science education in general. Here’s hoping we continue to see progress in 2019.

Friday, December 14, 2018

Sub Goal Labeling in Computer Science

One of the interesting ideas in teaching computer science I have been looking at is sub-goal labeling. I’m experimenting with it but to be honest I don’t feel near ready to share what I am doing.

As a wrote recently (The Problem With CS Education Research ) it can be hard for teachers to take research and adopt it because, well, research papers can be hard to read for some of us. And the world of the university classroom is a little different from that in the high school.

Fortunately for me, and for you, Clark Scholten has been trying things out and blogging about it. I highly recommend his posts.
Anyone have more suggestions of resources for learning how to use sub goal labeling?

Friday, December 07, 2018

Teaching Phone Programming Should be Easier

Garth Flint and I have been independently looking at resources for teaching mobile phone application development. (Garth’s posts are linked below) I’m currently teaching a course using AppInventor which is going ok but not as well as I’d like. Most of my students own iPhones which AppInventor doesn’t currently support. Their iOS support is currently under review by Apple but my course is almost over. Even with Android phones I still have some trouble with connectivity. And the emulator is a mess. Some days I can’t get it working at all. So I’m thinking about what to use to teach next year.

There are other options. I have been testing Thunkable with some of my students. The good is that it supports both Android and iOS. The bad is that this support doesn’t support many sensors and really that is a huge part of what I want students to do. Without sensors its just another desktop app with a tiny screen.

I still need to take a closer look at LiveCode which seems to come up in this discussion so I don’t know much about it yet. Input welcome!

I haven’t tried the platform specific (ie professional) tools yet and I am reluctant to do so. The ones designed for iOS or Android only work on those platforms and I’d like to use both. Since most of my students have iOS devices than going Apple might be a way to go except that that requires developing on Macs. We have a Mac lab but its already used a lot. And they are all Macs which comes with its own complications. I am not a fan. That’s a last resort.

Microsoft Xamarin with Visual Studio is a cross-platform professional option. I’ve looked very briefly at it in the past. Setting it up is non trivial and I do have to have some connection to Macs for the iOS loading. Networking to a Mac or three might be an easy option.  Well, easier than taking over a whole lab. I need more time to work on that option though. I don’t know many teachers using it which is a concern.

I really wish Windows Phones had not died out. I have a Windows Phone and writing apps for it with Visual Studio (2015 or earlier only) is a piece of cake.

Wednesday, December 05, 2018

Where Does Computer Science Fit–Revisited

David Renton is teaching his students at Porter-Gaud how to program virtual reality projects. He posted a video of some of these projects a few days ago.

These are pretty cool, Virtual Reality apps created by [David’s] Porter-Gaud High School senior CS students using Unity for SteamVR. They tested them using HP & Lenovo Windows Mixed Reality Headsets. They each created at least 2 3D models themselves using Maya and imported the other models from the Unity Store and/or remix3d.com. They also created at least one sound effect themselves using Audacity. They coded the interactions using C# in Visual Studio. https://youtu.be/xddytj0hVZU

One project was highlighted on the Microsoft Education blog with a post by the young lady who created it. How a VR trip through the solar system honed my down-to-earth skills – go read it. I’ll wait.

That is a project that involved math, physics, and art into a computer science project. I suspect that the math teacher she approached for help was pretty pleased to get involved. I’ve sent students to math teachers myself over the years. 

We don’t ask where reading fits in the curriculum after some magic line in elementary schools. We teach students to read in large part so they can use it as a tool to learn more about more subjects than just reading. I’ve long believed that computer science can, and should, become a tool that students learn to help them learn other subjects.

Yes, we need students to have a base of CS knowledge first. David’s students have had several years of CS, starting in elementary school, before they get to him. Using that base they can learn more about CS for sure but they can also create projects that interest them and motivate them to learn more, not just about computer science, about a wide range of other subjects.

Like reading, we need to teach enough CS that it can be used across the curriculum. It can’t stay a silo subject if we’re really going to see students use it to their potential.


Edit: See also the Luminous Science curriculum being developed by  Ben Shapiro’s student. Brings together science, art and #computing. Also awesome! https://www.playfulcomputation.group/luminous-science.html Ben is on twitter @bennytheshap

Monday, December 03, 2018

Happy Computer Science Education Week

logo_text

It’s CS ED week again. Yeah! This is the week that thousands of teachers around the work introduce millions of students to computer science. Many of them for the first time. Some through the Hour of Code, some though special speakers, some though creative ideas of their own, and on and on. Teachers are by nature creative people which it comes to sharing ideas. It’s an awesome week.

Earlier today I joked that there were no Hallmark cards for CS education week. The obvious suggestion, print your own, came very quickly. It’s not a bad idea. It got me thinking though. Wouldn’t it be nice is one aspect of cs ed week was an appreciation of those teachers who work to bring computer science education to students on a regular basis?

Last year, CSTA and code.org started the Champions for CS awards. You can read about the 2018 Champions for Computer Science Awards. Those awardees will be presented with their awards at a special 2018 CSEdWeek kickoff event today. That is great. I hope we can safely assume that part of their role is to serve as a sort of proxy to honor other hard working CS educators as well as highlighting exceptional teachers, students, and programs. At least that is how I choose to see it.

Personally, I’d like to thank the many CS teachers who have shared ideas with me, taught me, and supported me over the years. There are so many of them and I can never list them all. There have been blog posts, comments on blog posts (mine and others), teacher presenters at conferences and PD days, hallway conversations, and formal training events. So much to learn and so many teachers who are willing to share what they know. We in CS education have a wonderful, caring, and helpful community. Thank you all who are part of it. You’ve made my career and my life richer.

Wednesday, November 28, 2018

Ready, Fire, Aim–Why Is Design First So Hard To Learn?

“Hours of coding can save you minutes of planning”

We’re talking about top-down design in my APCS Principles class this week. I gave the students a worksheet (part of the code.org curriculum which is really well done) that asks students to pair up and design the functions they would write for a given problem. The first question from a student? “Do we have to do the design before we write the code?”

Now you may be asking yourself – what sort of question is that? Of course you design first. That is not how students think some times. They want to jump right in and write code. It’s not that they know how to do it or that they have a design in their minds though. They want to try things and see what works. They are more into trial and error. They have high tolerance for error as long as they are moving forward and the development environment is not giving them error messages.

Now not all students are resistant to planning. Over time most students come around to the idea of design first. It can be a tough sale though. Design doesn’t have the same instant gratification that writing and trying a line of code does.

Back in the day (yeah, old guy reminiscing) we had long turn around between writing code and seeing results. We handed in our deck of punch cards and waited (hours or even days) to find out what worked and what didn’t. We really could not afford to skip the planning phase. We thought deeply about how things should work.  We closely desk checked code before submitting it and after getting early results.

Now I am not saying I want to go back to those days. (even though in weak moments I might think it would be good for students.) I do wish it were easier to keep students from writing code first though. I’ve tired having one student write a design and than having another student write code from it. The second student tends to mostly ignore the written design and do it their own way which may or may not look like the design at the end. Often it is easier to blame poor design than a failure toe follow the design. Students do want their programs to work and they don’t want to make peers look bad.

What I am trying to do more and more is to model design thinking myself. We create programs as a class and I work though the design before showing code. For example, we are working on a program to give and score quizzes. We worked though a discussion of what a question class would look like. What data would it store, what functions would it need to support, and how would it be used?

I can force students to write out designs. And they’ll try. Over the years though what seems to influence students most is what they see me do.  If I get lazy they’ll get lazy. If I take shortcuts they’ll take short cuts. If I use good practices though so will they. If I model design, planning for expansion, and show that I am thinking beyond the near term so will they. I keep reminding myself of this.

Leading by example is the best tool of all.

Thursday, November 22, 2018

The Problem With CS Education Research

There is some research in who t teach computer science (OK, mostly its about teaching programming but that’s important too) but not a lot of teachers or professors are adopting it. One has to wonder why? Eugene Wallingford takes a look at this question on his blog Why Don't More CS Professors Use the Results of CS Education Research?  He has so reasonable answer having to do with peer pressure and pressure from students and parents to do things “the way we’ve always done it.”

The path of least resistance is tempting of course. And change is hard. But I think there is more to it than that. I mentioned Parsons Problems to a professor at a university and he knew nothing about it. And why would he? For many professors at R1 schools research is a higher priority than teachings. And teaching high level courses has a higher priority than lower level courses.  But higher education is not my area so I look closer to home – secondary school teachers.

I should start with myself though be fore I look at others. Problem number one for me is lack of understanding. I’ve read some papers on worked examples and Parsons Problems. I think I understand them. Sort of. But the language of research papers is not one I am totally comfortable with. No, that’s not quite right. I read it comfortably but figuring out how to put the conclusions into practice is often still a little opaque to me. These papers are written for other researchers and not for people to implement in their own classrooms. So that is problem one.

Then there are the tools that are used in the research. I have played around with a couple of Parsons Problems tools. Eh. Clearly they were developed by people who were developing for a specific audience that is possibly more forgiving or willing to work harder than the average high school student.   Lots of them look like the old school (i.e.. before windows) applications adopted for the web. Hardly the thing to grab the attention of a modern HS student. To be honest I tend to worry about using tools developed for research projects. One never knows when the researcher will move on to a new interest.

I want to use Parsons Problems but I struggle to find the right tool to use. I want to use worked examples but I need to spend sometime with someone (or some paper) that knows how to help a HS teacher learn best practices. I’m sure there are other things I can and should learn from CS Ed researchers but I don’t know what they are.

That brings up the next problem. I spend money out of pocket to be a member of ACM and SIGCSE. That gets me a lot of great papers to read. Money well spent IMHO. But it’s been a while since I have been to the SIGCDE conference (maybe this winter) and that would let me get more out of these papers. I could ask more questions and hear the questions of others. I think a lot of HS CS teachers don’t really even know much about SIGCSE or attend the conference. Yes, there are a bunch of HS CS teachers at SIGCSE. They’re a small subset of the total community though.

There are more HS CS teachers at the CSTA Conference but that’s not a venue high on the radar of university CS Ed researchers. There are other conferences more likely to help a professor get tenure or impress possible funding agencies. That is not to suggest that CS Ed researchers don't care about HS CS. They absolutely do. Several have been very generous in their support of CSTA and of spending time helping HS CS teachers. I owe them a debt.

Many HS CS educators don’t have the time, energy, or motivation to go digging for new ways to teach. It’s hard to blame them. Their students do well on examples, pass the AP tests, do well in university, and generally seem happy with the statues quo. How are they ever going to learn how to do things better or even decide if there are better ways?

In short, yes, some are unwilling to try new things but more would if a) they had a better understanding of the techniques and b) they had tools more suited to younger learners. The biggest factor though is they just don’t know about the research and what it suggests. Someone needs to take that on. Calling NSF, Code.ORG, CSforAll, SIGCSE, and CSTA!

Monday, November 19, 2018

The Learner Gets A Vote

One of the cool things about Twitter is that some interesting discussions take place among really smart people and the rest of us get to watch and, if we’re smart, learn. One such conversation took place over the past weekend with a number of really smart, very well informed (with, you know, actual research behind them) educators talking about CS pedagogy. 

The discussion was between a number of high powered university professors. As a lowly high school teacher I was hesitant to inject my thoughts. But I seem to be genetically incapable on keeping my thoughts to myself so ..

My comment was “A lot of times we forget the student and the environment they live in. The best thought out pedagogy in the world doesn't work if students reject it.”

It may be surprising but many students have strong ideas about what they should be learning. Their ideas of what is relevant are often different from that of their teachers. It’s easy for us as educators to say “we know what’s best” but students do get a vote.

If students think the tool is too hard, too easy, or just wrong it will be a struggle for them. Sure we as teachers can do a lot to make things go smoother. We can explain why it is good to use that particular tool for example. And we can make sure that projects and exercises are interesting to students and not just to us. What we can’t do is just assume that because we know the pedagogy is right that students will take that for granted and wholly embrace our methods. In fact, we have an obligation to do so. “Because I said so” almost never works as a motivation.

Friday, November 16, 2018

Testing Computer Science Knowledge Is Hard

How to evaluate computer science students is always a tough question. It’s everywhere that computer science is taught. There is something of an issue with a course offered in the United Kingdom f or example. Exams ‘useless’ for computer science, say experts  Among the experts they quote are two educators. Miles Berry is someone I know and he definitely qualifies as an expert.

The software developer the article quotes develops educational software, which is interesting. It seems like articles on software education always seem to include a quote from a software developer. Why?

In any case, evaluating CS knowledge is a tricky thing. I prefer projects to tests and quizzes but they have limitations as well. Mostly that it is easy to cheat. Students have time to figure things out, which is great, but that means one has trouble knowing what they know against how good they are at looking things up.

Calling this cheating might not be the right word because real programmers share and copy code all the time. And being able to look things up is an important skill.

Paper tests are harder to cheat on but limit creativity. And they're no fun. I use the occasional quiz in my classes. It sort of keeps kids honest to a point and lets me get a better handle on where students are struggling with concepts.

Having one on one conversations might help some. But that doesn’t scale well. Some students have trouble communicating what they know and some teachers have trouble asking the right questions. So much depends on the teacher student relationship.

I wish we didn't have to grade at all. That would require students who learn because they want to know things and not just want to get good grades. As teachers we would still have to understand where students were having a hard time because that would help us to teach better and students to learn better. Most evaluative instruments feel like blunt objects to me.

Thursday, November 15, 2018

16,000 BBC Sound Effects

I don’t know about you but I regularly go on the lookout for sound effects for projects. Today, I have to share this new source for sound files that may be used for educational purposes. 16,000 BBC Sound Effects

I found this database to be fairly easily searchable. Clips are various lengths and sizes so be aware of that. I imagine you could convert the WAV files to other formats if you really needed to. I’m still experimenting with them.

image


These 16,000 BBC Sound Effects are made available by the BBC in WAV format to download for use under the terms of the RemArc Licence. The Sound Effects are BBC copyright, but they may be used for personal, educational or research purposes, as detailed in the license.

Wednesday, November 14, 2018

Post-secondary Cybersecurity Curricular Recommendations

There is more computer science than we could ever cover in grades K-12. So much of it is important and exciting. Every parent open house I get suggestions for what we  should teach in high school. There is no way we can teach it all. There is no way we can do everything in universities either. One other thing is clear, cyber security is growing in importance. While I try to cover a little of it in my courses (easily fits a few classes in several courses) I can’t cover as much as I’d like. My hope is that universities cover a lot more. I think most do.

The ACM and IEEE have just reported out a document to help post-secondary schools design their cybersecurity programs. I haven’t read the whole document yet but I know some of the people involved in writing it  and in the process that goes into creating documents like this. so I am confident in recommending it.

Do you cover cybersecurity in your curriculum? How much do you have time for?


First-Ever Global Curriculum Guidelines Reflect Worldwide Demand for Qualified Professionals and Urgent Industry Needs

After an extensive two-year process, a joint task force led by the Association for Computing Machinery (ACM) and the IEEE Computer Society (IEEE-CS) has released a first-ever set of global curricular recommendations in cybersecurity education. This new set of guidelines, Cybersecurity Education Curriculum (CSEC2017), is designed to be the leading resource for comprehensive cybersecurity curricular content at the post-secondary level. More than 320 advisors drawn from 35 different countries contributed to CSEC2017.

Tuesday, November 13, 2018

Toys or Tools

Are we using toys or tools to teach computers science? The cute little robots for example. Or Micro:bit? or any number of other fun little gadgets that we use to make learning more fun and interesting? Toys or tools? Calling them toys makes them seem frivolous and unimportant. See Merriam-Webster definition of toy which includes “something (such as a preoccupation) that is paltry or trifling” “Tools” implies work or perhaps even not fun. Too serious for some though.

The definition of “toy” also includes “something for a child to play with” Ok, “play” seems a little better than “trifling” but still not so serious. Isn’t school serious business? Yet educators know that play is the way children, especially little children learn. And we’ve know this for a long time.

“The most effective kind of education is that a child should play amongst lovely things.” ~ Plato

I had a related conversation with my programming students the other day. I asked who needed more time to finish a project. A student replied “Everyone but the students who actually write programs for fun.” I do have a couple of those. I tend to see one or two and sometimes three in a course.

The students who find the fun in the course are the ones who do the best. They learn the most. They learn the fastest. And they create the most interesting projects. There may not be a coding gene (as Mark Guzdial insists and backs up with research) but some students sure do seem to find coding more fun than others. As a teacher I do try to make it fun for as many as possible.

My experience tells me (not research so doesn’t count for much perhaps) that students who enjoy their projects learn more and do better at coding. Calling the tools we use to make things more interesting “toys” or “tools” doesn’t change that they make things more fun and interesting. Words may bias people so we should be careful how we use them. Perhaps we tell the funding people they are tools. And maybe we say the same to parents. Calling them “toys” will lower stress for some students and cause others to take things less seriously. It can be a tough call.

Among ourselves (educators) we can call them toys because we understand that toys and play are the tools of learning.  For the most part I think we should avoid categorizing them as either tools or toys. There is too much emotional baggage about both of those words. Let’s try to avoid broad characterizations completely and just call them what they are: computers, robots, sensors, or what ever.

Remember fun is good even when it looks like work to someone else.


FWIW I found that Plato quote at Child’s Play Magazines Quotes about play Lots of great ones to choose from.

Some of the web most things on the Internet are blogs. This post is inspired by a post from Doug Peterson (as many are) that quotes and links to another blog. Specifically Doug’s Toys or Tools post that links to Tim King’s ECOO BIT18: Reductionism and Ignorance in Educational Technology post. Both posts are worth a read.

Monday, November 12, 2018

Guest Hosting a TweetMeet on CS and Hour of Code #MSFTEduChat

Computer Science Education week is fast approaching. It's a big week and one of the big activities for a lot of teachers, students, and schools is the Hour of Code. Microsoft Education is running a Twitter chat or Tweet Meet on the topic and I was asked to be one of the guest hosts. It should be very interesting with a lot of international flavor.

Save the date - Nov 20
Quite an interesting line up of international teachers co-hosting across time zones, national borders, and languages. I hope you’ll join us.

Combined headshot

More information at https://educationblog.microsoft.com/2018/11/tweetmeet-computer-science-msfteduchat/ 

Friday, November 09, 2018

How Do We Define a Successful High School Computer Science Program?

Mark Guzdial has an interesting post asking When do we know that a programming course is not working for non-CS majors? The focus of the post is undergraduate level computer science courses. Can universities create CS courses that work for CS majors and non-CS Majors at the same time. It’s an important question for universities who are faced with more and more CS students and having trouble hiring enough faculty. We face some similar questions in secondary school computer science.

In secondary schools we don’t really have majors and we don’t have a way to identify CS majors. So all of our courses have students who may or may not major in computer science when they get to university. We not only have to ask if our courses are working for future CS majors and for students moving into other majors. Do we even know what “working” means in the secondary school environment?

Is a first course working if enrollment is up in more advanced courses? If enrollment does not go up does that mean the first course is not working or are their systemic reasons like guidance pushing students to more world language or other sciences? Or perhaps scheduling problems with too many interesting electives and to few open slots in the schedule?

Are our courses working or failing based on the number of students who do go on to major in CS? Or is that not a good measure because a lot of people in other majors are likely to need CS. More and more math and science courses make use of programming for example.

Generally it is very hard to collect data about our students once they graduate. I need to think on this some more but I am hoping some of you, my readers, have some thoughts on the matter. We probably need some answers as we work to convince more schools to offer CS. Administrators will likely want to know how we know we are teaching the right things the right way.

Tuesday, November 06, 2018

Teaching Computer Science Teachers to Teach CS

My teaching style, especially in the first years, was greatly influenced by the man who taught me computer science. A wonderful man who really instilled a love for CS and a lot of knowledge. We didn’t know a lot about teaching CS or programming45 years ago. In fact I think we were really just starting to figure programming out. How to teach it was almost a black art.

Most teachers tend to teach the way they learned. It worked for them after all. Today though we know more about how to teach CS. Not enough but at least there is progress. Thus brings us to how to teach the people who will teach computer science in K-12.

There are two things future CS teachers need. Content knowledge and knowledge of how to teach CS. Many universities are asking CS faculty to teach the content. My big concern here is that I want teachers to be taught by people who model best teaching practices.  Almost every teacher I know has been in a professional development session about how to teach run by a presenter who didn’t model what they were teaching. It’s not going to be enough to have classes that teach how to teach if content providers don’t model that techniques.

A lot of universities are going to struggle to find such a person. Oh sure their research professors have great content knowledge but teaching to an auditorium of 300 university students is not the same as a class of 15 to 30 high school students. And grades k-3? Not sure many university faculty are ready to teach CS to little kids or to future kindergarten teachers for that matter. (Note that I love and respect kindergarten teachers. My daughter in law and my cousin both teach kindergarten.)

One would like to think that teaching professors, either special role at large institutions, or regular faculty at liberal arts and smaller institutions would be better models. Are they? Surely many are. But many educators don’t adopt research based teaching methods for teaching CS. (Mark Guzdial has written about this several times. For example here) How many university CS faculty know about things like subgoal labeling, and  Parsons problems?

What we need are CS educators to teach pre-service teachers using the methods that we know can improve teaching. That’s going to be tough for a while.

One suggestion that has been made (credit Mike Zamansky) is having current high school teachers teach pre-service teachers. The idea being that they know well how to teach younger students.  Not a totally bad idea especially if those teachers have taken advantage of changes in what we know about teaching CS either from their own experience or from additional study or both. Politics at universities may make that troublesome. And if you think school teachers are underpaid look into how adjunct faculty are compensated sometime. Ouch!

What is going to happen is that some schools of education will do it right. For some definition of right. Those schools will take preparing CS teachers seriously and make it a priority to get good faculty, using current methods, and probably doing CS ED research themselves. The teachers they graduate will be in high demand and attract more students. Those universities will (one hopes) be emulated by others as the demand for well-prepared CS teachers grows.

I can’t wait to see which universities make this a priority and set the standard for the rest. No, really, I can’t wait.

Monday, November 05, 2018

Programming Projects Should Be Personal

I’m always looking for new projects. I find them in the strangest places. Facebook for one. And some not so strange places. The AP CS Principles curriculum from code.org has lead me to several. Most recently, the unit on data and privacy took my class and me to the Data Privacy Lab at Harvard

imageThe site has two sections, one looks at your browser history and the other looks at some of your demographic data to see how identifiable you are. One enters imagetheir zip code, birthday, and  gender. The system looks at census data. and shows you how identifiable you are from that limited data set.


Well that is interest but where is the project you hint at in the title of the post. Ah, good question. Since this is a tool based at Harvard you can also see how unique you would be at Harvard. This suggested to me that looking at data from the school were I teach might be more interesting to my students. I asked my Director of IT (have I bragged about how awesome tech support is at my school lately) and a short time later I had a nice comma separated list of gender, birthday, and zip code for all of the students. No more personally identifiable information than that. image

A little bit of coding and I had my own data tool.

That’s when I decided that I had a possible assignment for my students.

I think that students are more interested in projects that are personal to them. Looking at data from Harvard, as fascinating as that could be, is probably not as appealing to a student as data from their own school. They should be able to find themselves in the data. I hope they’ll want to see what they have in common with others in the school.

Now I could assign all of my students the same project. That is what I usually do. I’ve been wanting more variety though. I don’t want one student to solve the project and just share it with their neighbors. A little help, a few pointers, that’s ok but not the whole thing.

For this exercise I decided to try something new (to me at least) and offer a lot of options. They’re all the same basic logic and require the same basic “tools” but there are enough different to confuse a student who copies without understanding. At least I hope that is the case. So I gave options:

  • How many males is a particular zip code
  • How many females in a particular zip code
  • How many males born is a specific month
  • How many females born in a specific month
  • How many males born is a specific year
  • How many females born in a specific month
  • How many people from a specific zip code were born in a specific month
  • How many people from a specific zip code were born is a specific year
  • How many people were born on a specific day (same exact day, month, and year)
  • What percentage of students are male and female
  • Which zip code has the most people (this is a tougher one for people who like a challenge)

None of this is hard (although one of my students insists I am not allowed to say anything is easy) but I just want them to have a little practice problem solving with arrays before we move on to a new topic. I am not allowing students who sit together to do the same exercise. Eventually I want to assign everyone their own unique variation. IF this works out I will start trying to think of similar little exercises that can be just different enough for each student that they have to think on their own.

Anyone else do this sort of thing? Does it work for you? Does it just sound crazy? Yeah, grading will be interesting. Any other concerns?