November 24, 2009
Real Code is Messy
Reading John Harrison's blog of November 3 got me thinking about what I am trying to teach my students in my third-semester (university) course about the development of large software systems. They seem to have a good handle on the nuts and bolts of software. Down in the weeds, one statement at a time, they do ok. It's the bigger picture that is harder to explain. I have a cartoon clipped from the newspaper years ago of a guy in a lab coat pacing back and forth in his office. In the last frame of the cartoon, "Writing," he says, "is nature's way of showing you how fuzzy your thinking is."
A large part of the business of writing software is getting one's thoughts organized, and then transforming into software those organized thoughts about the management of the information at hand. Human beings are fallible organisms, so their software objects need to be made as simple as possible to minimize the chance that mistakes will be made. We encapsulate information into instances of objects so that all the data handling for a certain "thing" is done in one place, and no code except the local code in the object can manhandle that data. Just as a naval officer expects commands to be repeated back to verify that they have been understood, we expect software modules to report both success and failure, and we organize software so that we trust no part to be "obviously correct" unless we have tested it and found it correct.
But with programs, it is indeed hard in a school setting to give students real problems. The sorts of things that can be dealt with in a class setting are naturally going to be smaller, less complicated, and designed so that most students can actually finish them. Real code is not usually like this. It's big, it's messy, and (unfortunately) it can often be as unorganized and unmaintainable as we try to teach students not to be.
Perhaps the answer is that we must bring students to the edge of failure by having them read and understand some large programs that are well written, and having them read and understand some programs that are not so well written. We hope that they will learn how to write by reading literature. We can't expect them to write software to solve large problems, but perhaps they will learn about solving problems with software by seeing how it's done and analyzing that code. If they see how others have reduced the fuzziness in their thinking as they organize software to solve a problem, perhaps they will learn how to do it themselves.
Duncan Buell
CSTA Board of Directors
Posted by cstephenson at 12:06 PM | Comments (0)
November 14, 2009
Just What is Computer Science?
Just what is computer science? Is it a science course? Is it a math course? Is it a business course?
These questions pop up more frequently now that states are requiring four years of science and math. In Texas, the AP CS A course counts as a math and is offered by both the math and business departments but this has raised questions about who can teach AP CS A. In Georgia, AP CS A is offered in the business department. Several years ago there was a move to allow only business teachers to teach it, but I asked that all certified teachers be allowed to teach it, and this was approved.
When Georgia started requiring four years of math and science, some of the faculty at Georgia Tech asked that AP CS A be allowed to count as a math or science. As of fall 2008 it was approved that AP CS A could count as a science course. However, this fall the Georgia Board of Regents removed it from the list of approved science courses, but they had not done a formal review of the course. Georgia Tech asked for a formal review of the AP CS A course and we just learned that the Board of Regents will allow the AP CS A course to count as a math or a science course!
But what is computer science, really? Some people claim that it isn't a science, even though the title includes the word science, since it isn't a study of the natural world like biology, chemistry, or physics. But inheritance, which is one of the central ideas in object-oriented programming, was first formally used in the scientific classification of plants. And, these days all of the natural sciences are becoming more and more dependent on computing. One famous biologist has said, "that biology is becoming a branch of computer science".
Some say computer science is a branch of applied math. And certainly many of the people who created and programmed early computers were mathematicians. And, many mathematicians now depend on computers in their work. Computing does include many mathematical concepts, but it also covers many other concepts such as how to design and build computer systems.
Some say it is a type of engineering. My master's degree from the University of Michigan was from the computer science and engineering department. Certainly the creation and testing of software systems includes engineering concepts. But, again computer science isn't just engineering.
Certainly computers are used in business. One reason that Wall-mart has succeeded is that it gathers sales information from all of its stores every night and uses this data to improve operations and lower costs. Nearly all businesses are dependent on computers.
I think that the real truth is that there are connections between computer science and many fields such as science, math, psychology, engineering, and business.
What do you think?
Barb Ericson
CSTA Board of Directors
Posted by cstephenson at 12:58 PM | Comments (0)
November 12, 2009
What is Computational Thinking
In the March 2006 issue of the Communications of the ACM, Jeannette Wing generated a significant response with her article on Computational Thinking. One of the significant impacts of this article was placing the phrase "Computational Thinking" into the common language (at least of academics). Reading through the article, it seems to me that Wing never directly defines this term. Having heard her give a couple of talks on her article, however, I have seen her give an actual definition of Computational Thinking. Paraphrasing from her slides, Wing has defined Computational Thinking as the process of abstraction. (Wing provides several engineering aspects of the term, but I think that "the process of abstraction" is what Wing intends Computational Thinking to be.)
As a computer scientist, this was an acceptable definition for me. While having lunch the other day with an engineer and a biologist, I shared this definition with them. Both of them hated this definition, feeling that it was too "computer science-y" of a definition, and not one off of which they could work.
Since Computational Thinking in K-12 should probably apply to other STEM (Science, Technology, Engineering, and Mathematics) disciplines, and probably to all other disciplines, any reasonable definition of Computational Thinking needs to appeal to faculty in other disciplines. I haven't yet come up with a satisfactory external definition of Computational Thinking, and wanted to get others' thoughts of a definition, one that will at least appeal to biologists, and engineers (and hopefully teachers in other disciplines as well)....
Steve Cooper
CSTA Vice-President
Posted by cstephenson at 11:31 AM | Comments (2)
November 10, 2009
Email Netiquette
Can you remember life without email and texting?
BITD B4 the EMSG, we talked, in person or on the phone, and wrote in a language that was readable. Now, most of our communication is done via email and texting. This sometimes includes a new vocabulary and a new dictionary [7, 8].
Communicating on a personal level and communicating on a professional level are two different animals. Many of us use email for professional communications, which stresses the importance of knowing proper email etiquette. I'm sure many of us have, at least once, pressed that SEND button too quickly or received an email that we had to ponder over trying to make sense of its meaning or intent. Email can be very easy to misinterpret. According to research done by Nicholas Epley (University of Chicago) and Justin Kruger (New York University) and published in the Journal of Personality and Social Psychology, there's only a 50% chance of correctly ascertaining the tone in an email message but people think they have correctly interpreted the tone 90% of the time.
People often think the tone or emotion in their messages is obvious because they hear the tone they intend in their head as they write. At the same time, those reading messages unconsciously interpret them based on their current mood, stereotypes and expectations. [5]
I found the following Tips for Writing Emails helpful (and sometimes amusing). How many of these "tips" hit home with you (either as the sender or the recipient)?
1. The subject line: The subject line is the only thing you're sure the recipient will read. "Re: re: re:" is not helpful in this regard. But neither is "Project Update." Be as specific and clear in the subject as every other part of the email [3].
2. Say it up front. What is the purpose of your email? Say it in the first line. Can the reader tell from the subject line and first sentence what you are writing about? If not, why are you insisting that they guess? [1].
3. Call to action. The number one thing that separates a memo, report, or PowerPoint from a novel is a call to action. Does your email ask the reader to do anything? If not, why are you sending it [1]?
4. Assume nothing. Let the reader know what thinking has gone on behind the scenes. And when following up, don't assume everyone remembers everything you've said. If you've got any worries that an acronym, term, or reference is going to elicit a confused moment, just explain it. Are you hiding anything from the reader unintentionally or assuming that your audience has prior information [1]? If so, clarify and explain.
5. Do the thinking. How many times have you gotten an email that says, What are your thoughts? followed by a forwarded chain of messages. That's the writer saying, I can't be bothered to explain my reasoning or what I want you to focus on. When you write, make sure you've explained what you're thinking and what you want the reader to spend time on [1].
6. Share your train of thought. If I know why you emailed me 37 spreadsheets and asked for me to combine them by Tuesday, it allows me to be part of the process rather than feel like a cog being dumped on [4].
7. Delete redundancies. Say it once. That's enough. If you're repetitive, the reader will stop reading and start skimming (Like you probably just did.)[2].
8. Use numbers and specifics instead of adverbs and adjectives. Johnnie is currently way behind schedule on major assignments, is not as clear as Johnnie's science project is 3 weeks late [2].
9. Delete off-topic material. The best emails say one thing and say it clearly. One-subject emails also make it easier for the recipient to file the message once they've taken action, something anyone who uses Outlook to manage tasks appreciates [2].
10. Delete anything written in the heat of emotion. Will this sentence show them who's been right about the project since the beginning? Yes? Cut it [2].
11. DON'T SHOUT IN EMAIL!!! don't mumble in email, either. Avoid writing your message using all upper case or all lower case [6].
12. Shorten. Remember the reader struggling to digest your message on the run. A BlackBerry or an iPhone gets about 40 words per screen. What looks short on your desktop monitor is an epic epistle on their mobile device [2].
13. Give it a day. With time, what seemed so urgent may no longer need to be said. And one less email is something everyone will thank you for [2].
14. Toss useless words. "In fact," "personally," "I think," "actually," "literally" and their like are almost always empty of meaning [3].
15. Don't BCC. Remember that no matter how you send it, email is as private as a postcard slapped to the water cooler. If someone needs to know something secretly, call them and whisper [3].
16. Format. Use bolded headings, bullet points, and numbered lists to allow the reader to scan for your main points [3].
17. Use Paragraphs. Similarly, use blank lines to separate paragraphs. You do use paragraphs, right [3]?
18. Use Spell check. Have it? Use it.
19. Look at your email address. What does it say about you? Are you a sexydude@wherever.com? or mrknowitall@wherever.edu? First initial, last name might be a better option [6].
20. Save the txt abbreviations for your friends.
Remember, you could always use the phone or snail mail. Enjoy your *$ and HAG1!
References
[1] 4 Tips for Writing Better Email
[2] How to Revise an Email so the People Will read It
[3] How To Revise an Email Revised
[4] Is Your Email Businesslike or Brusque?
[5] The Secret Cause of Flame Wars
[6] Email Etiquette: Why is it Important
[7] E-Mail Etiquette
[8] NetLingo List of Internet Acronyms & Text Message Jargon
Translations
* first phrase in this blog: Back in the days before the email message…
* last sentence: Enjoy your Starbucks and have a good one!
Fran Trees
CSTA Chapter Liaison
Posted by cstephenson at 02:02 PM | Comments (0)
November 05, 2009
Computer Science in Practice
Seen in the stairwell of the Purdue Student Health Center...

Robb Cutler
CSTA Past President
Posted by cstephenson at 12:28 PM | Comments (0)
November 03, 2009
Are Your Students Good Problem Solvers, or Good Mimics?
Recently the topic of Computational Thinking has risen to the forefront of discussions of what our students should learn. Ignoring the facts that computational thinking has different meanings to each of us, I think the root of the discussion focuses on our students' abilities to apply their problem solving skills to realistic problems that may or may not have identified solutions. Can your students do this? I'm not sure that many of mine can.
Many of us learn by mimicking the behavior we want to master. I learned how to play baseball by copying the throwing and batting motions my coach demonstrated until I could reliably throw the ball to a stationary teammate or hit the ball off a batting tee. But I didn't become a good baseball player until I could apply these skills in a game situation where either my target or I were in motion or I faced a real pitcher who was reluctant to throw every pitch down the center of the plate. It took real experience to master these skills and become a baseball problem solver.
Our students learn to program (a basic computer science problem solving skill) by mimicking the programs that we write to demonstrate key concepts. How do they make the transition to problem solvers? Where is their game experience? Why should we expect most of them to be more than mimics who can only solve the types of problems we have demonstrated if we never give them real problems?
These are questions we need to address. If you are tackling these issues in your classroom, then you are on the front lines of computational thinking. Share your ideas. How do you get your students to make the transition? How do you know they are on the right path? Unlike the baseball player, we don't have the luxury of tracking their batting average, fielding percentage or ERA. What are the metrics that we can identify to help measure success? How do we bring our students into the 21st century using knowledge and skills we gained in the 20th century? These questions may not have obvious answers, but they need to be asked. Help me ask them.
John Harrison
CSTA Board of Directors
Posted by cstephenson at 01:35 PM | Comments (1)
October 30, 2009
Computer Science Curriculum in our High Schools
While attending the recent Southern Business Education Association Convention in Huntsville, Alabama, I was struck by the lack of emphasis on computer science and information technology curriculum in our high schools. There we were in Rocket City, home of U.S. Space and Rocket Center, Redstone Arsenal, NASA's Marshall Space Flight Center, and Cummings Research Park. Huntsville is a veritable high-tech city, populated by thousands of professionals in the STEM fields, including computer scientists. The Saturn V Rocket, Space Shuttle, and the International Space Station would be nowhere without computer scientists among other the many other scientists (chemists, physicists, etc). And yet, science in general, and computer science specifically, is really not emphasized in most of our high schools.
What a shame, I thought as I gazed in wonder and amazement at the rockets and space shuttles on display and watched an IMAX movie about man's exploration on the moon. All made possible by scientists, including computer scientists. It is gratifying to know that the U.S. Space and Rocket Center sponsors camps for young people (and adults!) to encourage budding scientists to become interested in careers related to space exploration and discovery. So what are we doing to encourage high school students to become interested in careers in computer science?
CSTA has taken an active role in helping schools offer a sequenced program of study in computer science for students grades K-12 with the release of the ACM K-12 Model Curriculum. Sample activities are even provided for each level of the curriculum. Also, the Los Angeles Unified School District has produced The Exploring Computer Science Curriculum, which is available on the CSTA website. Both of these initiatives provide outstanding curriculum resources to encourage the teaching of computer science, which ultimately will encourage students to pursue careers in computer science. Yet we still do not see an overwhelming computer science presence in our high schools. Is the issue the current emphasis on rigorous standards for high school graduation? If that were the case, surely computer science would be at the table and we would have computer science taught in every high school. I have seen that topic addressed in other CSTA blog posts. Is the issue funding? I suppose that is possible. However, many of our industry partners are addressing the funding issue. For the past several years, I have worked with two industry partners who work to provide high quality, affordable training and curriculum for our high school teachers: Oracle and SAS, both addressing the funding issue.
Oracle provides free training for teachers and is making an effort to deliver the face-to-face training to teachers in convenient locations, not far from home (there is also an online component to the training). The Oracle curriculum is free for schools. The curriculum is delivered electronically from the Oracle server so the school system needs only to have computers and high speed Internet access for the students to access the Oracle curriculum and learn a high skill, high wage, and high demand skill, specifically database design and programming. Oracle offers certification exams at a reduced price for both the students and the teachers. Yet, the Oracle curriculum has been slow to be accepted in many school systems. Even in cities where Oracle software is widely used by business and industry, the schools are slow to include Oracle Database Design and Programming in their curriculum offerings, if they offer it at all.
SAS also offers free training for teachers and free curriculum for the students. SAS provides a free textbook written specifically for high school students and offers online support for both teachers and students. Teachers are required to attend one week (40 hours) of face-to-face training. SAS holds the training at their Cary campus, but they are willing to deliver the training to any location that has 10 or more teachers to be trained. The schools are provided with the SAS software. SAS certification exams are available to both teachers and students for a reduced fee. SAS Programming for High Schools will provide students with a high skill, high demand, high wage education in the information technology area. Again, we see an industry partner addressing the funding issue. And again, even in cities where SAS is widely used, the high school course is slow to be integrated into the school systems.
Apparently, the issue is not really the lack of funding. Yet it is imperative that we prepare the next generation for careers in computer science and information technology. In the Spring 2009 issue of the Occupational Outlook Quarterly, Benjamin Wright states that "Employment in combined IT occupations is expected to increase by more than 800,000 jobs over the 2006–16 projections decade." Mr. Wright also states that "a study by the Association for Computing Machinery finds that even though offshoring may increase, prospects for IT workers in the United States will be strong". Mr. Wright does note that demand for computer programmers is expected to decline by 4% over the same decade but that this is the only IT area projected to decline. The jobs will be there. CSTA is working to provide the computer science and information technology curriculum. Now we need the students. I am working in my little corner of the world to recruit these students. What are we doing to encourage our students to study computer science and information technology?
Resources:
ACM K-12 Model Curriculum and Los Angeles Unified School District Exploring Computer Science Curriculum
http://csta.acm.org/
Oracle Academy
https://academy.oracle.com/
SAS Programming I for High Schools:
http://www.sas.com/corporate/community/sas-programming.html
Occupation Outlook Quarterly, Spring 2009 issue:
http://www.asiaing.com/occupational-outlook-quarterly-spring-2009.html
Deborah Seehorn
CSTA Board Member
Posted by cstephenson at 04:56 PM | Comments (1)
October 28, 2009
My Voice
I look forward to it every couple of months. I've been receiving the CSTA Voice since I
became a member back in 2005. For years, being a member of CSTA meant getting my
newsletter, filling out my end-of-year renewal form, and responding to the occasional
survey. Sure, I felt like I "belonged," but I left the advocacy up to the professionals. Life
was good.
That changed a couple of years ago when my school administration decided that we no
longer needed a Computer Science department. I kept my job, and for the most part,
taught many of the same courses after being merged with the Science department, but I
felt that I had been stripped of my identity as a Computer Science teacher. Following the
merger, enrollment numbers in my classes were the lowest ever. Fewer and fewer students
were aware of the staggering demand predicted for careers in the computing field in just a
few years. Why was my message not being heard?
I saw in the Voice that teachers from 19 states had been chosen to attend a leadership
workshop where they would develop advocacy plans for their respective states. My state
was not listed. There I sat, isolated, with a wilting Computer Science program at a school
with no CS department, in a state lacking a CS certification area (much less a graduation
requirement). Not only was my voice not being heard, but I had no idea what to say or how
to begin.
The one thing I could depend on in those days was my CSTA Voice. When I read that there
was a second leadership workshop and that my state was included this time, I turned in my
application and wished for the best. A few months later, I was at a conference center in
Chicago, surrounded by 50 other educators who wanted what I wanted -- to further the
teaching of computing in our schools.
The workshop was a 3-day menagerie of brainstorming, note-taking, networking, planning,
and occasional sight-seeing. We learned about stakeholders, partnerships, outreach
strategies, and most importantly that we are all in this together. We worked with
representatives from states facing issues similar to our own, and we discussed ways to
make those situations better. The most important thing I left Chicago with, though, was my
voice.
The CSTA Leadership Cohort Workshop taught me that I have a voice. I found that I am
surrounded by allies, resources, and solutions free for the asking. With just a little effort, I
was able to organize a CSTA chapter in my own state! Representatives from higher
education, industry, and K12 schools are now working together to identify long term goals
for the future of computing education in our state, and I started this conversation!
If you can hear my voice, know that this is something that you can achieve, too. Put down
your newsletters. Close your web browsers. Get out there and start organizing! If a mild-mannered computer scientist can start this discussion in a state with fewer than 13 schools offering AP Computer Science, imagine what you can achieve in your own back yard.
---
Daniel Moix has taught Computer Science at the Arkansas School for Mathematics,
Sciences, and the Arts since 2003. He was recently elected President of the Arkansas
chapter of the Computer Science Teachers Association. His favorite color is #6495ED.
Posted by cstephenson at 02:02 PM | Comments (0)
October 27, 2009
Why Words Matter: Technology is not the same as Computing

Robb Cutler,
CSTA Past President
Posted by cstephenson at 03:26 PM | Comments (0)
October 26, 2009
The Underlying Foundation of Professional Development
If I were to ask the question: "What should be the underlying foundation of every professional development opportunity?" many of you would immediately have an answer. Some of you might say it has to be interesting. While others may suggest it has to be relative to what you are teaching. And still others would suggest that it has to be fun (or if you want to be more sensitive we could combine those three together and call it engaging.)
But I am going to take you a different route and suggest that the underlying foundation of professional development is really all about communication. A large portion of my job responsibility revolves around creating and providing professional development to the K-12 environment. The formula for a good professional development opportunity is simple:
my compelling message + my effective demonstration + your understanding + your willingness to implement = growth
And over the years the one thing that has become clear is that if just one of these elements is missing, we approach what has come to be known as epic fail. You see, if I have an idea of what I am trying to tell you as a provider of professional development, but I am not communicating that well, it will not translate into anything useful. Additionally, if I have a great message and a whiz bang demonstration, but a teacher is just there to put in time and get some continuing education credits, once again, there is a break down in the communication cycle and the professional development opportunity is for naught.
Here are a few suggested questions to ask yourself to help make sure your next professional development opportunity is worthwhile (while ensuring the foundation of communication is intact).
1) What do I think is the goal of this presentation/ workshop/ video, etc?
2) What is ONE useful/ implementable thing I can take away from this presentation/ workshop/ video, etc?
3) What will never work with my students? Why?
4) What do I not understand about what is being presented?
5) Who else would benefit from knowing some of this?
Mindy Hart
CSTA Board of Directors
Posted by cstephenson at 01:36 PM | Comments (0)