Additional profile information on Alfred Thompson at Google+
I spent the latter part of last week in Palo Alto, California working on the CS 2013 project. There are some pretty amazing people involved in this project (CS 2013 steering committee) and I learned a lot in the various discussions we had around computer science curriculum. Since we are talking about what absolutely positively much be part of undergraduate computer science curriculum it is not surprising that core concepts are an important part of the discussions. One statement that was made was that “abstraction is at the core of computer science.” This is quite true of course but it struck me that maybe we don’t talk enough about this early enough in high school computer science courses. It is an important vocabulary word but do we really talk about what it means at a deep level? Sometimes perhaps but always? Not so sure. I’m pretty sure I never spent enough time on it.
What do we mean by abstraction? There are some interesting definitions floating around that can be used for starters.
Making all of this clear to students can be tricky especially when we introduce abstract classes. So what is the simple version? I see abstraction as using symbols to represent real things. In other words, we model the real world using data (numbers mostly but also images and words) so that we can manipulate them using the computer. We can’t generate real wind or real buildings in a computer to see how buildings react to different speeds of wind but we can model the effects. Push buttons on the screen don’t actually depress but we can model that behavior by using the right abstractions. Abstraction is a tool for acting on imaginary objects that represent real things.
In a sense object oriented programming and graphical user interface programming both simplifies and complicates our discussion of abstraction. On one hand the GUI objects make it easy to model real work objects of specific types. At the same time, for some students, it makes it harder to understand models or abstractions of items that are not visible on the screen. Personally I find that properties, as implemented nicely in C# and Visual Basic, do help to picture the abstraction – the way the software object represents the physical object it models – of various real world objects. Your mileage as they say may vary of course. The fact that objects have properties and methods is what enables us to model real world objects. At the same time making the transition from physical objects to numbers that somehow represent those objects does not come naturally for everyone. It is important however that they do make the transition. This is at the heart of how computer science works.
I’m trying to work out in my mind how to involved abstraction both earlier and more consistently into a first programming course. My gut tells me that in the long run that would make understanding more of the concepts easier. Do any of you out there have particularly good discussion points, resources or lessons learned about teaching abstraction to share? Any textbook that does an especially good job of it? Or perhaps an operational definition that you find works for you and students?
Abstraction is a core concept in computer science. On the other hand it is a bit abstract for some students. (Sort of pun intended.)
I’m home for a while now. A month anyway. I’ve made 6 trips in the last 6 weeks and only one of them for vacation. So it will be nice to be home for a while. Maybe I can get some code written – Kinect and Windows Phone are on my agenda. I’ll blog about any interesting code I write so stay tuned for that. For today is is time for my Monday wrap up of interesting links from the previous week. I have more than usual today so please read though them all. Hope you find something of value here. I’m starting off with some great work by some of my favorite teachers.
Hélène Martin had a great review of the keynote speakers from last month’s CS & IT Conference at The pundit and the practitioner (CS/IT 2011 keynotes). Honestly she captured a lot of my feelings but expressed them much better than I could have. That sort of thoughtful post is one reason I subscribe to her blog.
Pat Yongpradit, yet another inspiring teacher, (twitter @MrYongpradit) has been active lately as well. First off an interview with Jane McGonigal (@avantgame), world-renown game designer/researcher in which Pat asks about Gameful Education. It’s a great interview and it inspired Pat to write a post called "Gameful Education: Playing School as a Game" To finish off Pat’s trifecta is an article at the Huffington Post called Innovative Educators, Innovative Relationships - What goes unnoticed often matters most!
Garth Flint had a great post this week as well. He talks about Why schools should offer CS and other notes
The people at HP Code Wars, probably the largest high school programming competition in Texas, (twitter @HPCodeWars) posted a link to Even engineers and tech types still need "soft skills" from the Houston Chronicle. A lot of students in STEM fields don’t realize how important soft skills are which makes this a valuable article.
Interested in security? Think you are good at it? If so you may be interested in this from Microsoft - Microsoft Kicks Off $250,000 Security Contest
Are you using C++? If so you will want to visit the C++ Development Center - A whole center dedicated to Visual C++ Development Tutorials - for free!
One of the great opportunities for students involved with this year’s Worldwide Imagine Cup was a panel discussion on entrepreneurship with some leaders in the field. You can read about it at Entrepreneurship 101: VC Panel Tells Entrepreneurs What it Takes on the Microsoft Tech Student blog.
Ray Fleming lists a pile of Microsoft technical e-books now free for Kindle and iPad. These books were already available in other soft copy formats but if you use Kindles or iPads you may find this particularly useful.
One of the big “news” stories recently was a report of a survey that alleged that users if various web browsers were used by people of different intelligences. It turns out though that the Internet Explorer IQ Story Was A Hoax A great lesson here is checking your sources before accepting reports as true.
Have you been making plans to use the Kinect SDK? If so check out the Kinect for Windows SDK beta 1 refresh - Get the latest updates to the Kinect for Windows SDK beta.
Here is a different sort of story. We read all sorts of stories about students leaving college early to play football professionally. Here is a story of a college football player who left football early to take a job in industry. Tech's Albert Rocker leaves early for Microsoft Welcome to Microsoft Albert!
Windows Phone Student App of the Week: Cookie Monsters First of a new blog series by one of our high school interns
I recently found out (thanks to the SIGCSE mailing list) that Dr. Jeremy Kubica, software engineer and manager at Google, has been putting together a set of examples of CS concepts written as fairy tales. From what I understand, his goal is to provide students an overview of each concept before getting all technical. I’ve only read one so far (a quirky tale of a king trying to get his knights to use a binary search to find a rampaging dragon) but I really like the idea. He’s written a bunch of storied that cover a wide range of topics from algorithms and data structures to general programming concepts. There is discussion in the comments after some of them as well.
I love this idea. I can see using these stories in class. I can also see asking students to write their own stores, perhaps in difference genre, to illustrate concepts as they understand them. Putting a concept into a non-computer related story is likely to help student extrapolate the concept into new and different areas. Thinking out of the box often stop with a story. I know that a lot of universities are getting more interested in writing assignments in technical disciplines. I think that is a wonderful idea because communication is more and more important all the time. These sorts of stores allow for some cross curriculum work with English/ Creative Writing classes. And writing these could be fun as well.