Thursday, February 27, 2014

It’s OK To Make Mistakes

Me to a student the other day“Several other people made the same mistake. That is why I was able to spot it so quickly.” Invariably that statement gets a look of surprise. Students often think they are the only ones making mistakes. Girls are especially prone to this mistaken assumption for some reason. And yet beginners are always making little errors especially in syntax.

The error of the day last week was unnecessary semi colons after while statements. You know the ones that create a null statement that causes the loop’s block of statements to be outside of the loop. Anyone who has coded in a C-family language has seen that one. Visual Studio even provides a helpful warning in most cases. A warning students seem to ignore. Several students made this error in the same hour.

The day before I specifically called out this error as one of several I expected students to make. Warnings seldom seem to help. But that is ok. It gives me a chance for a teachable moment to explain (again) what is going on and how these languages “see” statements.

I’d rather see syntax errors and typos than logic errors BTW. I had one girl who was seeing a lot of errors. I showed her one syntax error she had made and all the errors went away and her program worked. As I told her, she had the logic all worked out just fine. She knew, in theory and mostly in practice, what she was doing. She just got bit by a rookie syntax error. And that I told her was ok. In fact my experience is that the longest lists of errors are often caused by the fewest of actual errors. A little thought and some patience and work will get through them every time. Giving up is the only real wrong.

cat on bugs
In the beginning syntax errors are the bane of most students existence. That is why drag and drop programming languages like Alice, Scratch, and the like (lots of them listed at Programming With Blocks) are so popular. But at some point we have to move to more general purpose languages where syntax becomes an issue.
Dealing from students frustrations or fears that they are failing is as much a part of teaching the first course (I think) as teaching the concepts. Fear is a killer. Students should not be afraid to try things and to make mistakes. Making mistakes is the real world. Letting them know that they are not alone and that everyone else is making mistakes can help. As long as you help them see the mistakes as a learning and growing experience and not as a personal failure.

I thank every student who comes up with an error I haven’t seen before. I explain that I learned from their issue and that is a good thing. And I mean it!

Wednesday, February 26, 2014

Code Hunt

Gamification of learning is quite the big deal these days. While there is not unanimous agreement and unambiguous evidence that it works in all cases there is some evidence that it works for some students. Code Hunt is a coding game that looks pretty interesting. Well I have been having fun with it. It gives students the option of either Java or C#. The graphics are nice and there is a leaderboard. While some people are happy working up a score for self satisfaction there are others who would like to compare themselves with others.


Code Huntimage is an educational, browser-based coding game targeting teachers and students from introductory to advanced programming or software engineering courses.

At the core of the game experience is an automated grading engine based on symbolic execution. If you have never played Code Hunt before, we suggest you first visit the Instructions page or play the tutorial level to get a better understanding of the game platform and mechanics.

Found a bug? Have a question? Want to provide feedback? Please contact our developers at codehunt@microsoft.com.

Go to our Microsoft Research page to find a list of publications around Code Hunt.

Credits: Code Hunt was developed by the Research in Software Engineering (RiSE) group at Microsoft Research.

Tuesday, February 25, 2014

Which Comes First–Loops or Arrays?

One of the classing problems in teaching a first course in computer programming is what order to teach various concepts. So many things are interdependent on each other that sometimes you wish you should teach everything at once. That would generally cause student heads to explode so its not a great option.  One area I struggle with is loops and arrays. They are both so much more interesting to me with the other. So I asked people on Facebook about this.

Most said they taught loops first and then arrays. This makes some good sense. (Even if it is how I do it.) Arrays are more useful and interesting when paired with loops after all. They are almost pointless without loops. Almost being a relative term of course. Also loops follow on directly from decision structures. Once you talk about Boolean expressions for if statements adding the idea of using them in a loop is pretty natural. Once can come up with some fun loop demos even without arrays.

And then others added opinions. Some did suggest arrays first. Once you have an array you pretty much need loops. This tends to feel like some “just in time learning” in that now you have a need so “let’s talk about a solution.

A couple of people talk about arrays as part of a larger conversation about variables. This also makes sense. Arrays are after all variables. It’s a simple step from “Student0, Student1, …” to Student[i]. This is similar to the logic behind following decision statements with loop statements in that you are taking a concept one step further.

A case can be made for any of these options. I don’t know if  there is research on which order gets the best results though. Anyone out there know of research? Most people just do what feels right for them. Or teach the same way their learned.

What really bothers me, and for what I have no clear solution, is that it feels like we talk about variables four times. Once for “normal” variables for standard data types. Later for arrays. Still later for strings. By that I mean at some point we talk about how strings are fairly special and have attributes of single item data types and also attributes similar to arrays. Lastly we talk about user defined variables and data types. Is it too much to talk about all of that at once? Probably. I can almost see the eyes glazing over.

All of this is why I think the first programming course is harder to teach than a lot of people think it is. Once you are through it a lot of things come easier. Of course once you’ve learned all the key concepts in a first programming course it all seems easy and obvious to you. Well if you learned them well they do. It is sometimes hard to remember how hard some of these concepts were the first time one heard them. It’s a new way of thinking for most people. And let’s not forget the syntax struggles!

Still I find teaching the first course rewording. I love seeing a student when something “clicks” for the first time and they see the potential. If only I could teach all the concepts at the same time. 

Monday, February 24, 2014

Interesting Links 24 February 2014

I’m on vacation! February break in New Hampshire this week. I’m trying to take a break from the computer and the Internet as well – except for catching up on grading. We’ll see how I do. I may or many not have an interesting links post next week but I do have a few links to share today.

I love reading about the teaching adventures of Garth Flint. Take a look at Java, here I come. http://feedly.com/e/3bOslJPK

Did you see my post on the  http://Code.org Teacher and Student Awards I’m curious to see how that program works out.

Kinect yourself a 3D printed mini-me with Shapify I really have to look into this. The software uses a Kinect to create a 3D model of a person that can be used with a 3D printer to create a small “statue” of them.

My Own Flappy Bird in which Doug Peterson writes about his experience with TouchDevelop and a tutorial from Microsoft.

College Board program to provide funding to districts to start AP courses with a grant from Google. Maybe you can use it to start and AP CS course at your school? Information courtesy of Mark Guzdial @guzdial

The Joy of Teaching Computer Science in the Age of Facebook  Hope Reese interviews Mehran Sahami, a professor and Associate Chair for Education in Computer Science at Stanford University for The Atlantic magazine. I was on the CS 2013 curriculum task force with Mehran and he’s a great guy.

Laura Blankenship writes about Counting Computer Science on her blog. I’ve written about it to but I think Laura’s writing is better then mine.

Friday, February 21, 2014

University of Arkansas Program For Minority Students & Majority Women

An interesting looking summer program. One has to get there on their own from what I can tell but no cost other than that. Open to 11th/12th graders.


TECHNOLOGY AWARENESS PROGRAM (TAP)

imageThe Technology Awareness Program (TAP) is a one-week residency program, held during the summer on the University of Arkansas campus, in the Sam M. Walton College of Business.  Each year, the Office of Diversity & Inclusion selects up to 25 students with an interest in information systems, accounting, or related business field to participate in the program. 

TAP is designed to introduce students of color to the field of computer information systems. The program is designed to demonstrate how technology is utilized to assist business organizations in their decision making process to operate more effectively. Students will have an opportunity to participate in the preparation and presentation of a challenging team project. Additionally, the students will have opportunities to interact with minority professionals from business and government, as well as visit and observe them in their work environment.

TAP is open to minority students and majority women who will be in the 11th and 12th grade the fall of the summer when they complete those grades. All students must have a minimum of 3.0 GPA. Students selected to participate in TAP will receive a full scholarships to the program, which covers the cost of tuition, room and board, meals, books, supplies, and transportation during TAP.

Thursday, February 20, 2014

Twitter Accounts for CSTA Members To Follow

Patrice Gans has a great post on the CSTA blog about Creating a Professional Learning Network that I wanted to share. Normally I would just include a link on my Monday morning interesting links page but I wanted to add a bit more value. The post lists CSTA board members and staff who have Twitter accounts. I have included that list with hot links to make it easier for people to add them to their Twitter accounts.

Also I am building a twitter list of CSTA people at https://twitter.com/alfredtwo/lists/csta
Obviously all of these people are already on it but I want to build it out some more. So if you are an active CSTA member who tweets please let me know your Twitter username by tweeting to me at @alfredtwo or leaving a comment here.


CSTA Board Member and Staff Twitter Accounts

  • Lissa Clayborn - @CSTALissa
  • Myra Deister - @shhsMath
  • Patrice Gans - @reesegans
  • Michelle Lagos - @mglagos
  • Karen Lang - @kmclang
  • Irene Lee - @ProjectGUTS
  • Pat Phillips - @patjphillips
  • Tammy Pirmann - @tammypirmann
  • Chris Stephenson - @chrisstephenso
  • Alfred Thompson - @alfredtwo

  • Code.org Teacher and Student Awards

    New program from Code.org to recognize students and teachers who are making a difference in computer science.


    Do you know a teacher or student who's changing code org logothe face of computer science - in big ways and small? Code.org wants to feature them and is offering prizes for each winner!

    What does a Code.org Student of the Month look like?

    • A student who's learning in the face of adversity
    • One who's building amazing things with computer science
    • Or, one who's helping their peers learn, and is bringing computer science to others.

    Do you know a Code.org Teacher of the Month?

    • A teacher who is engaging or inspiring students in an exceptional way?
    • One who's working hard to spread computer science beyond their classroom?

    Every winning teacher will receive a $500 Amazon.com gift card from Code.org and be featured online.

    Please share your nominations to help celebrate students and teachers of all experience levels.

    To nominate a Student of the Week, go to: http://code.org/sotw

    To nominate a Teacher of the Month, go to: http://code.org/totm

    Wednesday, February 19, 2014

    Geek Squad Summer Academy

    This looks interesting.gs-logo Best Buy runs a summer program for students ages 10 to 18 in conjunction with various non-profits. Students get hands on experience in a number of interesting areas.

    Their web site is http://academy.geeksquad.com/ and you can find out about applying to host an academy at http://academy.geeksquad.com/proposal Information about finding a camp for a student you know may be found at http://academy.geeksquad.com/register though probably not for a while yet.

    WHAT IS GEEK SQUAD ACADEMY?

    Geek Squad Academy is an educational program brought to communities throughout the U.S. by Best Buy. We partner with local non-profit organizations to teach middle and high school students about the latest technology in a fun, interactive environment. Team building activities conducted by local Geek Squad Agents in classes such as PC Build, Programming and Robotics, Digital Photography, Digital Music, and Film Production help teens build friendships and self-confidence; as well as get excited by the opportunities technology can provide.

    gsabanner7

    Tuesday, February 18, 2014

    Sorting Isn’t Always Simple

    Like a lot of people I have been following the Olympics lately. For all the talk about sport and individual and team achievement there is always a lot of attention to what countries are “winning.”  Conveniently there are lots of places online where you can view current medal totals and see how each country is doing.
    There seem to be two ways to list what country is "winning" in theimage Olympics though. One is in total number of medals regardless of type.
    The other is sorting first by Gold, then Silver and then Bronze. So most gold is first even if they don't have any other medals. In a tie for Gold then how many Silver determines a "winner". Tie of Gold and Silver is broken by number of Bronze.

    There's also a third way: By totaling points where gold=3, silver=2, bronze=1. I haven’t seen that way lately but am told some people use it.image
    Which way is the right way? I suppose that depends on how you choose to look at things. If you are Norwegian or from the US you might prefer the list be ordered by total medals. At least as of the day I captured these screen shots. If you are German or Swiss then sorting by Gold first may be your preference.

    I see a lesson in computing here. One could easily create some sort of class to hold Olympic totals. By changing how the CompareTo method is implemented either sort would work just as well. I’m not teaching AP CS this semester and we’re not going to have enough time in my Honors Programming class (just one semester long) to do this but in the back of my mind I want to remember this as a good example for the future.

    Anyone else tried something like this? What did you use for different ways of sorting? How did it work for you?

    [Edit: I have a list of resources for teaching sorting at http://blog.acthompson.net/2014/03/resources-for-learning-sorts.html ]

    Monday, February 17, 2014

    Interesting Links 17 February 2014

    We’re having quite the winter here in New England this year. chain linksPeople in warm climates keep telling me about how warm it is there as if that would get me going. But I like the snow so I’m all good. I hope you are enjoying the weather where you are. In any case, here now are the links I found interesting over the last week.

    Do Things That Help You Become Less Wrong Eugene Wallingford writes about teaching students testing and debugging. A favorite topic of mine.

    Computer science professor Tony Morelli creates games for children with disabilities. Interesting project. I think it would be even better with Kinect than with Wii but that’s me. What do you think? 

    Innovators and Explorers Sandbox - I love reading about how Doug Bergman (@dougbergmanUSA) runs his school’s computer science program. Take a read.

    Know an administrator who's changing the future of Computer Science education? Nominate them for the Administrator Impact Award sponsored by CSTA and Code.Org.

    Mark Guzdial gives a wrap up of the Media coverage of analysis of AP CS 2013 exam results at the CACM Blog.

    Celebrate Canadian Computing Education Day 2014 in Video (and in Song, If You Like) via @csteachersa

    Two Kinect Speech Tips – more helpful information on Channel 9’s Coding For Fun site.

    Announcing CSTA's keynote speakers for 2014: Yasmin Kafai and Michael Kölling. Join us July 14-15 in IL. Register now!

    Looks like there will be a HS Hackathon in the San Jose area   March 8-9 at Paypal HQ. http://www.hshacks.com/

    This weeks interesting video to share is 15 Sorting Algorithms in 6 Minutes Some interesting visualizations.

    Saturday, February 15, 2014

    Keynote Speakers for CSTA Conference 2014

    Well we now know who the keynote speakers will be for this summer’s Annual CSTA Conference. I have heard Michael Kölling before and  he is a really good speaker. He has done a lot of work with teaching CS with various tools such and BlueJ and Greenfoot. Both of those were developed by him and his team at the University of Kent.

    I don’t know as much about Yasmin Kafai but the topic sounds very interesting.


    CSTA is excited to announce our keynote speakers for 2014!

    Yasmin Kafai is a researcher, co-developer, author and professor of learning sciences at the University of Pennsylvania. She earned her doctorate from Harvard University and is a Fellow of the American Education Research Association. Kafai’s discussion titled “Connected Code: A New Agenda for K-12 Programming in Classrooms, Clubs, and Communities” will cover three central shifts that lead us from computational thinking to computational participation—from code to applications, from tools to communities, and from scratch to remix—in teaching and learning programming to broaden participation in computing for all.

    Michael Kölling is a professor at the School of Computing, University of Kent, in Canterbury, UK. He holds a PhD in computer science from Sydney University and has worked in Europe and Australia. He is also an author and lead-developer of educational programming environments and a Fellow of the UK Higher Education Academy. Kölling will discuss “What’s Next for CS Education: Thoughts on Topics, Tools, and All the Rest.” In his talk, Kölling will share his speculations and opinions on what should happen in the near future for computer science education, focusing on educational software tools.

    Please join us at Pheasant Run Resort in St. Charles, Illinois July 14-15, 2014.

    Learn more on our conference page at: http://csta.acm.org/ProfessionalDevelopment/sub/CSTAConference.html

    and register today at: https://www.softconf.com/d/csta2014/

    CSTAConf-Logo

    Friday, February 14, 2014

    Searching for Code Snippets–Good or Bad for Students?

    This morning Rob Miles posted a link (C# Code Snippets on Demand) to a new site from Microsoft Research called Bing Code Search: C# code snippets on-demand. basically you enter a question “How do I …” and the site searches for a code snippet that can be used to solve you problem. Wow! Cool!

    image

    It’s a research project and there is still work to be done. Soon, they say, you’ll be able to automatically enter code snippets directly into popular IDEs. Since the language available is C# I assume that means Visual Studio and perhaps Eclipse.

    And then I thought “Do I want to share this with my students?” and my thinking got complicated. On one hand I really do want my students to become adept at learning how to do things on their own. In this day and age that means searching for answers on the Internet. It means learning how to separate the good from the bad and learning from examples. So this site could be a big win.

    On the other hand students also get good at asking other people to do their work for them. Hang out on any inline support forum enough and you’ll see cases of students looking for people to do their homework for them. They try to hide it but generally not very well. I want students to learn for themselves and to do their own work. I don’t expect them to memorize everything but I don’t want them to have to look up every little thing either!

    When it gets down to it I will share this site. I want students to explore beyond what we can cover in lectures and demos. I want them to be able to find the tools to make their own programs truly their own programs. Exploration is why I like that Visual Studio has Intellisense for example. These snippets are short enough that they are not total solutions and so students will have to understand them to really use them. And if they can’t figure them out on their own I’ll get a teachable moment. Right? Plus the searches I have tried so far bring up enough options that students will have to use their own judgment about which possible option is what they really want/need.

    What about you? Would you recommend this site (or one like it) to students? Or do you do as much as you can to discourage students from looking for code on the Internet?

    Wednesday, February 12, 2014

    My Favorite Students Ask Me The Most Questions

    I try hard to explain every well the first time. I really do. I think most teachers do. It never fails though that someone doesn’t get it the first time. In all honesty I think a number of students don’t get it the first time. On a good day though at least one of them will be willing to admit it and ask me a question. Or a bunch of questions. I love those students!

    I used to have a cartoon in my classroom. It showed a class full of students al thinking the same thing. In panel one it was something like “I don’t understand.” In the second panel they are all thinking “Everyone else gets it.” In the third panel they are thinking “I’m not going to ask a question and let others know that I am the only one who doesn’t understand.” Most teachers know that this happens more then they would like. But how do you fix it if you don’t know what the students are not understanding?

    Lately I have been blessed with students who will, if not in front of their peers at least in private, ask me for help with a concept. Invariably as we talk one on one I see a better, or at least different, way that I can explain the concept under discussion. Sometimes this results in me doing a bit of review next class. Sometimes it results in me adding to my class slides or notes. Sometimes it results in me writing a new demo. It always results in helping me to learn how to make things more clear to more students.

    In computing there always seems to be a different way of doing things. Just think about how many ways there are to do a cut and paste for example. Keyboard shortcuts, mouse clicks, menu options, you get the idea. For me it is logical that there are multiple ways to explain everything. I love computing. I mean I really love it. That means I really want to see my students love it as well. When they ask questions and give me another chance I appreciate it. When they help me discover new ways to make the topic fun, interesting and understandable that is a huge win.

    I suppose I could take these questions as a failure on someone’s part. On my part in explanation or the students failure to understand. But I choose to take them as an opportunity to learn more about the topic, about teaching, about understanding and about my students. While it might be great if my explanations were spot on all the time and that students understood it all the first time that is not reality. And besides it would get boring if I did everything the same way all the time.

    So spending time during a prep period or after school with a student reviewing a topic is a win-win. It is something I embrace as the best part of my day. I do love learning from my students!

    Tuesday, February 11, 2014

    What’s Wrong With This Picture?

    Are all I.T. Guys <sic> white males?

    INFOGRAPHIC - What Do IT People Really Do All Day?

    I'd hang this in my classroom if there were some women and some non-white males in it. Sure the information is not bad but there is a hidden message I don't want to broadcast to my students.

    Monday, February 10, 2014

    Interesting Links 10 February 2014

    A lot of people seem the be ready for spring. I’m enjoying the snow in my yard and around the area. Inspired in part by the Winter Olympics going on my family and I went snowshoeing in the woods over the weekend. I’m ok with a bit more winter. How about you?

    I have a few good links to share this week. Near the end is a set of links with different takes on the idea of computing or programming anyway as a replacement for foreign languages in school. Let’s start with a video though. A student talking about how she has become interested in computer science and how she wants to use it to improve the world of medicine.

    Why STEM? Why Now? Featuring student Ifrah Abshir

    Teaching sorting? You may want to check out this video of 15 Sorting Algorithms in 6 Minutes.

    There are no computer science teachers in NY Well not on paper. Read what some people (including some I know) are doing to correct this situation.

    Coming in March – The UK Hour of Code The Hour of Code was a great success in the US - now for the United Kingdom

    Rebecca Dovi pointed me to some posters by the Orlando Science Center called Career Bytes. PDFs free for the download.

    Career Bytes

    These posters were created by Orlando Science Center as part of an educational series for Otronicon. The idea was to highlight career aspects and information beyond just computer programming that are not always associated with the videogame and modeling and simulation industries.

    The idea of substituting a programming language for learning a second natural language has been a big discussion point lately. Here are a couple of links that discuss the issue.

    The Best Job of 2014 Has Been Announced.  Is your school teaching what is needed to prepare students for these jobs?

    The Top 10 Best Jobs:

    1. Software Developer
    2. Computer System Analyst
    3. Dentist
    4. Nurse Practitioner
    5. Pharmacist
    6. Registered Nurse
    7. Physical Therapist
    8. Physician
    9. Web Developer
    10. Dental Hygienist

    Wednesday, February 05, 2014

    Are We Going To Learn How To Do That?

    The other day I was demonstrating some things to my programming students. We’re at the very beginning of a new semester and students are learning the very basics. We were doing a simple exercise to help students understand how assignments work with object properties. The program moves the contents of one picturebox into another when a button was clicked. I took my sample program, added an array and a timer and had it automatically rotate images across the screen.

    image

    It looks sort of nice and reminded me of the old idle loop light displays we had “back in the day.” It was something I did just for the fun of it. One might say “because I could.” And then a voice in the back of the room asked in wonder “Are we going to learn how to do that?” And then it hit me that I had done something a bit more interesting than I’d intended. I’d attracted some curiosity with it too!

    Students are always willing to work harder to learn something they want to learn. A number of teachers have talked to me about just in time learning where students are taught a concept because they need it then. I tend to push out a concept and  then asking them to use it in a project. I think I need to set things up so they pull the concept from me rather than me pushing it out. Doing the right demo may do that. That is something I want to try.

    At this point  I’m planning on demonstrating working programs first and then talking about the concepts needed to create them. What I want to do is create projects the students want to do so they want to pay attention. Few seem to be interested in learning for the sake of learning. Or even for potential future use. If they see an actual use that seems interesting I think it will be easier.

    Ultimately I want to help students motivate themselves to learn rather than me trying to force feed them information.

    Tuesday, February 04, 2014

    Software Is Empowering

    Microsoft ran their first ever Super Bowl commercial over the weekend. While it is obviously a advertisement for Microsoft and Microsoft products I see it as an advertisement of the empowering and life changing potential of computer software. That is a message I try to give to my students on a regular basis.
    Computing is so much more than business machines or game machines. In so many ways computing is making a big difference to empower people in their daily lives. In the commercial we see a bit about the connection between medicine and computing about which so many people are unaware. I see this as an important message for many of our young people to see and hear.
    image
    The commercial highlights, very briefly, some major empowerment of some people and is pretty moving. The Microsoft video site though has longer (about 2 minutes apiece) videos on each of the people in the commercial. I’ve listed them below with direct links in case you are interested.
    • See how Skype is allowing students around the world to take virtual field trips. (VIDEO)
    • Watch the amazing story from @teamgleason. (VIDEO)
    • Technology changed a little boy’s life. Watch his story here.
    • Imagine hearing for the first time at 29 years old (VIDEO)
    • Once an artist, always an artist. (VIDEO)
    • Surgeons provide better care to patients using @GestSure and Kinect. (VIDEO)

    Monday, February 03, 2014

    Interesting Links 3 February 2014

    Starting the second week of a new semester today. Last week was interesting. It was a major adjustment because with a new group of students I had to reset my expectations. I had to transition from a group of students who had been learning things for months to a group that was hearing things for the first time. It harder than some might think. All in all I seem to have spent less time online this past week so only a couple of things to share. Some good ones though.

    I’m taking a look at this Microsoft Excel Lesson Plan: The Olympics for possible use in some of my classes. I like the idea of something timely that students might be interested in doing.

    Congressional App Challenge (on Twitter at  @congapps) started yesterday:app challenge logo2

    Modeled after the Congressional Art Competition, the House Student App Challenge promotes Computer Science and STEM (Science, Technology, Engineering and Math) education by recognizing and incentivizing our nation’s young programming talent.

    The House Student App Challenge is open to all high school students in participating districts. The inaugural App Challenge will run from February 1 to April 30, 2014.

    How I teach programming to 7-11 year olds using Scratch was written by Phil Bagge in the UK, Something for people teaching younger students. Phil is on Twitter at @Baggiepr