Saturday, June 4, 2016

Teaching Computer Science: What is enough?

CS50x AP Reflections/CSFair Reflections

What is enough when teaching Computer Science to high school students? Since having a successful Computer Science Fair I have been asked about the experience and a few teachers have shared concerns about their own fairs and I want to address those topics. First, every concern mentioned to me was a concern of my own prior to our fair. Just as teachers are expected to foresee misconceptions prior to teaching I suppose planning for mishaps or gaps during a presentation is just as important. I would also like to add that our Computer Science Fair provided a platform for students to exhibit the culminating work as a result of a course created to meet the requirements of the Computer Science Principles AP framework.  The AP (Advanced Placement) tag as per College Board is an opportunity for high school students to engage in college level coursework. My course Programming and Apps adapted the course lessons and assignments from CS50x and CS50x AP.
Concern: Projects don’t look fancy or flashy.  How ‘bout if guests viewing the presentations don’t realize what really went into creating the project?
When teaching computer science we approach the aspect of programming as a tool.  There are many different programming languages and an introductory course is just that…an introduction.  Here is the issue.  What is enough?  This course began with understanding binary and quickly catapulted into understanding loops, conditional statements and procedural languages that are compiled namely C. Frankly, none of the course problem sets were flashy.  We didn’t teach flash or any graphic arts for that matter.  There were a few opportunities where via an API we incorporated graphics but even those graphics were simple shapes. When we got into HTML and CSS we could incorporate existing photos/images and styles but even then we didn’t get into graphic arts so be OK with it not looking fancy or flashy. It is the student’s job to explain what it took to create their project.  In my fair, when possible, I had two laptops for students to showcase both the code and the user interface.

 Concern: Projects are coming along slowly.  How ‘bout if the projects are not finished in time for the fair?
Haha!  Good one! First of all, once again, the student’s responsibility.  How I tackled this topic though...I had students provide evidence of all they did complete and if the actual project they intended was not complete I asked them to commit to having something to show.  Something completed. For example, if students decide they are going to create a drone from scratch with working motors and controlled by their phone and it’s not progressing like they would like I suggested creating a game (mobile app or web app) that would give facts or quiz people about what makes drones work.  Even an elaborate blog post with pics and step by step explanations of leveling and connecting motors.  A simple webpage should actually suffice for a final project in an introductory course but since these students were ambitious enough to do more embrace it as the topic of a webpage to be continued instead of seeing the project as unfinished.

Concern: I do not know how to do all the things students want to do. What happens when I’m asked a question about the project, after all this is my course?
When giving students the autonomy to choose their own final projects it is inevitable that students would select things that may not be in your wheelhouse. I personally struggled with this a lot.  I wanted to help students with their projects but when they chose to create a robot that required soldering and wires I had to admit that physical computing was actually beyond the course and beyond the knowledge I currently have.  I supported them by helping post in forums or suggesting professionals that may be able to lend advice.  When students submit a pre-proposal or their proposal for that matter don’t hesitate to let students know where your knowledge limits lie. Don’t make the mistake I made and drain yourself at coming up with a solution to every project.  Let students know that the project may need to morph or that they will have to do a lot of independent work.  And when they do complete the project and it’s time for the fair, make sure guests know that students owned those projects and questions should be directed toward them.

Concern: Projects are missing graphics. How ‘bout if the general public could have created something “better” using a tool versus working from scratch?
Have you ever had those Pillsbury cookies, you know the slice and bake kind that come out of the oven warm, and perfect and with the picture of that princess from Frozen? You take them to a party and pretend that you made them from scratch because, after all, you baked them.  Then there is the lady that brings in the cookies clearly made from scratch with homemade icing and a personalized touch but not quite so perfect and definitely no Frozen character on them.  Everyone knows her cookies took more time, they’ve seen the cookies at the grocery just like yours. This doesn’t mean that people don’t appreciate the Frozen character cookies and it doesn’t mean they don’t taste great but people understand that the bling is bling and that doesn’t mean the graphics make the product. Besides see above this isn’t graphics class. Educating students and adults about what goes on behind the scenes in those drag and drop sites and that you are teaching students to start at the bottom (lower level) is ok.  And true, the graphics are cool but people really dig the story that goes into your project so much more. Snake a JavaScript game readily found online doesn’t look like a snake at all but students gravitate to the challenge of the game just the same.

Concern: This is a first. How do I know who to invite?
It’s up to you.  I know my administration wanted to hold back on the invitations.  I wanted to invite other schools to our event and was told to see how this year goes.  I personally am more of a ‘make the first one count’ kind of person.  We invited family, state representatives, students from other classes within the school, the Board of Education, and university faculty from the colleges in our county. We even sent an invite to the President of the United States. He said he wants everyone to learn to code, right? I don’t think it matters if this is your first rodeo or 10th you and your students have a reason to be proud so invite whoever suits you.

Concern: Projects are reproductions of already created products. How ‘bout if guest students make fun/judge the efforts of the fair participants?
First of all, shame on those people who judge your students’ projects but then should they be judged?  Students need to feel the pressure of showcasing to the public.  If students truly put forth their best effort and demonstrate what they learned guests will react positively.  I think some of the favorite projects at our fair were replicas of other games. i.e. Snake mentioned above.  Guests were actually impressed that a student could recreate it with a twist.  Students who have not taken a CS class are more curious than anything about what the course is about, a course where you get to play on computers and show off your own video game. Our experience was that guests were not concerned with the specific details of the project but they know they haven’t done this before themselves.

Concern: We are limited on space.  How ‘bout if too many people attend?
See above regarding invites.  Invite what you can accommodate but really is it possible that too many people show up to see what your students achieved with their projects?  One thing you can do is if having an event in an entry way or cafeteria that is filling up have some volunteer students from a different class prepared to take guests to a temporary holding area or have an ambassador give a tour of the school.  This gives time for the congestion to lift and allow more participants in the active zone.

Concern: Some of the projects are created in Scratch and that was our first problem set.  Is this enough to show they learned the concepts of the course?  Is it OK to allow these kinds of projects?
I allowed and even encouraged Scratch projects and MIT AppInventor projects. Why?  Both tools allowed students to dive in to the development of the game, or app they were creating without having to create graphics as previously discussed and without getting caught up on syntax.  Although we were teaching the importance of syntax throughout the course I believed it to be more important to take away the process of development and with so many different languages that required so much different syntax knowledge I didn’t want to be hung up on that if a student had a good idea.  I felt that Scratch projects can be in-depth projects and they were! Remember Computer Science is understanding the development of an algorithm and design of computational systems, not a single language.  


  1. This comment has been removed by a blog administrator.

  2. I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post

  3. Nice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here. Cable Universe

  4. As a general rule, in-constructed accessories don't play out their necessary undertakings to the normal levels. razer viper mini

  5. for example, sound and enhanced visualizations. Computerized games are additionally described by their convenientce and boundless availability. VMake Video Editor Mod APK

  6. The best thing about online computer games is that these games have effectively defeated the geological hindrance among the players. Pc games