Wednesday, October 14, 2020

What If We Asked Students To Write Textbooks?

A professor friend on Facebook posted that a student emailed him to say that they textbook the were using was “crap.” I suggested in jest that he asked the student to write a better one. That’s pretty tough since how do you write a textbook about something you are learning as you go? (Can be done. Is painful. Don’t ask how I know this.)

The exchange got me thinking though. Supposed we asked students to write a chapter for a mock textbook? Or perhaps asked them to write step by step instructions for completing an exercise assignment. After it was covered in class but perhaps in lieu of a test.

I think it would be interesting to see how students explain concepts. Have they write to explain things to people their own age. How would they explain things? What words would they use? What examples would they give?

They say that to really understand something you have to be able to explain it to others. 

Somehow I don’t think most students would like this exercise though. Of course we already ask students to do things they don’t like – taking tests being one of them.  I do think that it would give us insights into what they do understand and how they understand it. Or misunderstand it as the case maybe.

Anyone want to try it?

Monday, October 12, 2020

Thinking About the Algorithms in Our Lives

My wife and I use these fitness trackers, ours are made by Garmin, to keep track of our activity during the day. Each day the devices give us a goal for how many steps we should take that day.  The goal goes up or down depending on how many steps we did on the previous day. I think. Maybe.

Being the computer guy that I am I keep thinking about how the algorithm actually works. Is it a simple algorithm based on some sort of average or does it have some amount of smarts? Does it take several days activity into account or just the previous days? Like so many things in our lives the algorithm is completely opaque to users.

Google Page Rank, the algorithms that run on the computers controlling our cars, and the software John Deere uses to control the equipment they make. (see article linked below for way this opacity is a problem for some) are all secret. Why?

Well, various companies have various reasons for keeping their algorithms secret. Competitive advantage is the reason for some. For many it is to keep people from “gaming the system.” Google, and other search engines, don’t want people to find ways to get unfairly high placement in searches. I suspect some of that is involved in my Garmin’s secrecy. For others, it is about keeping control of the how the systems them make are run – often for the sake of safety. That’s why many companies don’t want their software “messed with.”

How good or bad this is for the consumer is quite up for debate. There are solid arguments on both side. Arguably, the right thing depends on the situation in many (perhaps most) cases. These are issues we need to think about going forward. People who write software and create algorithms have a responsibility to make the right decisions about secrecy or openness. The decisions have to be about more than just money as well.

Do you discuss these issues with students? I think we need to do so.

Farmers Fight John Deere Over Who Gets to Fix an $800,000 Tractor

Sunday, October 04, 2020

Artificial Intelligence, Humor, and Appreciation of Beauty

Last night I started re-reading Heinlein’s The Moon Is A Harsh Mistress.  It’s an old book, written in the mid 1960s, so there are some old ideas about computers and computing in it for sure. There is some hand waving about how AI is done and how the computer, Mike or Mycroft Holmes, becomes self aware. It is fiction after all. The computer is trying to understand humor and a human friend is trying to help. One way he is helping is to get lists of jokes and report back on which jokes are funny, which are funny once, and which ones are always funny. That sounds a bit like machine learning we see today I think.

In any case, even is the computer does understand humor at some level and is able to create jokes that people find funny does that mean it has a real sense of humor? Will it be able to laugh at jokes that are not in its system? I wonder.

This makes me wonder about other things. We know that AI has been able to write music that people enjoy and create art that looks like it was done by master artists. Is creating art or music the same as enjoying art and music? Maybe not. Now human artists “hear” music in their heads before they write it down or play it. Beethoven write music while he was deaf and so could not hear it being played.

I’ve been to a number of wine tastings. I don’t like wine. No matter how many times I taste it I just don’t enjoy the taste. Listening to wine experts talk about wine and tasting it myself I think (could be wrong) I could learn to identify the wines that wine lovers like. I don’t see me enjoying the process very much though. Understanding is not the same as enjoying. Is it the same for computers and AI? I think so.Recognizing beauty or humor or music is not the same as enjoying it.

The difference between humans and AI is that humans enjoy their creations. And they enjoy the creations of others. If we think about creating beauty as enough to  being human-like  I think we have a narrow view of humans. What do you think?

Thursday, October 01, 2020

MicroBlocks For IoT and other Physical Computing

Well, there is a new tool in town for programming micro devices like the Micro:bit and the AdaFruit Circuit Playground Express and many more! It's called MicroBlocks and was created by a rock star team with experience with creation of such tools as Scratch and Snap!. It’s pretty exciting for a number of reasons. One of them is the wide variety of devices it works with. Another is the Natural Languages it supports.

Live Coding is another interesting feature.

MicroBlocks is a live environment. Click on a block and it runs immediately, right on the board. Try out commands. See and graph sensor values in real time. No more waiting for code to compile and download.

And Multi Tasking.

Want to display an animation while controlling a motor? No problem! MicroBlocks lets you write separate scripts for each task and run them at the same time. Your code is simpler to write and easier to understand

I played with it a bit and it looks pretty intuitive especially for those with previous block programming experience. I made the mistake of trying it without having a device to use with it handy. I have several at home and so I’ll be trying them next week. But I wanted to get the word out so that if people want to try it over the weekend (yeah, I know you don’t have as much free time as you want) or have some students try it out you could.

Sometime next week I want to do a side by side comparison with MakeCode which supports several of the same devices. Some obvious differences are that MicroBlocks supports running the exact same app on different types of devices and that MakeCode has emulators. Since most people only use one type at a time and have physical devices the impact of those differences will be different in different environments.

We are living in exciting times!

Tuesday, September 22, 2020

What I miss and don’t miss about teaching

Fall has come and while students are back in school I am not. I’ve been reflecting a bit about that. I don’t miss getting up at 6 AM and driving for close to an hour to get to school. I don’t miss running my life by a bell schedule. I don’t miss grading, report cards, and other administrivia. I don’t miss classroom management issues.

On the other hand, I do miss interacting with students. I especially miss the interactions that take place outside of class. I miss the look, and sound, of students when they get a concept or when their program works – finally. I miss debugging student problems with programs or their project. Students are very good at finding ways to mess up a Visual Studio project. That’s the one big downside to using a professional tool. But I had fun putting things back together.

There are all sort of debugging issues that come up in the code. There is syntax issues (semi colon hide and seek anyone?) and logic problems. Both are fun little puzzles to solve. And I am sure there are still many that students have not discovered.

But the big miss is the students. I still think I retired at the right time for me.

I hope your school year is going well. I am following all sort of teacher/school things on social media and I know its not easy. Stay safe. And if you have a student program you can’t debug let me know.

Tuesday, September 15, 2020

Why Computer Science Teachers Should Read Books

Since I retired I have been reading more computer science related books. You may have read my book reviews on Humble Pi, Weapons of Math Destruction, or Computer Science in K-12. More and more I realize that I missed out on a lot of good ideas and information. Each of those books has given me ideas that I wish I had thought of a long time ago.

Currently, I am reading Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers. I haven’t gotten very far yet but the book has covered indexing of web pages, PageRank, and public key encryption so far. I’ve started the chapter on error detection. Pattern recognition, data compression, data bases, and more are yet to come. I’m really looking forward to data compression. Teaching AP CS Principles has built up an interest that I didn’t have before.

The indexing chapter is one I had read long ago. Many years ago I experimented with indexing. I wrote some code that indexed the Bible for me. The program was more general purpose than that but the Bible seemed like a good challenge. The program used a list of words and a text file of a book as input. It output a markup language file that worked with a product called VAX Document. VAX Document read the markup language, called SDML, and formatted a document including an index. I wish I still had the code so I could adapt it for some other backend processors. Sigh.

In any case, the idea of creating and assigning indexing projects has some appeal for me. I can see this being interesting for students especially in the context of understanding search engines and more involved search queries.

Other chapters include a lot of information that would be helpful in understanding and explaining various important concepts. And maybe inspire still more programming projects!  So I do recommend this book to AP CS Principles teachers.

PS: More of my book reviews at http://blog.acthompson.net/search/label/book%20reviews

Saturday, September 12, 2020

How Are You Doing?

We’ve now finished the first week after Labor Day and at least in North America almost everyone is back to school. That may not mean physically back in a bricks and mortar school building though. My grandson is starting kindergarten online this week. I didn’t see that coming a year ago. Teachers, students, and parents are adopting to all sorts of new ways of teaching and learning. 

I confess to being happy I am retired but I am also sympathetic so those still teaching. I do worry about you all. I hope you are finding ways to take care of yourself.

My son is an elementary school principal and his summer was as busy, if not more so, than during the middle of the school year. Administrators have been having a tough time so have some sympathy for them.

Somehow many people seem to think this is all easier for computer science teachers. This is not the case of course. Yes, we may be more comfortable with computers than some teachers but the tools for teaching online are new to us as well. And helping students with computer problems is as hands on as helping students in art, or math, or English. Maybe more so at times.

I think we’ll see some tools appear and older tools will see new features develop Social media is full of teachers talking about online IDEs for example. I’m still not a fan but that’s me. I still like the idea of using virtual machines on a powerful server for teaching computer science..  No doubt a lot of people will be trying new things. If nothing else, we’re going to learn a lot this year about new tools for teaching CS.

And that brings me to a final point, have you thought about sharing what you are learning with other computer science educators? The call for proposals for CSTA 2021 is out. Even if you are learning a lot of what doesn’t work you are learning some things that do work. We’re all better off if we all share what we are learning. Please consider a proposal for the conference. If you have questions about what is involved let me know. I love presenting at CSTA conferences. It’s the best audience you could have. Seriously!