CS50x International Puzzle Day

My students and I participated in the CS50x International Puzzle Day last weekend.  The puzzles were difficult.  VERY difficult!  Most did not have instructions, which my students found baffling!  We spent a class period on Friday doing the puzzles.

I built a pseudo-random name generator in Processing, which I used to draw their names for raffle prizes.  On the list of prizes were CS50x stress balls, t-shirts, puzzles, 3D printed key-chains and more!  Their homework was loosely defined as, “Do more work on the puzzles with your team to the degree that you find it fun.”

Monday morning, I found the outcome fascinating.  In one of my classes, the majority of students had played around with the puzzles, noodling with some ideas, trying to make some connections.  They hadn’t solved many of them, but felt a clear vibe of satisfaction at having made an effort and participating.

In the other class, the students reported that the puzzles were too hard and that they spent very little time thinking about them.  I couldn’t stimulate the same rousing discussion about various approaches to these puzzles that I could in the other section.  In fact, they seemed a little angry that the puzzles hadn’t come with better instructions.

I wondered what accounted for the difference in response: personality, stamina, interest? Was there some way in which I had communicated differently on Friday with these two groups?  The class that had popcorn (I ran out– oops!) was more enthusiastic.  Was food the key to enthusiastic puzzle solvers?  More than half of the enthusiastic class had attended the CS50x AP Hackathon at The Browning School, whereas only two from the less enthusiastic class had attended.  Did that reveal something?

I, on the other hand, spent much of the weekend texting with colleagues, competitively trying to solve the puzzles.  In the end, we felt confident about four of our answers, which I submitted, and on Monday we laughed and continued puzzle solving, even though the “competition” was over.  I talked with them about how much satisfaction we all got from talking about and thinking about these puzzles, and how uncomfortable the lack of directions made some of my students.

In the end, I think showing my students the satisfaction associated with trying to solve a seemingly impossible puzzle, even when you don’t succeed, is something I want to accomplish more often in all of my classes.  I am working with colleagues to find ways to do better with this in my math as well as computer science.  If students walk away from my class feeling empowered to approach very difficult problems and find satisfaction with them even when they don’t quite find an answer, only sawed away at it, I have taught them a skill that will help them in every area of life.  This International Puzzle Day reinforced that for me.

Now, back to working on those puzzles!

Microsoft CS50 Hackathon: NYC!!!

CS50HackHOPPostcardYesterday, I had the privilege of traveling to NYC with some of my students to participate in a Microsoft sponsored CS50 Hackathon at The Browning School.  My students walked in and immediately spotted Harvard Professor, David Malan, and started whispering to each other, “He’s the one from the videos!”  I am not sure they would have been any more excited if they had just spotted Adele.  They truly acted like this amazing professor of computer science was a rock star, and I couldn’t have been prouder.

Soon after that, a few of us were interviewed (It isn’t a true CS50 event without cameras and swag!).  My students made me proud with their confidence and ease discussing their course on camera.  They were so professional!


Professor David Malan started off the Hackathon by handing a bold volunteer a giant yellow phonebook and inviting him to do the now famous CS50 stunt of ripping it in half to find the name “Mike Smith” more efficiently.  He then had us work together to count the number of people in the room.  We epically failed and he announced that it would certainly not be the only “bug” we found that day.


Professor Malan also shared that he had never coded until he was a sophomore in college, which was why he was so excited to see a room filled with high school students learning computer science.  I was reminded of the importance of exposing every student to this discipline so that we don’t miss the future professors due to lack of access.

Since my students had not done much coding yet this term, I expected that they would  do the first CS50 problem set, which is in Scratch, but I quickly realized that they felt a little under-stimulated and wanted to be more challenged.  I got them set up on the cs50.io IDE and sent them to a walk-through with Zamyla and another young CS50 star without even having read the problem set.  After that, my students set about learning C and teaching it to each other using the CS50 online resources.  I was struck by how willing they were to put themselves into an uncomfortable situation with no direct instruction from me.  All of these students have had experience coding in some other language, but none had ever used Bash or C.  They were not at all intimidated and went forward fearlessly.  As I wrote in an earlier post, we haven’t coded at all yet this term, and they were eager to get going!


As we left the Hackathon, arms filled with candy, pizza, CS50 sockets, t-shirts, bags, and balloons, I was overwhelmed by the generosity I had just witnessed.  Educators from so many institutions were all helping each other’s students, making sure that every student in the room felt supported.  Two of my colleagues in the CS50 pilot had come without their own students, and so adopted mine and were helping them get started with C.  All of us were sharing our favorite tools for the classroom and our hopes for what we will do next year.  I was invited to help plan another Hackathon for next year, and to collaborate online with some of these inspiring teachers.

Last week, I told my students that computer scientists are special because they love to share their knowledge, as evidenced by the prominence of open-source projects.  The community of educators who participated in the Hackathon at The Browning School clearly embody this generosity of spirit, and I was inspired and excited to share a day learning and teaching with them.


CS50xAP: Binary, ASCII and Algorithms, Oh My!

It is amazing to me that I am only two weeks into the CS50x curriculum, as I feel like these students and I have already accomplished so much.  As we continued to forge ahead with Unit 0: How Computers Work, our thoughts turned to figuring out how binary and ASCII really work.  We studied the code I wrote for the “divide by 2” algorithm for converting from decimal to binary.  Next year, I might make students write it with some help.  I don’t like that I did all the big thinking on that one.  Students found the Cisco Binary Game very fun and a great way to reinforce binary numbers.  They were all laughing at one point telling me how “stressful” it was!  I told them that they needed to tell their parents, “My computer science teacher stressed me out by making me play a game for homework!” and see how much sympathy they got.

For our next lesson, students wrote secret codes to each other using ASCII.  It was clear that even for 16 and 17-year-olds, passing secret messages is still fun.  Students were amused by the turtle-like speed of the human processor when dealing with binary.  One student joked that she could process about one character per minute.  It led to a great conversation about the fact that the slowest component of a computer’s processing speed is actually the human operator.

We ended the week hearing about the technologies that each student had read about.  Students were required to read three articles from within the last three months about technological advances.  Students were asked to describe the technology and then discuss its possible impact on and value for society.  The discussion was fascinating as we considered things like Amazon’s 30-minute delivery drones and Goldman Sach’s predicton that virtual reality will be bigger than TV in ten years.  I was surprised to find that my students were not inherently more comfortable with the marching forward of technology than I was.  In fact, they might have found Spotify’s new messaging functionality more disturbing than I did!  Overall though, we were all inspired and truly blown away by what people are building and the ways in which their innovations might change the ways we live.  Next week, we get to finish up Module 0 and start coding.  It almost feels too long into the term to start coding, and I can’t wait!


Teaching CS50x AP Module 0: How Computers Work

Last week, I finally began teaching the CS50x AP material at my high school.  I trained for this last summer at Microsoft’s HQ, and have been anxiously awaiting the course start date.  After all the wait, the timing seems serendipitous as it aligns with President Obama’s Weekly Address about giving access to computer science to every student in this nation.

The first module of CS50x AP is new, as it is aligned to the College Board AP Computer Science Principles course.  The focus of the module is on how a computer works from a technical standpoint, and it is not something I have ever spent a lot of time on in my courses.  As such, I did a lot of reading and watching videos to prepare, and found myself fascinated by the ways in which computers have changed, as well as how they continue to be very much the same.  Here are some of the highlights of the week:

  • Students helped me attempt to completely take apart my old laptop and an old school computer.  They were able to identify parts and pieces within the machines based on the information that they learned from class.
  • Students and I took a field trip to visit the school’s Systems Administrator, Mr. Anderson.  In preparation for our visit, he took apart a few old servers and showed them the insides of each of the servers.  The students noted that they were just like the PC we had seen earlier in the week, but with duplicates of nearly everything inside.
  • Mr. Anderson impressed the students by discussing all of the processes that he has automated so that the school’s system never needed to shut-down.  He explained the importance of redundancy of both data and parts, and demonstrated how the servers were set-up with the ability to “hot swap” nearly every part in the middle of the school day.  All of this, he told us, was so that he didn’t get phone calls!  I was so grateful to him for helping them see the importance of automation and redundancy.  It was a great visit!
  • Students wrote about computers that they have in their homes using the following definition, “a device that accepts input and automatically produces an output.” I learned about toasters, microwaves, refrigerators, car GPS systems, and all sorts of other fun “computers” in my students homes.

This week, we start thinking about binary, abstraction and algorithms.  I am having so much fun, and from the smiles in class, I think they are too!