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.
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?
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.