Computer Science Teacher
Computer Science Teacher - Thoughts and Information from Alfred Thompson

June, 2011

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Programming is for Girls


    Fair warning: Some gross generalizations and exaggeration for emphasis follow. But some valid points I think.

    I wrote my first computer program over 35 years ago. There were more women in the field back then. Not as many as their were earlier in the history of computers though. Programming was a woman’s job. The excitement, the glory, the theoretically “hard part” was in the hardware. So was the money. Computer hardware cost a lot more than computer software. Even in the 1970s when one of my professors told me that one day people would spend more money on software than hardware I was not so sure he was right. But of course he was. Good thing for me and my career. But as the money moved into software women were pushed out of the field. This was not a good thing on many levels.

    When I was a student I went to a really conservative university – girls had curfews but boys didn’t. It was a long time ago. The boys tended to spend a lot of time “after hours” in the computer center working on their projects. And during hours as well. The girls not so much. They spent less time in the lab and somehow seemed to always get their projects in on time and to get good grades. In fact they got as good grades as the boys who seemed to live in the computer lab. Weird no? Perhaps not. Also in my first job out of college, mid-1970s, there were a lot of women writing code. Not quite as many as there were men but close. And the women were older, mostly married with kids and at the end of the day they easily left their work behind. And they met all their deadlines with a seaming ease that I sat in wonderment of. What was up with that? I have a theory of course. We, in the west at least, socialize women to plan and men to, well, not plan as much. Think about a high school prom. Planning for the boy means remembering to buy a ticket, perhaps organizing a Tux and showing up on time. For a girl, a whole lot more. Just the day of the prom there is scheduling when the hair is done, the nails, perhaps the makeup, where in the mix does one actually get dressed. And oh by the way she probably made sure the boy got the tickets and his tux.

    This post was inspired in part by an article from Stanford (Researcher reveals how “Computer Geeks” replaced “Computer Girls”) and there is a quote from Grace Hopper that I find most interesting

    As computer scientist Dr. Grace Hopper told a reporter, programming was “just like planning a dinner. You have to plan ahead and schedule everything so that it’s ready when you need it…. Women are ‘naturals’ at computer programming.”

    Naturals? Maybe or maybe not. But we do force women at an early age to plan. The women I went to college with and the women I have worked with in programming jobs were all planners. My wife was a professional programmer for a number of years. Her programs pretty much always worked the first time. She was not interested in debugging. She was interested in getting things to work the first time. And so it goes. When I was teaching I saw a lot of boys (not all but a lot) programming by the “ready, fire, aim” method. Start throwing code together, check it, fix it, check it, check what the result should be and fix some more. Bug? Throw in some code and see if it fixes the problem. Girls did not follow this pattern as often. Think things out, understand the problem, plan a solution, code. test, hand in and go on with their lives.

    Some days when I listen to debates about computer science vs. computer engineering I wonder if the solution is just to get more women back in the field? We are seeing tools that are designed to teach and interest, interest perhaps being the more important thing, young women in programming. The man who got Kodu rolling has a daughter as do several of his team. It is no accident that the graphics are girl friendly (while not turning young boys off either). Alice has been used, especially story telling Alice, with good results with girls. Young girls seem to love building robots with Pico Crickets among other tools. I have heard about a lot of middle school girls getting into programming through FIRST Lego league as well. The thing may be to not scare them away later.

    Either way I think we need them. I do not think our male dominated ‘throw a lot of code against the wall” sort of design works. It may get us there eventually but it is wasteful of time. money and energy. Oh girls are not the whole answer. There are girls who “program like boys” and boys who “program like girls” but are we getting the right mix? I don’t think so. And besides we clearly don’t have enough top programmers (Computer science grads fielding 'multiple job offers')  and if as many girls as boys went into the field we’d be a lot closer to having what we need. Plus we know that mixed gender times are more creative, productive and (at least in my opinion) more fun to work in.

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    So You Want To Teach Your Kids To Program?


    In all honestly I tend to avoid Slashdot. Oh I scan it for the news from time to time but I work hard at avoiding the comments and avoid the Q&A forums. Why? The heat to light ratio is horrible. For every person who adds a solid, thoughtful informative reply there are several who just want to attack the person who posted (especially if it is a request for information), several who want to attack the solid, thoughtful replies, and a whole bunch of people who just want to suggest, with a pretention of expertise, some answer that is just totally ridiculous. I get stuck looking though when someone sends me a link to a topic I know something about and that is important to me. This happened this morning. A friend sent me a link to this post of the forums:

    Ask Slashdot: Good Homeschool Curriculum For CS??

    Posted by timothy on Tuesday May 31, @07:01PM
    from the ok-now-track-the-family-budget dept.

    dingo_kinznerhook writes "I grew up in a homeschooling family, and was homeschooled through high school. ( I went on to get a B.S. and M.S. in computer science; my mom has programming experience and holds bachelor's degrees in physics and math — she's pretty qualified to teach.) Mom is still homeschooling my younger brother and sister and is looking for a good computer science curriculum that covers word processing, spreadsheets, databases, intro to programming, intro to operating systems, etc. Does the Slashdot readership know of a high school computer science curriculum suitable for homeschooling that covers these topics?"

    There are several comments calling the poster a “troll” because clearly “they don’t know what computer science is” and a bunch of posts critical of homeschooling in principal. Also several people criticize the notion that the Mom is qualified to teach computer science. It takes a while to get to some posts that actually respond in some fashion. And there are a couple of posts that suggest specific books which is good. And replies criticizing those suggested books. But oh boy are there some “interesting” suggestions on how to start. I’ll get to some of those in a bit. But first, I did (against my better judgment) leave some suggestions of my own. I have already heard the usual Microsoft bashing which seems to be required on Slashdot so I’ll probably not bother to go back and read it again for this post.

    For younger kids there is a sort of progression. I like Kodu for 7 to 10 year olds. There is some curriculum, not much really but you don’t need a lot, on the web site in the Classroom Kit tab. Kodu is good for getting kids to think about programming or rather, conceptually, the idea that they can tell the computer what to do, have some success and learn as they play how to do planning, storyboarding, critical thinking, problem solving and even be artistic and creative. And its fun.

    After that I see three tools that I like for different things: Alice, Scratch, and Small Basic. Alice is from Carnegie Mellon, Scratch from the MIT Medial Lab, and Small Basic from Microsoft.  There are whole books on Alice. Hit up and take a look. There is also which is all about instructional resources. For Scratch besides the main Scratch web site with its forums and project sharing there is ScratchEd with its resources. And there are other Scratch sites as well. The Scratch BYOB project (out of UC Berkley)  allows for some really powerful expansion of Scratch for older students – up through college.

    While Alice and Scratch are drag and drop blocks of code as is Kodu, Small Basic is a more traditional programming language. I do like the idea of getting to “real code” early in the process. The Small Basic page on Kid’s Corner has a curriculum for Small Basic. It’s pretty complete and more resources are coming all the time. Lynn Langit and partners have a site with curriculum and videos using what they call design recipes at Teaching Kids Programming which is also well worth checking out.

    The Beginner Developer Learning Center Kid’s Corner has long been a site I recommend for home school parents and young people who want to learn on their own. There are a number of kid’s courses for programming (Code Rules which his also used in a lot of after school programs), Creating Your First Web Site Using HTML, Intro to Programming Windows Apps, and Introduction to Web Design. All free and all using software that is available free. And there is more. Spending some time looking though the BDLC Kid’s Corner will turn up all sorts of great possibilities.

    Now just in case you got this far because I said I would address some of the other suggestions I read in Slashdot, here you go.

    Someone always suggests start them with Assembly language. This works for some people. However if it were likely to work for your child they would 99% of the time gone off and learned all this on their own and would be teaching you. Any one can learn assembly language but few have a good experience with this as the first language. it is sort of like telling someone who wants to be a sprinter that they should crawl with leg weights on before they start walking and then running. Start with something that will be fun and create a good experience and return to Assembly language later on if at all. Not everyone even needs to know it.

    Someone also always suggests “give them K & R C” as is someone who needs help finding curriculum even knows that this is the C programming language as documented by Brian Kernighan and Dennis Ritchie many years ago. It’s a great book but it is not, in my opinion, the best way for a home scholar to start. For one thing the C language has more than the average number of ways to bite a beginner in the rear end than most more modern languages. Also you will wind up with doing all your applications as console applications (white letters on a black background) and students are going to wonder when they can write programs that look like the ones they actually use. Since I believe the first course should be about fun, achievement and feeling of success almost as much as learning the most important and basic concepts I do not recommend K & R C as a first language.

    Someone on Slashdot recommended an Apple II and an assembler and languages on that. Sounds like someone thinks everyone would learn the way they did. It worked for them right? On the other hand Small Basic will give you all the ease of use the Apple II did and give you a good simple IDE, Turtle graphics (hey remember Logo?) and an easy upgrade path to Visual Basic when a student is ready to go pro.

    It is important to remember that the state of computer science is evolving. There are better tools – better IDEs, better languages, better projects, better everything- then there were even a few years ago. Not everyone has to learn the same way everyone who came before them does. People learn at different rates as well. Some people may start with Alice or Scratch and that may be all they ever want to do. Others will decide they want to make serious games or applications that they can sell. Those students will want to move on to languages like Visual basic (bit the graduate button on the Small Basic IDE), C# and XNA (I’ve got lots of links to XNA educational resources on this blog) or functional programming using F# (Learn F# online at Try F#) There are lots of resources for all of these tools.

    But please, if you are going to ask someone for advice on teaching programming, please make sure they actually have some experience teaching people other than themselves how to program. For the student’s sake!

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    What is Digital Literacy? And is it enough?


    Someone on twitter sent out a link to an article/video from the BBC called Are children becoming 'digitally illiterate'? that got me thinking. What does it mean to be digitally literate? Are our children digitally literate or not? In fact, if they are not now, were they ever? It depends on what you meant by “digital literacy” of course. For many people that means able to use the computer and its applications. Things like the Office Suite and perhaps web browsers and some other application. Is that it? And that is where the debate begins. The article I linked to above talks about digital literacy as being a function of knowing how to program. (Near the end they show young students learning about programing using Kodu BTW. I thought that was cool.) The heart of the article, especially the print part, is about a small inexpensive piece of computer hardware to use for teaching programming. Frankly I am not sure that lack of availability of hardware is a problem in the developed world. In the developing world it is but so is a shortage of good infrastructure, good Internet, good teachers, and just about anything else you need. But that aside, let us come back to the question of digital literacy.

    The first thing that many bring up is the difference between digital literacy and digital fluency. A difference that is lost on many and of great importance to others. Fluency though clearly indicated a higher level of ability. There is a difference between someone who can read – is literate – and someone who is fluent – who can read well with a wide vocabulary. Both of these terms, in the digital context, seem to focus on use of applications though.  I think that most people do see computer literacy and computer fluency in terms of applications and their use with programing being some next level. The debate here becomes whether or not that next level is needed or for what percentage of the population is it needed? While we are at it, perhaps we need a new term for a next level that includes knowing how to program? Or should some knowledge of programming be required to be considered fluent?

    I lean towards programming being required for fluency but not literacy. I do think that students of the sciences, and I include the social sciences like sociology, Psychology, and political science in this category, should be fluent and that fluency should include programming. I recently linked to a post by Gail Carmichael (@gailcarmichael) called - Why Computer Science is Relevant No Matter What You're Teaching which is just one of many arguments I have read that explores the necessity of programming, or more completely computer science, for students of most if not all academic disciplines. Several people I read are calling computer science the “new math” because of the critical role it plays in science and engineering today.

    Computer science is fundamental. As an engineering student (in high school no less) I was required to take drafting. It was not enough to be able to read a drawing (literacy) but we had to be able to create them (fluency). Today for an engineer, a scientist, a business person to be able to use applications is literacy but for a professional we expect fluency. Not that we expect them to all write their own programs, though many of them will, but that we expect them to understand how they work, what their powers and limitations are. One really should have some knowledge of programming and computer science for that.

Page 1 of 7 (21 items) 12345»