All Girls Intro to Computer Science Camp

A few weeks ago I had the privilege to be part of a team that taught an Introduction to Computer Science camp for girls who were rising 9th and 10th graders.  According to the student online journals and our discussions with the parents on the last day, the camp was a big success for most of the students.  We had three other teachers (total of two men and two women) with experience teaching high school computer science.  Things that worked:

  • We had a variety of activities.  It was not all coding:
    • We visited NC state’s unbelievably awesome, new engineering library.
    • We had a way cool female guest speaker from the tech world talk about IBM’s serious gaming division (she is the Manager).
    • We visited the CS graduate student teams and were able to talk individually about their projects.  This interactivity with programmers as well as the variety of projects that were being worked on allowed the students to get a good feel for what it was like to work in the field.
    • We showed videos in the morning while the students were arriving that started with non-CS/Math (popular/funny YouTube videos) moved to fun math/CS (Vi Hart)videos to more serious videos about computer science (girls in tech, careers in computer science etc…).
    • We did logic warm-ups that were fun and a little difficult.
  •  Pedagogy that worked:
    • Non-computer learning activities.
      • Human walk-through.  It is important for the students to be able to visualize what the computer is doing.  Most new students don’t realize that you have to tell the computer to do everything (pick up pen, put down pen etc…)  We required the monitors to be off while for the short beginning lecture and used a “human-walk” through of the concept with the students giving the commands and the teacher performing exactly what they told the teacher.
      • Hands on activities.  We did the popular binary birthdate necklace activity.  I actually thought this was a waste of time before we did it.  Why did the students need to know about binary in an introduction to CS course?  Boy, was I wrong.  It was an awesome activity.  It is critical to do a good job explaining how binary works.  I showed a cool Vi Hart video on it the next day.  It was really cool to see that the students were like “I understand this… this is cool”.   We did a decent job of explaining how it works (it helps that the students are very smart).  The positive social energy while they made their necklaces (everyone was helping each other) was amazing. Some girls wore their bracelets all week.
    • Immediate application of the concept.  The students immediately “tried out” the concept using an easily accessible coding language (Snap!).  We assigned the students short projects that allowed them to try their new learnings.
    • Collaboration – We assigned students to work in pairs and re-arranged the students into different groups every day.  This worked extremely well (especially since we had 3 pairs of identical twins).  Not only did they get to know each other, but if they were with someone that they did not work well with, it was not for long.  For the project the last day and a half, the students were allowed to pick their partners based on the type of project they wanted to create. It is always interesting to see who worked whom. There were some pairs that I would not in a million years have thought would choose to work together, but they got along great and were extremely effective.  We had the students “peer review” each others final projects.  This was an informal activity where the students could see, comment on, and ask questions about other team’s projects.
    • We played music while they worked.   It sounds like a small thing, but it added to the positive energy of the room
    • Created room for personal creativity.  Most of the short projects allowed the students to add their own uniqueness to it.  The could import a picture to use as background or choose a sprite that was a unicorn or a dragon (or just keep it as an arrow).  Another project required the students to create a mad lib.  The functionality for all of the students was the same, but they could choose their story.  Programming is ultimately a creative endeavor and letting the students put their creative stamp on the project made it a lot more interesting for them.
    • Culminating project that brings it all together.  The students were almost addicted to working on the last project.  We gave them categories (android app, game, story, etc…) but they were able to create anything they wanted to.  We had to tear them away from their computers for lunch and they asked if they could go back after they finished eating to continue on their projects.  Many of the girls worked on their projects from home.
    • Online journals.  We asked the students to journal at the end of the day.  Not all of the students liked to journal, but we found out a lot that was working and was not working from the journals and were able to make adjustments for the next day.
    • Used different lecturers, especially someone the students can identify with.  All four of us taught at least once, but we also had an undergraduate student who was helping us. She was very familiar with Snap! and give a lecture for one lesson.  She was close in age to the students and she was a way cool girl.
    • Daily post-mortems.  The four teachers would meet at the end of the day and list what worked and what did not and then make adjustments and plan for the next day.
    • We tried not to make too much out of the fact that they were girls in CS and they were very unique.  We did tell them some of the facts (only 17% of the CS majors are women and ten years ago it was 35%).  Instead, we not only tried to show them examples of women who were in CS (through guest speakers, the teachers and videos), but also women working with men in tech.  For example,  they visited grad student teams that were working on various projects.  Almost all of the teams were an equal mix of men and women.  It was very powerful for the students to see how men and women programmers work together.  The grad students who were women were just programmers, they were not some weird special breed.
    • We tried not to go “pink” and make the camp “girlie” (see article on the backlash to “pinking” CS), but we did do some activities that may not have gone over well in an all male CS camp (such as the binary bracelet and using a meowing cat as the first project) and most of the girls enjoyed these activities.  Giving the girls the opportunity to choose an activity or design that is more feminine is important, but assuming all of the girls would make the traditionally feminine choice is a big mistake.  Yes, some girls chose the unicorn as a sprite in Snap!, but others chose the fire breathing dragon and others chose the bat.  It is a tough balance to keep.  They are girls and, in general, they are different than boys.  But, they are much more than just “girls”.  They are individuals and this individuality should be encouraged and respected.
  • Things I might do differently
    • Create a large project that incorporates all of the concepts being taught and allow the students to work on the pieces of the project that use the new concept.
    • Make sure the students save frequently.  We had multiple issues with the equipment and the students lost their work.
    • Have the students journal from the first day.
    • If the teacher walks the students through some code, have the code actually printed out so the students can easily refer to it.
    • Make the camp two weeks instead of one.  This would allow for a project that could really incorporate all of the concepts.
    • Use some kind of mobile app creator (such as app inventor).


Why True but Not Provable?

Kurt Godel is one of my heroes (along with Norman Borlaug – but that is for another blog entry).  In the early 1900’s Bertrand Russell and Hilbert were trying to prove that for certain number systems that all true statements could be proven by axioms WITHIN the system (completeness).  Tying up number systems with a nice neat, consistent, complete bow was very attractive to these mathematicians.  Unfortunately, Godel came along and showed that for any computable axiomatic system that is powerful enough to describe the arithmetic of the natural numbers that:

1.  If the system is consistent, it cannot be complete (If the system has only statements that can be proven, then there are others outside of the system that are true, but cannot be proven).

2.  The consistency of the axioms cannot be proven with the system.  (There may be external proofs that exist, but not ones within the system)

Some great explanations of the theorem and it’s philosophical ramifications are here:


There are many ramifications of Godel’s Incompleteness theory, but the one’s I particularly like are:

1)  As Douglas Hofstadter says “Provability is a weaker notion than truth”.  True but not provable!

2)  Led to the birth of computer science and showed Alan Turing the way.  The

“Godel-numbering” system took syntax and represented it by numbers, effectively showing the how to take 0’s and 1’s and represent logic (arithmetization of syntax).  http://link.springer.com/chapter/10.1007%2F11780342_14#page-1

3)  Established bounds on what is and what is not computable.  Does the “human mind infinitely surpass the powers of any finite machine?”  Godel believed that this was a highly likely conclusion based on his theorem.

Godel uses logic to play the beautiful music of mathematics and computer science by showing that Truth may not be Provable.



Pilot / Surgeon Training is a Good Template for Math Pedagogy — WHAT?!

I stumbled on this website and thought it held promise.  But, after following the link to


and to


I have to say that I was dismayed to say the least.  All of our math students should be like pilots and surgeons?  Wow.

I have spent the last 25 years doing a variety of jobs that use math (financial analyst, computer programmer, real estate investment and management, even elevator electrician) and I can confidently say that I have used lots of math and there was no way that a “pilots checklist” would have been helpful for any of the jobs.

Also, for the vast majority of jobs, you don’t have to get the math perfect the first time.  You are usually using imperfect data to make imperfect (but hopefully close) decisions.

I am all for differentiating math for individual learning styles and multiple intelligences, but I definitely do not like the term “personal learning” being a euphemism for rote memorization of steps to solve math problems with the emphasis on accuracy and not understanding.