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:

http://www.miskatonic.org/godel.html

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.

 

 

Do not teach your students to imitate math

Mathematician’s Delight by English Mathematician W.W. Sawyer (1911-2008)

“It would, I suppose, be quite possible to teach a deaf and dumb child to play the piano. When he played a wrong note, he would see the frown of its teacher, and try again. But he would obviously have no idea of what he was doing, or why anyone should devote hours to such an extraordinary exercise. He would have learnt an imitation of music. And he would fear the piano exactly as most students fear what is suppose to be mathematics.”

Teaching Math is Like Teaching Music

I have always wanted to start an Algebra II class in a very different way to show the students that mathematical notation is not Math.  It just describes and helps us communicate Math.

I want to print off one page of sheet music and set it on the Algebra II students’ desks and immediately start talking about Major keys and Minor keys and how to do inverted note transformations.  The whole time I will be firing off definitions of deceptive cadence, Gavotte and Klangfarbenmelodie. Then I would assign them homework that is designed to have them practice the transformations over and over again.  I would do all of this without ever letting them hear the music.

Unfortunately, Math class can become this type of experience for many students.  How often do we as teachers throw a worksheet on the projector to introduce a new concept and then walk through the worksheet showing the student how to manipulate the letters and numbers on the page while firing off definitions of standard deviation and variance and think that they have just taught Math?

Math textbooks are perfect examples of presenting the notation first.  I was reading my son’s Algebra II textbook and the very beginning of the chapter begins with the words

 “An exponential function has the form y=abx where a<>0…”.

Most people look at that sentence and think that it is gibberish.  As a Mathematician, I look at that sentence and I actually see the graph and think of a real world business situation that it can represent.  I feel the flow of the numbers and the elegance of it getting infinitely close to “0” as it goes to the left.  I hear the music.  Just as a conductor can hear the music in his head when he reads a score, most math teachers hear the music just by reading the “notes”.  Unfortunately, most students cannot do this.

I have not taken a lot of music classes, but one of the best ones I have ever taken is one given by Professor Robert Greenberg on Beethoven’s symphonies.  In each lesson, he starts out by playing a whole movement of the symphony and then leading a discussion about how it makes us feel and what do we hear in the music.  He then plays small chunks of the music and shows, using musical notation and definitions, how Beethoven is able to accomplish such amazing work.

Math class should be a similar experience, but teaching students to hear the music of math is much harder than Professor Greenberg has getting his students to hear the music.  All he has to do is turn the stereo on and the sound flows around the room.

Even though it is hard, Math teachers must find ways to let the Math music flow around the room.  What student wants to just manipulate letters and numbers and memorize steps?  You want to know why many students say “I hate Math”?  It is because they do not hear the music, all they are doing is writing notes.

Why is T.E.A.L.S. Awesome for High School Computer Science?

I am a T.E.A.L.S. volunteer Computer Science instructor teaching in a local high school.  This is my first year and I was recently asked how it has been going.  I said “Awesome!” and then I was asked why.  It has been three quarters of a year and is a good time for reflection.

Why is TEALS awesome?

TWITTER answer – “TEALS makes it easy to share what I have learned, with great kids, in a subject I love, for an industry that desperately needs talent”

BLOG answer:

CS is a great career for students and the US needs them

We don’t train enough programmers. 80,000 programmer positions go unfilled by U.S. workers every year. Yet, only 10% of the high schools have computer science classes. The number of CS AP tests taken each year has barely grown, while the number of US History and Calculus AP’s has tripled since 1996.

It is an incredibly lucrative career – CS is the highest paid and highest ROI field to go in. A UVA CS degree had the highest ROI in the whole country (more than any Stanford or Harvard degree).

Girls are NOT becoming programmers – The number of female CS majors in the last decade has been cut in half from 20% to 10%. As a country, allowing 40% of our human resources to not be in a high need, lucrative career is just foolish.

T.E.A.L.S. is a great idea and makes it easy to get involved.

T.E.A.L.S. makes it easy for volunteers.  The T.E.A.L.S. concept of teaming experienced teachers with industry computer science veterans has allowed me to enter the classroom and make an immediate positive impact without having to worry about having “experienced teacher specific” skills such as classroom management or assessment. They gave me teacher training, coordinated my involvement with the school and provided a network of support from the other T.E.A.L.S. teachers and volunteers via the online social networking site – Piazza.

CS teachers get free help –  A CS student spends most of their class time writing computer programs.  It is very difficult for one teacher to get around to all of the students who need help.  Both the teachers and the students benefit from the extra pair of hands and volunteers can make a positive impact from day one.

The value add is high.  As a CS industry veteran, I know how software is developed (e.g., collaboratively with lots of white boards), what good code looks like (e.g. lots of comments, generic for re-use etc…), and can share real stories that bring computer science alive.  For example, to emphasize the importance of writing clear code with lots of comments, I related a story about when I received a 2 a.m. emergency call to fix a program that was written entirely using a dog as a metaphor (e.g. if hind leg broken go to front leg). The code had no explanatory comments and the programmer no longer worked for the company.  It took me four times longer to fix than if it had been coded clearly.

The kids, the kids, the kids.

Impact by teaching – One of the most formative times in anyone’s life is in high school.  I get to be a part of it.  I love seeing the “oh, now I get it” light go on.  There is nothing better than teaching recursion or how arrays work, seeing the light bulb go on, and then hear students as they explain it to the person sitting next to them. I just walk away smiling.  Learning truly is the gift that keeps on giving.  I get to teach these kids how to think and solve hard problems.

Impact by sharing experiences – I have the unique opportunity to engage with these kids. I get to listen to their dreams and insecurities and share my experiences and perspective with them.  Whether it is talking about my experience of taking an internet startup public or a female colleague sharing her stories about writing software for the International Space Station (the kids were wide-eyed and enraptured when she was talking), the students can visualize themselves doing the same thing in a CS career (or more).

Impact by just being interested in them – The most powerful teaching tool is to see students as individuals. It not only reinforces classroom learning, but more importantly, affirms the hopes and dreams they have for themselves.  I just wrote a recommendation letter for a female student (who plays classical guitar at the Kennedy Center) to go to STEM CS camp at VA Tech this summer.  Another student likes to design computer 3D animated figures.  This week I am going to print some of his creations on my 3D printer.  One senior girl was worried about getting into Virginia Tech, her first school of choice. She is good at CS and likes it.  I strongly encouraged her to think about CS, knowing that her chances of being accepted would triple.  She just got accepted to Virginia Tech as a CS major.

I get to make a difference doing what I love

I love programming

The problem with being a good programmer is you get promoted out of your job into management.  I have not programmed anything for 15 years.  I forgot how much I love it.  I love how the computer gives me freedom to create.  I have horrible fine motor and 3D skills,  and can barely use a table saw, but I can make a computer do almost anything.

I want to make a difference

I achieved everything I wanted to in business.  I co-founded a company and helped grow it to 250 employees and a public listing on NASDAQ.  Yet, at the end of that experience, I was left wondering how much I had made the world a better place.  I didn’t think about those things when I was 30, but I definitely think about them now.

Teaching makes a difference.

As a businessman, I have always thought that the best investment I could make is investing in the development of my own mind.  Now that I am older, what better investment with my time now, than in the development of other minds?  I have been in Teddy Roosevelt’s arena and have the knowledge and wisdom gained through “victory and defeat.” Being able to share what I know and have experienced is one of the most rewarding things I have ever done.

I never anticipated that I would like teaching as much as I do.  After a month of teaching, I was driving my wife crazy.  I would come home and talk about the class, the kids, and the programming for hours.  I would talk to her about new ways I was thinking to explain some of the concepts, or how to make the students improve their solutions to the programming labs.  I am now actually completing a career switcher course so that I can teach full-time computer science, math and business in the Loudoun County Public School Systems.

And that’s why the Teals program is awesome.

 

 

Binary Computer with Dominoes

Best explanation of binary math I have seen.

If you haven’t seen it – this is an awesome video showing how to build a binary computer with dominoes.  He ends up adding two four digit numbers to get a five digit number and it takes 10,000 dominoes.  He does it all in 18 minutes.

My class was on the edge of their seats watching it.

 

Math lesson plan sites

LESSON PLANS: 

I have been clipping websites with good math lesson plans into my Evernote account. I have made the list public:

https://www.evernote.com/pub/compsciteach/teachinglessonplans

I tried to organize it by adding a descriptor at the beginning –

Assessment – can be used for assessment purposes

General – websites with lots of different math lesson plans

Real Life – websites that generate lesson plans based on real life examples

Short – Can be used for entrance tickets/transition activities

Virtual Filing Cabinets – Bloggers who share the lesson plans they use

Some initial thoughts:

1)  Dan Meyer (dy/dan) and Fawn Nyguyen rock.

2) The lesson plans at the Shell center are amazing – not only do they give you everything (including common student mistakes) – they have been tested in classrooms and revised.  I haven’t had the chance to look at many of the other ones.

 

MATH TEACHING TOOLS:

I also have been trying to keep track of the cool math (and general) teaching tool websites (Desmos etc…). Check out my list:

https://www.evernote.com/pub/compsciteach/teachingtoolsonline

1)  Desmos and Geobra are incredible.

2) At the end of the Beyond Graphing Calculators pdf there is a list of good ipad apps.

3) Screencast -O-Matic is how the Khan Academy guy makes his videos.

4) Check out the msmathwiki – it is the Twitter math camp resource page – awesome collection of links.

Please let me know websites you think are awesome, by leaving a comment and I will try to add it to the list.