Thursday, August 22, 2019

What I Want from Computer Science Education Professional Development

The CSTA 2020 Call for Proposals is out and as usual it has me thinking.   Two questions come to mind. One is, what can/should I propose to present? The other question is what do I want to learn? I think I have been to every CSTA conference (since it was the CS & IT conference) so I have attended a lot of sessions. I’ve presented quite a few times as well. So I have a lot of history to think about.

I don’t currently have any sessions or workshops I want to present. I keep asking myself is that is because I am not working hard enough to innovate or create new ideas. I suspect that a lot of people doubt if they are doing anything special enough to present. Some of those people are right but a lot of them are wrong. So I need to think about that.

I’m thinking more about birds of a feather sessions to propose and looking at my projects to see if I have something really nifty for the nifty project session. Birds of a Feather (BoF) sessions are very interactive and are great for refining ideas. And nifty projects are, well, they’re nifty.

What do I want to see presented? That’s actually hard these days. Why? Because my brain is already full of more ideas than I could learn or teach in a lifetime. Artificial Intelligence, cloud computing, Internet of Things, game development, virtual reality and on and on. Content! There is a lot of possible content out there.

What I really want to learn is how to teach better. I’m doing some reading (Computer Science Education is my current read) and I’ve been learning a lot from Mark Guzdial’s blog for a while. If you ever get a chance to hear Mark talk about how to teach computer science GO HEAR HIM! There are a number of his talks on YouTube BTW.

Lots of people want to promote a new tool (software or hardware) as a silver bullet for teaching. I’ve heard enough of them. Given a few myself. The more I teach though the more I think there is more to becoming a better teacher than a cool new robot, a fancy new IDE, a great new “educational toy.” or what ever.

Teaching is ultimately about establishing a relationship between teacher and student. It is about communicating well and sharing passion. That’s what I want to learn how to do better. And if you have research to back up what you are teaching about how to teach I really want to hear from you.

Wednesday, August 21, 2019

Vicki Davis Interviews Alfred Thompson

Over the summer Vicki Davis interviewed me for her Ten Minute Podcast. Vicki and I have been friends for a number of years and it is always a pleasure to talk with her. We talked about a number of things including Project-based learning. Passion-based learning. Problem-based learning.


Sunday, August 18, 2019

And So It Begins–School year 2019 2020

Tomorrow (Monday) I will meet the new freshmen in my study hall. And I’ll finish getting my room ready for the new school year. First day of real classes is Tuesday. And I am not as ready as I would like.

I have a day by day plan for every day of the semester (even the year for my AP CS Principles class). Lesson plans last until they run into actual students so there will be adjustments. There always are. It’s my 5th or is it 6th year teaching honors programming so that is more settled than anything else. I still make changes as I go along because not every class in the same as any other. And who wants to do the same thing year after year anyway.

It’s my third year teaching AP CS Principles and I am making big adjustments in the schedule over last year. I am hopeful that I’m going to get it better this year but who really knows.

My third year for teaching Mobile Application Programming and I am switching from AppInventor to Thunkable. AppInventor has given me a lot of issues with the emulator and most of my students have iPhones and Apple is dragging their feet on allowing AppInventors iPhone software. Thunkable already works with iPhones, though without support for some features I would really like. Plus it seems to connect to phones more reliably. We’ll see how it goes. I’m adapting project ideas as I go along. That’s not completely new but it is not without risk.

At least I only have three preps. Last fall I had four. I also have more free periods as I am teaching a reduced load (at my request) and that should help a lot.

Are you ready? Have you begun already? Let’s do this thing!

Wednesday, August 07, 2019

Book Review: The Creativity Code

I’ve been reading a lot about Artificial Intelligence (AI) this year. Several of them have been pretty scary. It was recommended that I take a look at “The Creativity Code: Art and Innovation in the Age of AI” by Marcus DuSautoy. It was a good recommendation. This book is different from the others I have read. Or tried to read. It’s focus is not on business or about intelligent weapons. The focused as the title suggests is on creativity.

The book discusses how computers, or rather AI software, is creating art, music, and new ideas in mathematics. The author is a renowned  mathematician so the sections on using AI in math, developing proofs for example are especially well done. One unexpected benefit of the book for me was a new appreciation for what mathematicians actually do and why they find some year joy in the field.

The author shares some concerns about how AI might make mathematicians like himself obsolete. In the long run though he sees a place for human creativity in the world. AI routines are still being trained by people. They do go beyond what they are specifically trained but have to start with that training. Well, usually anyway. Will that change? Let’s just say that there are still a lot of unknowns. AI has moved in ways we haven’t expected already so there is that.

If you are interested in learning about AI in art (computers creating works in the style of famous artists for example, music (using existing styles or creating new ones), writing (fiction or non-fiction), mathematics, and several other fields we don’t usually associate with AI this is a good book for you.

It’s an interesting and usually easy read (I confess some of the math was a little deep for me). It an in interesting look at AI. Recommended.

Thursday, August 01, 2019

What Programming Concept Do I Use?

I’ve been programming a long time. I wrote my first computer program in 1972. I think the parents of some of my students were not even born yet. So it’s hard to remember what it is like to be a beginner. Late last school year it finally occurred to me that a lot of my students understood concepts in theory but were having trouble knowing which concept to use to solve problems. Honestly this was having trouble sinking it with me because this stuff is so obvious to me.

Lauren Margulieux helped me out here with her recent blog post I’ve been a Computing Education Researcher for 8 Years and just took my First Programming Course: Here are 5 Things I Learned. This is a must read post for anyone who teaches beginners. One of her five things was “Deciding which programming concept to use was harder” Just what I had been thinking about lately. I think her experience, background, and ability to self-analyze her own learning helped her to see  what I think are common beginner issues that I have had trouble seeing myself. Maybe other teachers have trouble seeing these things as well. Or maybe just me.

Suffice it to say, I have to really think about how to help students over these hurtles.  Helping students to see when to use various concepts is my first priority. Stories maybe the answer. Can I tell stories about the sorts of things various concepts are good for. I do some of that already but maybe more examples will help. It’s worth a try.

Tuesday, July 30, 2019

Too Little Time and Too Many People

Four years ago I was at a two day informal gathering of teachers. As much as I really enjoy conferences like CSTA, SIGCSE, ISTE and others there was some real magic about an informal gathering of about 12-14 teachers who cross age groups (individually and who they teach) and curriculum subjects. It was awesome. I really want to do it again.

Teachers don’t get enough time to share ideas informally. We have conferences and there are opportunities there but they are often one way conversations. We have sit and get sessions. We have panels where a chosen few share ideas in answer to pre-planned questions. None of this is bad but sometimes it doesn’t feel like enough. Unconferences are different and usually a lot more interactive than traditional conferences and I like them as well.

Perhaps the problem for me is a bit of FOMO – fear of missing out. There are too many interesting things going on. Too many side conversations No one can take it all in.

A lot of people like to talk about the hallway track at conferences. These are the conversations that talk place in hallways, spaces outside of conference rooms, at bars or restaurants, or just about any place not in a formal session. They take place because attendees often have little real life contact outside of conferences and yet share similar issue, problems, or other interests. The gathering I attended four years ago was basically a two day hallway track.

The problem with hallway tracks are conferences is size. By that I mean that some conversations would be better if there were more people involved and some would be better if fewer people were involved. Take conversations at dinner for example. You can get a dozen people or twenty people all at one table. Realistically you can talk to the people on either side of you and two or three across the table from you. So there are multiple conversations that start, run their course, and then reform. Now these conversations can be great and I love them. But FOMO rears its ugly head – what is that conversation going on at the other end of the table and should I be in that one? Silly perhaps. But I suspect I am not the only one who feels this way.

There is probably an optimum size that lets everyone talk, everyone listen, and makes everyone feel involved. The setting and seating arrangement probably has an impact. Chairs or tables around a circle allows to a lot more people involved than a long single table or small groups standing around. Someone has probably done some research on this.

Perhaps book clubs can be a model? In any case, I think teachers could really benefit from small in number but longer in time chances to share ideas. We can learn a lot from each other.

Links to the blog posts I wrote about that gathering a few years ago:







Friday, July 26, 2019

Big Complicated Programming Projects

Ria Galanos has a wonderful blog about her experiences moving from the classroom to a life as a professional software developer. It’s been a long time since I developed software for a living and her posts are bringing a lot of memories back. A recent post (Putting It All Together) talks about understanding a large code base. This is something professionals have to do often. They very seldom write code from scratch. usually they work enhancing, correcting, modifying, or otherwise working with large existing code bases. Understanding these complex  Ria talks about the Advanced Placement Computer Science A course which used to have a case study, a larger piece of code that students had to learn, understand, and modify. She wonders if bring that back might be a good idea to better prepare students for industry.

There are some interesting comments from experienced educators on that post. Mike Zamansky posted a follow up post (Big Code And Case Studies) where he talks in favor of large projects at the right time and that AP CS A might not be the right place for the type of case study required.  or at least not a specific and mandated case study that everyone uses.

We’re not trying to turn out professional software developers in high school. That is important to remember. There is a lot of value in learning how to understand large code bases though. I think there is value in it even for someone not planning on becoming a professional software developer.

So much of how we teach beginners lacks context. We focus on little bits is a sort of isolation. The projects we assign are simple and small. In some regards they have to be. The problem is that without real context understanding how things fit together is limited.

I’ve tried a number of things to give students involved in larger projects. I have given students larger, more complicated projects written by others. There are any number of professionally developed “samples” that are more complicated than the average beginner will write alone. I’ve also tried having students work in teams with different modules assigned to different students in the team. I’ve seen mixed results with both.

The trouble with large samples is that there is limited time to understand the code by the time students have enough base knowledge in a single semester course. Similarly in a one semester course there are limits to how complex a project student or group of students can build before time runs out.  APCSA is usually taught as a year long course and would seem to lend itself to either of these ideas, and the case study was a larger code base, there are still a lot of concepts required by the curriculum that can place time limits with some student bodies. This is especially the case when APCS A is a first course.

I’m starting to think that high schools need a sort of CS capstone course to follow up after AP CS or other foundational courses. Not ever student will have schedule room but I think that a lot of students who really fall in love with CS will find a way. Some schools will (or at least could) build at sequence that would include such a course. This course would allow students either individually or in a small group spend a whole semester (a year maybe) developing one large project. I think this could be a chance for students to work on learning a new (to them especially) technology.