I had to do this. I really did. I am so tired of schools claiming that they are teaching 21st century skills (what ever that means) but not offering a computer science course. How is that possible?
Friday, November 29, 2013
Tuesday, November 26, 2013
We announced the Hour of Code just weeks ago, and now 3 million students across almost 20,000 schools, in 150 countries have signed up. Wow.
This is shaping up to be the largest learning event in history. And we'd love your help to make it even bigger. Join us
If each person reading this email asks one classroom to teach an Hour of Code, this movement will reach 20 million students.
Every child should learn computer science
Starting Dec. 9, anybody can learn the basics -- from Bill Gates, Mark Zuckerberg and Angry Birds, in over 20 languages. Set aside an hour to learn yourself, too.
Thank you for your support,
Hadi Partovi, founder, Code.org
Monday, November 25, 2013
Starting of this post made me realize that we are exactly a month away from Christmas. I need to get going on shopping for my wife’s presents. I’m running out of time. I can’t be like my students sometimes are and leave it all to the last minute. Well, I’ll do that after I share some links with you. Found some good ones again I think.
Sabotage: Teach Debugging By Stealth I love this idea!
Getting the Most from Conferences Chris Stephenson from the CSTA writes about getting the most out of the annual CSTA conference.
Changing the World One Step at a Time: Introducing CS in the Middle School is new on the CSTA blog.
Beyond Teaching Computer Science is an article I wrote over the summer for a different web site.
@AnthonySalcito explains to @BBCWorld, schools focus too much on buying tech and not thinking enough how to use it. Anthony is the WW VP of Education for Microsoft and he really “gets” education. It’s nice to have a exec from a tech company who focuses on the problems rather than selling answers in search of questions.
A set of top Computer Science Education blogs assembled by Dr. Tom Crick. I was already following most of these but a couple were new.
Friday, November 22, 2013
I think most students are capable of doing things that are a lot more impressive than we give them credit for. Our expectations are too low. I am guilty of this myself more then I’d like to admit. What great teachers do is provide students with the opportunity to do great things. They don’t limit students to what they (the teacher) knows and they don’t limit students to cubbyhole cookie cutter projects.
This takes some courage. It takes a willingness to let students fail. To let students come up with their own projects and to drive their own learning. This can be hard for teachers. We’re used to being in control. We’re used to knowing what everyone is doing and when and how they will finish. Extraordinary projects don’t often fit into neat cubbyholes.
Traditional projects fit into clear metrics. Extraordinary projects do not. Oh sure if the project succeeds it is easy to shout “A+ project” but what about projects that are not a success in the traditional sense? A student or group of students can learn a tremendous amount that is far beyond normal expectations but for one reason or another the project just doesn’t work when time runs out. How do you grade that? Some subjectivity may be required and the system hates subjectivity.
In the long run though the teachers who provide more opportunity and fewer limits are the ones whose students impress. Those are the ones who learn a lot, create a lot, and enjoy what they are doing a lot. It is tempting to credit the students. It is tempting to credit the teachers. Both deserve some of the credit but it is really the teamwork between teacher and students that is what makes it all work. Teachers to lower boundaries and students who jump at the chance to escape the box and soar. It’s a beautiful thing.
Thursday, November 21, 2013
Passing this along from the CSTA announcement mailing list. It surprises me that women in the computer field were not more willing to take part in this effort by code.org. And disappoints. Perhaps there is more to it then I know.
Code.org has just released a new CSEdWeek poster featuring Susan Wojcicki, a Senior Vice President at Google. Forbes has called Wojcicki the most powerful woman in advertising, and among the 20 most powerful women in the world. Although not a CS major, she took intro CS classes in college. Google's first office was in her garage.
Code.org founder Hadi Partovi says that he decided to release this new poster because it's critical to show female role models to girls to bring them to CS. Showing just images of men isn't enough. "Our original posters (Mark Zuckerberg, Chris Bosh) lacked a female, despite our best efforts (we asked all the best known women in tech who surprisingly rejected the opportunity)," says Partovi. "Susan is a fantastic spokesperson for computer science education, because she shows that even if you don't major in CS, even if you don't become a software engineer for life, exposure to the field is important in a world that's increasingly dependent on technology."
You can request a copy of this new poster for your classroom at:
Wednesday, November 20, 2013
A lot of teachers in poor areas, remote areas, and areas were there is a low density of CS education can't afford to attend a conference like the CSTA Conference. And yet I feel like these are the teaches who could benefit the most for attendance. Especially in some of the remote areas where travel is expensive, school PD funding is limited or non existent, and CS teachers are the most isolated a trip to the CSTA conference could make a big positive difference.
Now there are some teachers (many in fact) who pay their own way to conferences including the CSTA Conference. Good for them. They have the money or at least enough so that they can set that as a priority. Other teachers have schools or districts who set aside enough money to give some sort of help (i.e.. money) to allow teachers to attend conferences and other out of district professional development. That’s even better! But not everyone falls into those two groups.
Many rural schools are hit with a double whammy in that they don’t have much (no where near enough) money to spend on PD (or even salaries) for teachers AND they are far away from anything so that travel is even more costly. For teachers in those districts/schools travel to a big conference can be prohibitively expensive. I don’t think anyone would suggest that those teachers have less need for PD either. In fact since they so seldom have any peers near them they probably need it even more. They also could really benefit with the networking that takes place at a professional conference. For computer science teachers the CSTA conference is unquestionably (in my perhaps biased mind) is the best conference for them.
CSTA doesn’t (as far as I know) have the money for this. Running the conference is hard enough as it is. Now I may get into trouble for this (this is my own personal idea that I haven’t discussed with anyone else yet) but I would like to see some of the computer industry giants put up some money for this sort of thing. How much would it cost? I’m not sure as I haven’t really worked the numbers but it seem like it would not be too expensive. A relatively small pot of money could be assigned for say 3 to 5 “scholarships that would be awarded based on some sort of criteria. Like what? I have a few ideas.
- Need based on some funding metric – hard to do in some ways
- No previous attendance at CSTA conference (or not within some time period)
- An application that shows a demonstrated willingness to learn and implement new things and personal innovation
- Stated administrative support though a willingness to allow the teacher to incorporate new ideas – we’re already assuming the school/.district doesn’t have money BTW
- A willingness to share what they learned in some way (local workshops, video messages, blog posts, some other way)
I had an interesting problem from a student the other day. He was working his way though an array in a couple of places and one of them was doing something wrong. It was tricky because most of what was happening was correct but sometimes it wasn’t. Drove us both crazy. As you might expect there were a couple of places where values were being changed but it looked consistent so the results should have been constant. But they weren’t. It took me a while to understand what was going on but I finally figured it out.
The index for a change was being calculated using two index values –> n and i. Pretty common stuff. Unfortunately one place was [n + 1] where it should have been [n + i] A lower case i is easy to mistake for a 1. So is an uppercase I or even a lowercase L. In fact there are a lot of numbers and letters that are easy to confuse. Zero and Oh for example. S and 2 for another. One solution is to avoid some letters completely. I know of places that ban the use of some easily confused letters in places where context does not make them stick out clearly.
For indexes in loops though the best answer is probably index control variables that are more than one letter long. Row and Column probably make better variable names than r and c and definitely better than i and n when you are indexing through a grid or a table for example. Index is probably a lot better than I as well. But most of us are lazy so we stick to single letter loop control variables far too often.
It’s not a problem until it is a problem. When it is a problem renaming the loop control variables is probably a good way to make some sorts of errors in logic pop out. Something we’ll be talking about in class this week. I love the teachable moment.
Tuesday, November 19, 2013
Since this past summer I have been a member of the CSTA Board of Directors (thanks again to all of you who voted for me). It’s been an interesting and rewarding experience for me so far. I’ve worked on the Equity Committee and our “Faces of Computing” poster conference for example. And attended two board meetings which have been great experiences largely because of the wonderful people on the board. If you are involved in CSTA and want to get more involved I highly recommend you think about running for the board.
The call for candidates is up on the CSTA blog but I’ve copied relevant information from the CSTA website below.
Nominations are now open for the CSTA 2014 Board of Directors elections. Nominations will be accepted for the following positions:
9–12 Representative (1 position): A 9–12 classroom teacher who is currently teaching computer science at the high school level.
At-Large Representative (1 position): An educator with responsibilities for K–12 CS education.
International Representative (1 position): An international (outside the United States) classroom teacher who is currently teaching or promoting computer science at the pre-collegiate level.
School District Representative (1 position): An administrator whose focus is technology or curriculum across multiple schools.
Teacher Education Representative (1 position): A college- or university-level faculty member who has primary responsibility for the instruction of pre-service and/or in-service teachers of computer science and/or computing disciplines.
University Faculty Representative (1 position): A faculty member from a university computing department offering graduate degrees in computer science.
To apply for one of these positions, please submit your completed application form and your résumé as per the instructions provided on the Call for Nominations.
Click here to download the Call for Nominations.
Click here to download the 2014 Nominations Application Form.
Nominations deadline: February 1, 2014.
Late nominations will not be accepted.
Monday, November 18, 2013
I made a quick trip to Tucson AZ over the weekend for the CSTA Board meeting. Beautiful part of the country and I wish I had more time to explore it. But meeting are meetings. Still had a good time as the weekend was filled with lots of great conversations with some great CS educators.Speaking of which, a lot of people have shared some good stuff with me that I want to share with you.
@DonWettrick is at it again with a new interview with my friend Lou Zulli @lzulli What would happen if your school turned over the IT responsibilities to the students?: Check it out.
The Computer Science Teachers Association is looking for candidates to run for several board seats for next year. See the CSTA blog for more information.
Programming Power? Does Learning to Code Empower Kids? Read the article and tell me what you think?
20 Programming Websites for K-8 Options to teaching computer science to younger students seem to be expanding all the time. What do you use?
Latest video from Code.Org an administrator from LAUSD on the need for Computer Science education
Where is the next generation of coders? - UK Wired News – Where indeed!
Thursday, November 14, 2013
Last week I wrote a program. I wrote about it on this blog (Making Magic With Software) but only about what was visible to the user. This week I decided to show some of the code behind to my students as part of asking them to write a similar program. As often happens this did not turn out quite like I planned. Basically it turned into “let’s make this program better.” I could pretend that this was on purpose but let’s be honest – it wasn’t.
Having written code for something like 40 years I confess I get a bit cocky about it sometimes. I think I can start writing code without planning it out or even thinking out the whole plan. This usually results in something that works but is not quite what it should be. What did I do wrong this time? A bunch of things.
The most obvious was that I took an application that would be easier to code using a two dimensional array and did it with a one dimensional array. Why? Less typing. Poor reasoning I know. Now doing this was fairly easy for me (I’ve done similar many many times though usually with a better reason) but it was not going to be easy to explain to students. That’s a sure sign that a better design is needed by the way. So I showed the students how to set things up as a two-dimensional array.
The other thing I did wrong was to have “magic numbers.” That is to say that some values were hard coded and used several times. Why? I knew how many objects I needed and it was never going to change. Famous last words. Showing this to students I realized that the code would be more easy to understand and more reusable if I defined and used constants rather than hard coded numbers. properly named values actually make the program easier to understand. What does “8” mean? Clearly not as obvious as “row.”
So I fixed the program in front of the students and explained the why of each change. Hopefully it made an impression. Even if it didn’t at least they have a better written sample piece of code to read and learn from. And I reminded myself to take “throwaway code” more seriously. You never know when it is going to pop up again.
Tuesday, November 12, 2013
This went out to the CSTA Member mailing list tonight. Thought it was worth sharing.
Beginning Monday, November 18th, 13-17 year old pre-university students from around the world can register and start competing in Google Code-in 2013. The Google Code-in is an online contest designed to introduce pre-university students to the world of open source software development. Participants complete “tasks” of their choice from 10 open source software projects (Apertium, BRLCAD, Copyleft Games Group, Drupal, Haiku, KDE, RTEMS, Sahana Software Foundation, Sugar Labs, and Wikimedia Foundation).
Since open source development is much more than just computer programming, there are lots of different kinds of tasks to choose from, in categories such as coding (in multiple programming languages), documentation, user interface, quality assurance, research and outreach. Students can earn t-shirts and certificates for their work and 20 dedicated students, 2 chosen by each of the 10 software projects, will win a trip to Google in Mountain View, CA, USA next spring.
During the past 3 years of the contest, over 1200 students from 71 countries completed tasks in the contest. This year we hope to have even more students participate globally. Please help us spread the word and bring more students into the open source family!
Visit google-melange.com to read our Frequently Asked Questions for all the details on how to participate, important dates and the Contest Rules. Students can start working on tasks for the contest November 18th. For more information please contact Google Code-in Program Manager, Stephanie Taylor at email@example.com.
Monday, November 11, 2013
It’s Veteran’s Day in the US and most schools are closed. We’re remembering and honoring our nations veterans. I’m remembering my late father who was a combat veteran of World War II and later served for many years as a Navy chaplain. That’s him on the right in a picture from the war. Over last week though I did collect some links to share.
BTW I did an interview with Doug Peterson for his blog over the weekend. It’s posted a An Interview with Alfred Thompson One of the questions Doug asked me was about this weekly links post.
Airlines are figuring out how to use all that customer data they collect This is one of the articles I want to discuss with my students this week.
Why Arts and Social Science Needs Code: Testimonials from a number of people.
Getting Ready for Big Data is a post at the CSTA blog with resources for teaching about data as part of computer science courses.
Partners in Learning Network - MEET THE EXPERT EDUCATORS Several of my friends on this list and are headed to Barcelona. Excited for them.
SIGCSE 2014 a Great Opportunity for Professional Development. I’m really hoping to go this year. How about you?
Computer Science History: How Cloud computing is similar to the earlier move to client/server architectures. This is my most recent post at the CSTA blog. Hope you like it.
Friday, November 08, 2013
I'm passing this along for Code.org who I am helping organize tutorials for an Hour of Code during CS education week. We need help evaluating the tutorials we have received to make sure we have high quality projects for people to use. Please help if you can. Thank you!
We've received many submissions of Hour of Code tutorials. We want help in sorting through them, so that the display order is based on feedback of the broader CS community. The final presentation will look something like the list you see at http://csedweek.org/learn2.
Please read the Hour of Code Tutorial Guidelines first: http://bit.ly/hoc2013
Tutorials will be listed higher if they are:
- high quality
- self-directed, don’t require too much instruction
- designed for beginners
- designed as a ~ 1 hour activity
- require no signup
- require no payment
require no installation
- work across many OS/device platforms
- work across multiple languages
- promote diversity (gender/race-neutral presentation)
We want your help looking at the many submissions we've received, and scoring them 1-5 on each of these attributes.
IMPORTANT NOTE: You don't need to fill out the entire form. Please help us out as much as you can.
Take our survey: https://www.surveymonkey.com/s/PK6WL7H
Director of Education, Code.org
Received this update email from Code.org last night. Looks like an Hour of Code for CS Education week is getting real! And of course it is getting close. Now though you can try out some of the exercises people have been preparing. You may find something that will work for your at your school or a school near you.
Hour of Code tutorials are ready to try -- with options for every age, every device, and even "unplugged." While this is still a work-in-progress, we invite you to check out the options, and give us feedback.
In particular, Code.org’s own tutorials are ready for preview - learn basic sequencing, repeat loops, and if-then statements from Mark Zuckerberg, Bill Gates, and Angry Birds.
1,500,000 students and growing
We just passed 1.5 million students planning to participate in the Hour of Code across 141 countries! It’s now on track to be the largest online education event in history, proving that the demand for relevant 21st century computer science education knows no boundaries. See every school participating here.
Join now to win laptops or a video chat with Bill Gates.
Odds of winning are still exceptionally high in many states. To qualify:
- Register for your entire school to participate in the Hour of Code by Nov. 15.
- Then, email us your school’s Hour of Code “logistics plan” to firstname.lastname@example.org to enter the running for a class-set of laptops. Details
With CSEdWeek (Dec. 9-15) only 5 weeks away, please help your students join in on this record-breaking event. Join us now
Hadi Partovi, founder, Code.org
Thursday, November 07, 2013
My friend and fellow teacher Tom Indelicato and I are teaching a new course this year. We are calling to Explorations in Computer Science and it is patterned somewhat after the larger Exploring Computer Science course developed in Las Angeles. One of the activities Tom has been using for a couple of years is from the CS Unplugged materials that involves introducing the idea of parity checking called Card Flip Magic.
Now in the CS Unplugged site you will see this exercise demonstrated using cards of various types. It works very well that way. My friend Tom is a bit of a geek though and when he first started thinking about using this exercise his thought was “how can I do this easily with the white board in my classroom since the layout of the room doesn’t lend itself to using cards.” Well more or less that is what he thought. So being a software guy he wrote some software. That’s a screen shot of Tom’s program on the right.
The way this works is that the “Click to Begin” button is clicked and the screen is filled with semi-random colors. Green and Gold are our school colors BTW. A student volunteer comes up and with the instructor not looking changes one of the boxes from green to gold or gold to green. The instructor returns and announces which box was changed. This seldom fails to get interesting reactions from the students. It looks like magic. Especially if the students are allowed to set a new random pattern while the teacher is not looking.
The left column and the bottom row are parity digits based on the other 64 values on the form. Knowing this makes finding the changed box fairly easy. The kids love it and we let them spend some time in pairs “solving” the puzzle themselves. It’s a great way to teach the concept.
They’re obviously fairly similar. Although mine uses a menu where his uses a command button. And mine is written in C# and Tom’s is written in Visual Basic. There are other internal (and invisible to the user) differences as well. And thinking about that lead me to my second idea. Wouldn’t this make a great programming exercise/project for my programming students?
Loops, arrays, decision statements and problem solving all in one. And just think how well they will understand parity checking when they are done! I want to see how they decide to solve the problem as well. There have to be some creative ideas out there that I haven’t thought of.
Tuesday, November 05, 2013
If you are a member of the CSTA you should have gotten this update in email. If you didn’t you may want to make sure that CSTA has your email address right. If you teach computer science you should be a member.
» CSTA and Teacher-Driven Professional Development
It seems that the hard work of many years and many people is resulting in an unprecedented focus on K-12 CS...What we have come to believe is that CSTA chapters must also take a lead in designing and providing PD for teachers. . . .more
The CSTA leadership cohort has a new name-the Computer Science Advocacy Leadership Team (CSALT). The goal of CSALT is to identify, for each state, teacher leaders passionate about improving K-12 CS education. . . .more
» Running a Successful Computing Camp
Offering a computing summer camp certainly takes time to plan and execute, but a successful camp is very rewarding. ICE at Georgia Tech has years of experience in leading computing camps and offer tips to help you ensure the success of your camp. . . .more
» Chapter Mini-grants Now Open
Chapters are encouraged to submit a mini-grant proposal to carry out an advocacy initiative that would support the engagement of new stakeholders, the creation of a new resource, or the organization of an advocacy event. . . .more
» Increasing Diversity in Computing
Research from ETR Associates, and from the University of California, Santa Cruz, is providing valuable information about ways in which community colleges can increase women's interest in pursuing computer science. . . .more
» The 3-Minute Advocate
Advocating for computer science education" sounds like an intimidating activity, but as an educator you are a natural at it. And it doesn't take much time to have a huge impact. Many CSTA members have shared ideas and strategies to pave the way for you. . . .more
» Equity Matters
Results from the NSF funded Tapestry workshops, led by Professors Joanne Cohoon and Jim Cohoon at the University of Virginia show that teachers using active recruitment can make a difference in the gender composition of classes. . . .more
» Meet the Chapters
CSTACNJ - Central New Jersey, is already a vibrant, active CSTA Chapter in this, its first year. They consider enthusiasm, organization, communication, and collaboration the keys for their success. . . .more
» Chapter Spotlight
A programming competition is a great way to maintain students' interest in computing and to strengthen their programming skills. The Puget Sound CSTA chapter discovered it is a great way for members to work together and collaborate with industry professionals and college faculty. . . .more
Monday, November 04, 2013
The big news were I live last week was the Red Sox winning the World Series. Nothing at all to do with computing. Even with all the excitement I managed to find some interesting links to share.
Journaling in the Computer Science Classroom is a useful post by Rebecca Dovi on Twitter at
@SuperCompSci By coincidence Doug Bergman and I took part in a Google Handout with a Google CS Fellow on the same topic last week you can view to recording of our conversation on YouTube CS4HS HOA with CS Fellows- Journaling:
Why are women not pursuing tech jobs? - CBS News Video with a lot of footage and interviews from the Grace Hopper Conference.
Kinect Sign Language Translator includes some good video of Kinect sensors being used to interpret both Chinese and American Sign Language. Very exciting stuff.
CSTA’s Equity Committee is hosting its annual poster competition "We Are the Faces of Computing". Maybe your students would like to participate?
A theory for why there’s so little CS Ed in the US from Mark Guzdial
@guzdial The discussion in the comments (like a lot of Mark’s posts) is also well worth reading.
Julia Steiny writes a good article called Computer Science is Critical Thinking on Steroids that is well worth a read.
Friday, November 01, 2013
I confess that I love to debug code. I think I’d rather fix broken code and remove bugs than write original code from scratch. All that set up and stuff is tedious but solving the puzzle of why code doesn’t work gets me all fired up. Someone recently told be that there was no programming and debugging but bugging and debugging. With students that may be more often true than not. So dealing with student code that doesn’t work – for various definitions of doesn’t work – is something I enjoy quite a bit.
Some problems are easy. A student may call out that he is getting such and such a message and I can reply without seeing the code. Off by one errors and syntax errors are examples that often fit into that category. Often with a specific project a student will run into one error that takes a close look to solve and then you look like a real expert when two other students make the same mistake later in the period. This has a side benefit of alerting you as an instructor of something you might want to try to cover better or at least differently next time.
Some errors show up because students in their creativity try to solve a problem in a way that is completely different from any solution the teacher might have come up with. This is not necessarily a bad thing but it does force the debugger to look at things from a different angle.
Obviously I want students to get experience with solving their own problems but at the same time one doesn’t want to see frustration build up to were a student just gives up and starts hating computing. Finding the balance between helping enough and too much can be tricky. Sometimes I try to just give hints. One student was looking for ways to give warning messages for different returns from an openFileDialog box. I suggested that he look (via Intellisense) for different properties to see if that would give him information about the type of file. I like to explain why something isn’t working (usually it is because they don’t understand the option well enough) and so help them look for the right option.
It’s often easy and tempting to just jump in and fix the problem. This may impress the student with how smart the teacher is (good luck with that) but it doesn’t really help the student avoid making the same mistakes over again. Taking advantage of a teaching moment to explain things until they understand what happened pays off in the long run.I confess that this sometimes comes hard especially when all you want is the student to finish the project so you can get grading over with at the end of the marking period. It’s worth the effort though.
The other thing that working with students on debugging a problem is the chance to model debugging tools and techniques. using a debugger or setting up debugging code doesn’t always come easy. Teachers can explain it as a topic or even use it to demo information and that helps some students. Other students learn debugging best when shown how to debug a problem that means something to them personally.
I also try to reassure students that they are not “the only dummy making such a stupid error.” They often think everyone else is getting along just fine when the opposite is too often true. I am honest in sharing with students that I have made similar errors. in 40 years of programming I’ve make a whole lot of errors – many of them “dumb.” Some errors as so common that they have names (off by one errors for example) so I can explain that to them. I don’t want them to get discouraged by errors or to ever feel that they are the only ones who make them.
Occasionally a student runs into something I haven’t seen before. A always thank students for bringing those problems to me. Every problem we work though and learn something is a problem that will be easier to find and fix next time. And that I tell them is a good thing.