I teach high school primarily because I believe that exposure to programming can significantly broaden students’ horizons at a critical time in their lives. I don’t expect many of my students to head off into pure computer science but I do hope that most will find opportunities to leverage computing in their application area of choice and that they will be more creative and marketable because of the experiences they’ve had through my classes.
One of the ways I try to inspire students to find ways in which computing is relevant to them is by bringing in guest speakers of various backgrounds. Last week, I had the pleasure of hosting some bioengineering undergrads from the University of Washington who put on great demos and spoke passionately about the research they are involved in. The lab they are affiliated with, headed by Dr. Ratner, has a formal outreach program and encourages local teachers to invite them to their classrooms — what a great idea! This is the second year I’ve had their group in and I continue to be impressed by their enthusiasm, professionalism and ability to convey complex ideas to high school students.
We had an hour and 50 minute long period which was almost too short for all they covered. The theme was the role of programming in bioengineering and several projects were used to illustrate how it fits in. After a brief introduction, the students split up into groups and did 20-minute rotations through 4 stations. Two stations showed LabView programs simulating biological processes. One simulated kidneys subjected to various scenarios and the other was a “game” with the objective of keeping a patient’s drug level within the right bounds. Another station showed Fold-It, a free game that gets players to fold proteins in ways that could have far-reaching consequences including the discovery of new drugs. It also happens to be a collaboration with the computer science department. The last station had a portable ultrasound machine to discuss hardware innovations.
Each mini-exhibit allowed students to try something out for themselves. Rotating through different stations meant that the students were periodically getting up and moving around and that gave the session great energy. Because there were only 4 to 6 of my students with each facilitator at one time, they got a chance to speak informally and share in ways high schoolers and college students rarely do. I heard my students asking about the dorm experience, about the process of choosing a major, and about the presenters’ future plans. When one of the undergrads shared that she was applying to medical school, one of my students spontaneously said “I can totally see you as a doctor; I think you’d be a great doctor!” I’m sure it was an energizing experience for the college students, too.
At every station, the facilitators asked students to draw on their programming background — “what do you think the challenges are in this program?” ”How would you start writing a program like this?” And the students were impressed to find that they had answers! We had some great follow-up discussions comparing LabView to Python and highlighting the power of programming as a support tool. This is an experience I’m going to be able to refer back to for the rest of the year.
Several things make this particular group’s outreach so successful:
- A dedicated, energetic faculty member who sees value in the endeavor and provides continuity over the years
- An overarching theme with supporting activities to illustrate it
- Very few platitudes (“our department has the best t-shirts,” “we really love what we do,” etc Everything was shown rather than told.)
- High relevance to the class
- Clear, well-rehearsed presentations and crisp transitions
- Hands-on opportunities
- Informal, personal discussions with potential mentors and role-models (made possible by smaller groups)
These opportunities to meet adults who love what they do, can convey their enthusiasm and can give a taste of what they do has high impact on students. Have something great to share? Come visit us!
The American Association for the Advancement of Science (they publish Science) has put together a website that catalogs common science misconceptions and I love it. It contains over 600 multiple-choice questions and the distribution of answers received for “a large sample size” (couldn’t find the exact number) disaggregated by grade level, gender and language proficiency. The data tells some incredible stories about the state of science understanding in our schools. The questions are protected by registration because the assessment could lose value if broadly distributed but anyone can create an account if they’re willing to promise not to divulge questions. I highly recommend it. Here is a taste of some of the concepts students know well and some of the most commonly held misconception.
The questions are organized first by broad topic, then by big ideas and finally by specific knowledge goals. The goals are written in plain language and cleanly isolate concepts. Clicking on a goal reveals a question used to diagnose the desired knowledge and a side bar reveals common incorrect answers, the misconceptions they indicate and a graph of student performance. I’ve been exploring the data set by first trying my hand at the question and I’m sad to report that I have come across some misconceptions that I held.
Perhaps the greatest thing about this website is that it allows instructors to add items to an item bank and automatically generate PDFs of the questions they selected. This tool is then not just an academic exercise — it’s something very practical. Writing assessments is difficult and having an instrument developed this carefully could be very helpful in getting feedback from students and targeting what they don’t know. Though I was bummed to find out I held some misconceptions, I’m thrilled to think that I just learned a thing or two that I may never have realized I didn’t know! Good assessments used for diagnostics can greatly help the learning process.
When do we get this kind of analysis and diagnostic tool for mental models of computation? I know that there have been some attempts at concept inventories (at least one) and others at language-agnostic programming knowledge tests but I don’t think any of those tools has yet risen above the level of academic exercise. When one does emerge, it better be presented at least as well as this science assessment — after all, isn’t creating usable computational artifacts one of the broad goals of our discipline?
I have run into Tonya Edmonds at a few computer science teachers’ conference over the past two years. Tonya has a mater’s degree in computer science and is now teaching at the Pittsburgh Science & Technology Academy, an urban magnet school. When we met last year, I was juggling adapting to the teacher lifestyle while creating curriculum for three new courses. Meanwhile, though Tonya was, like me, a first-year computer science teacher, she was not teaching any courses and was instead primarily focused on curriculum development. What an inspiration! She had both great ideas and the time to think through them to ensure their success when implemented.
Tonya has now paved the way for expansion of SciTech’s computer science program and they are hiring a second computing instructor to teach AP CS and a game programming course using Scratch. I think the job listing makes for a very interesting read. There’s a lot of general information about the school and its philosophical grounding. I don’t necessarily love everything in there but it’s incredibly informative and gives a good sense of what the school is about. Page 11 has a tentative schedule for the instructor which is the inspiring part. The entire first semester of this teacher’s time is to be dedicated to curriculum development. Second semester also includes an extra planning period for curriculum development and the second semesters of both the second and third teaching year include an extra planning period for curriculum revisions!
I haven’t seen many schools that offer their instructors dedicated time for creating curriculum and am curious to know how wide-spread that is. I wonder whether SciTech intends to continue this practice over time or if it’s something that they are doing to get their programs started. Regardless, it’s a terrific idea and I hope they find someone skilled and enthusiastic to take advantage of this opportunity.
Every Monday at lunch, a group of girls get together in my room to discuss various computing-related topics. Appropriately, we call it the ‘Girls’ Technology Discussion Group.’ We have a mailing list and every week, someone different sends out an article or question to discuss. We’ve covered a broad range of ideas in the last few months from Egypt’s Internet shutdown to the power of Kickstarter for funding new ideas to the effect of ubiquitous digital media on teenagers’ attention span. I always learn a lot from talking with the group and I look forward to our meetings every week.
Last week, one of the girls shared an article on Cubelets, a set of sensor and output blocks that when put together form simple robots. We talked about several interesting things — academic ideas becoming products, other interactive digital toys like Siftables and the effect of toys on kids who play with them. The girl who brought in the article mentioned that she thought having access to this sort of toy as a kid might have given her an earlier interest in computing and technology pursuits. We went into a conversation about toys and games we enjoyed as kids and it was interesting to see what we shared. All of us enjoyed playing with building games like K’Nex or Legos and we could all remember specific puzzle-type games that had fascinated us. One of the girls, a star programmer who was surprised by her ability and interest in CS, remembered a game-making program kind of like Scratch that she used as a kid — somehow she had forgotten about that experience until then.
We wondered about how long something like Cubelets would be entertaining for. How many different configurations are there? Is this something that would be a long-lasting toy or a novelty that is quickly discarded? This led us to talking about highly structured versus open-ended play. One girl who is very interested in mechanical pursuits mentioned that though she enjoyed Legos a lot as a kid, she never wanted to mix up the different kits’ parts and wanted to follow the instructions in the little booklets exactly. She wondered whether this reluctance then affects her design abilities now. To this day, I have Legos neurotically organized in bins by kit origin, and I also wonder why I was so obsessive about following instructions and didn’t make many designs of my own. Did that affect the way I operate now?
I wrote a while ago about some of the non-programming experiences that primed me for interest and success in computer science but I don’t think I went far back enough in my childhood or thought broadly enough about activities that may have affected me. I’m sure there’s a lot of research on the impact of childhood play on later pursuits but it was a fascinating conversation to have with young women I know and have great respect for. I’m looking forward to Monday’s discussion!
The Association for Computing Machinery has a Special Interest Group in Computer Science Education that convenes once a year for a conference. There are always many fascinating speakers and subjects but for me the highlight is the nifty assignments session. That hour and a half is an opportunity to get several directly usable project ideas for CS1 and CS2 classes and a chance to see some of the nation’s top computer science instructors doing what they do best. Most of what my students do in both AP Computer Science and Creative Computing (intro Python course) is directly influenced by the nifty sessions I’ve attended over the years (though all materials are available online, I’m more likely to use projects I’ve seen in person).
Stanford’s Nick Parlante, who has been organizing this session for a decade, opened with a neat demo of the infrastructure he built to run small code snippets in the browser. I had the opportunity to talk to him about the CS0 class he’s been running at Stanford and I’m really looking forward to “borrowing” lots of what he does!
It was interesting to see two projects, a scrolling game and a fish/shark population simulation, that would fit very nicely with GridWorld, the AP computer science case study. In fact, the starter code for the population simulation does use GridWorld and the author of the scrolling game has offered to port it over if there’s interest.
I was most impressed by Evil Hangman, a hangman game that gives the illusion of being legitimate but in fact cheats by dodging the user’s guesses! This was presented by Keith Schwarz, an incredibly energetic lecturer from Stanford. The demo is very compelling: as the audience guesses vowel after vowel that doesn’t appear to be in the word, frustration sets in. After the first run, when the word ends up being something relatively mundane like “lull,” the natural instinct is to want to play again — certainly we just had bad luck? At SIGCSE, 150 computer science educators were practically begging Keith to play again and again so we could better observe the game’s behavior. Keith did not indulge us and instead gave compelling reasons to give the assignment from a pedagogical standpoint: it gives students practice using simple data structures like maps and requires several data transformations, something students generally need practice with.
I didn’t just like the assignment, I liked the way it was presented. Keith drew us into it as he would students and I’m guessing I was not the only one who put together a solution on the plane home (80 lines of Python). There were some great hooks. First, what is it doing? Oh, it’s cheating. But how is it cheating? Wait, that’s enough to make it nearly impossible to beat? How hard is it really? How many guesses do I have to give myself to win? I want to make sure that as many of my assignments as possible inspire curiosity in this way.
I also am likely to use University of Toronto’s book recommendation project. The assignment was first given while the Netflix Prize contest was still open. Though it’s a little less timely now, it’s still a great opportunity to discuss uses of computer science that students are very familiar with and to demystify how it’s done. Michelle Craig says, “after reading a pre-collected set of ratings for a list of books, the program makes recommendations for a particular reader based on a small set of sample ratings from that reader and the preferences of other readers in the community. The assignment was inspired by current machine learning research and provides the opportunity to talk about many other CS ideas including weighted averages, comparing non-trivial objects, designing distance measures between objects and writing comparators, and sparse data.” I think this is another one that could easily be presented in a way that hooks students and makes them want to have the program.
The question of whether or not to reuse assignments between course offerings came up in a few informal conversations and I think that it’s interesting to note that most of the nifty assignments presented were shared after years of tweaking. Getting an assignment to the point where it emphasizes the right skills, challenges students without frustrating them and provides truly compelling output is not an immediate process. I love assignment reuse and really appreciate the availability of polished, student-tested projects. I’m looking forward to many more nifty assignments from future SIGCSEs!
I enjoyed presenting about Scratch at this year’s Northwest Council for Computer Education conference in Portland. My slides and materials for the 3-hour workshop can be found here.
The opportunity to share ideas with motivated, forward-thinking educators is always inspiring. I learned a lot from them about the challenges that they face, different kinds of technology courses being offered and ways that they thought Scratch might end up being used in their curricula. The group was composed primarily of middle school teachers and educational technology specialists which I found really exciting — getting students working with computing at that early level is very important. Several of them were interested in emphasizing computer science vocabulary and sharing with students connections between Scratch and more common programming languages — yes!
Some of the teachers seemed overwhelmed by the end saying that they had a hard time seeing how they could meaningfully teach the material with just the taste I had given them in three hours. I can’t blame them — anyone would find it a bit silly to send someone off to teach a biology course after a mere three-hour introduction. In fact, even though we all get several chances to interact with biology material in K-12, getting a biology teaching position generally requires years of post-secondary study in the field. Is it reasonable to treat computing any differently?
Short-term, I’m so excited that a few more instructors will now be getting their students to program using Scratch. Long-term, I hope I can find ways to provide more training than a too-short 3-hour workshop!
I know a lot of people who are interested in being involved in high school computer science. People who leave their desk for an hour in the middle of the day to go help out in a classroom. People who mentor teenage interns. People who call me from across the country to ask how I got into teaching. People who are truly brilliant teachers. And people who have training as well as experience. What can we do to better harness that energy?
One of the things that each of us already teaching (in larger districts) can do is to work with our districts to replicate our programs in other local schools. The presence of one successful CS program can have a snowball effect if the right people are brought to the table. In Washington state, Career and Technical Education directors and pathway leaders can be incredibly powerful allies since they establish district-wide vision for CTE courses and allocate some funding accordingly. They know all the schools and principals and can make suggestions as to where a CS program might fit. In Seattle Public Schools, we already have another excellent, dedicated computer science instructor in place and are hoping to keep expanding to more schools.
I think there already does exist a very powerful system for giving computer science students a love of teaching and for providing them with the very targeted skills necessary to successfully teach computer science material — teaching assistant programs. Most of the high school CS teachers I know were TAs at some point and I was greatly influenced by my time in UW’s undergraduate TA program which involves a teaching seminar that covers grading strategies, addressing difficult students, teaching particularly difficult topics and so on. Stanford has a class with over 80 students learning to teach computer science. I’m sure that every year, several graduates of those kinds of programs seriously think about going into high school teaching but the lack of obvious mentors and clear positions scares them away. This is something I don’t know how to address — how can we make it easier for those kinds of students to find high school teacher mentors and help them navigate the certification and job-finding process in their particular area? For me, connections through the UW computer science department’s outreach program were critical. I also ended up cold-calling several people at the district and various schools. I’d be curious to know how other computer science teachers found their positions and figured out the certification process.
In Seattle, we have well-trained computer scientists with teaching certificates ready to step into the classroom. Our ability to expand is dictated by district and school budgets — right now, in order to create a CS position, something else has to go. I think part of the trick to address this involves creating student demand. As students hear about interesting things their friends at other schools are working on, they may start talking to their parents about wanting to take CS classes and PTAs are another critical ally able to sway school offerings.
Obviously, not everyone interested in CS education wants to make it into their full-time job. I’ve had the opportunity to play matchmaker and help friends find computer science classrooms to volunteer in but I wonder what kind of response a formalized system for matching high school CS teachers with speakers and volunteers might get. Of course, relying on existing social networks has the benefit of providing a vetting process but it would be interesting to see how many people would like to be involved with youth learning computer science but just don’t know how to get started. Maybe if companies saw several of their employees getting involved in high school education they would be more willing to take a page out of Microsoft’s book and mentor high school interns.
There’s a lot of existing energy around high school computer science education and I think those of us in that field have a responsibility to harness and augment it. What else should we be doing?
The New York Times had an article a while back titled “Rethinking Advanced Placement.” The article describes ballooning topic lists that encourage teachers to lecture endlessly and leave students burned out after hours and hours of homework and memorization. Particular offenders are biology and U.S. history, both courses and exams that I took as a high school junior. I’ll agree that both had a lot of breadth without much depth and that they could benefit from some paring down with greater focus on applications rather than straight memorization. At the same time, a strong factual base is very important for application so I hope that won’t be entirely lost.
I think computer science needs to be careful in its own rethinking of AP courses not to go in exactly the opposite direction that these courses are going in. The current AP Computer Science A exam has a very tight focus around programming and allows teachers time to cover each concept in depth. Students leave the class with deep problem-solving skills and many hands-on projects to show off. After all, the only way to learn programming is by doing it. While there is memorization around the peculiarities of the Java OO model, APCS is a skill-oriented exam that gives students an opportunity to show off their algorithmic thinking abilities.
As we move away from a programming focus, there are thousands of different computer science related directions to go in. Both for students’ and teachers’ sakes, I hope we can avoid the breadth trap APUSHistory and APBio fell in.
In Washington state, career and technical education instructors are highly encouraged to have students participate in approved leadership activities. These are provided by various recognized institutions including DECA, Future Farmers of America, Future Business Leaders of America, SkillsUSA and a few others. In an attempt to figure out whether my students should be part of one of these, I bought the SkillsUSA Computer Programming Championships Technical Standards. The only free information I was able to find about the SkillsUSA programming competition is a blueprint outlining the standards covered in the competition and a scoring rubric for this year’s competition. Is no one discussing this competition online?
If you’re thinking of buying the technical standards as a way to glean information about the competition, I would encourage you to save your money. It’s generic rules (piercings must not pose a safety hazard), the scoring rubric linked above, and a problem statement from last year. Things I did get from the document:
- Students must be SkillsUSA members to participate
- Students must wear official SkillsUSA clothing
- Students must submit a resume
- Students will take a “Leadership and Professional Skills Knowledge Test.” My favorite question from a sample:
Which of the following is a good behavior to show during an interview?
a) Chewing gum
b) Wearing unusual, memorable clothing
d) All of the above
- There’s no real algorithmic interest to the problems posed
- GUIs are heavily emphasized
I would be very curious to learn more about who participates in this competition and what their reactions are. I wonder whether the computer science education community is looking at some of these kinds of organizations as possible partners. SkillsUSA has a lot of reach and visibility — over 10,000 chapters across the nation — and seems to have partnerships with may state education departments. Perhaps computer science is too academic to be within the scope of what they cover? Looking over this document makes me feel out of place in the career and technical education world! For now, I’ll continue to encourage my students to participate in local programming competitions.
Happy holidays! I’m spending my off-time in France and am currently in beautiful Nancy.
Unfortunately, the trip hasn’t been entirely relaxing. Coming onto the continent, I ended up in Paris around 9pm though my original plan was to land in Lyon at noon. And even then, I’m pretty lucky — my parents have been 6 days without their luggage and I expect tens of thousands of passengers are spending the holidays in airports or alternate destinations.
One of my goals in teaching computing courses at the high school level is to give students a new lens to look at daily problems through. I don’t want all of my students to go into computer science but I do want them all to be able to consider computing-based solutions in their lives and careers. believe that part of the way we can overcome some of the big problems we are facing these days — from global warming to endless political quagmire — is by having more people with a clear sense of how computing can be leveraged. In this case, plenty of strange things are going on with air transit and it’s such a complex system I can’t even begin to understand all the constraints but I do know just enough to imagine ways computing could help. What if every traveler, TSA employee and flight attendant also had some of these intuitions?
I’ll start with, in my mind, the most obvious opportunity to leverage computing to ease tension in the system. My parents’ luggage was lost in Frankfurt when their plane was cancelled and they were put on a train to Paris instead. The lost luggage report they filed was also lost. The fax we sent re-reporting the lost luggage was also lost. We talked on the phone with at least 5 different people at Lufthansa baggage services and none could even enter in information to report the lost luggage — they needed that paper form, as most airlines do.
We ended up having to go to the airport in person to fill out a paper form. Luckily, the information was entered but unfortunately, there’s a typo in our address so we’ll see how things turn out. Finding a fax machine, repeatedly calling the airline, going to the airport wasted a tremendous amount of our time but it also was a significant waste for Lufthansa since at least two employee-hours have gone to our case alone and ultimately the information is erroneous. It’s unacceptable that the information isn’t directly recorded in the database. At the airport, why can’t an airport employee scan the baggage tag and passport instead of needing a new piece of paper? Offering a web form would be a huge improvement over needing a fax for self-service.
I’ve dug around a little bit and it turns out that a company with over 4,500 employees worldwide, SITA, specializes in software for airport and airline logistics worldwide. Interestingly, it’s owned and governed by its members including airlines and air carriers like UPS who see it as a way to centralize services to lower costs. This sounds like an absolutely wonderful idea allowing seamless integration of systems and communication between carriers.
It appears that many airlines use a SITA service called WorldTracer to track lost luggage. The client-facing interface is awful — it only displays cryptic information such as “recovery process begun” and doesn’t allow for data correction. But the real problem seems to be with the agent-facing interface. I suspect that the reason people we talked to at Lufthansa were unable to tell us anything at all about our luggage is that they had read-only access to the WorldTracer database which didn’t have a record under our name since the lost baggage report had been lost. Given the information required to create a lost baggage report, it seems that the tracking system is entirely separate from the flight booking system. This seems like a real problem to me. It should be possible for an agent to quickly transfer all registered luggage information from a canceled flight into a baggage tracking system so that passengers can follow their bags from the minute they are re-routed using their claim tags. Clearly, bags are scanned periodically so the information exists somewhere. This seems like a data cross-referencing and dissemination problem. It’s not trivial but it seems like SITA is very well-positioned to address it. Their existing system seems like a step in the right direction but it’s in serious need of maintenance and update.
I also suffered from some absurdities that I think could partially be addressed by better software. I had a layover in Amsterdam and missed my connection by about 10 minutes because I had to go through security which took over an hour. This seems to be a common occurrence when going through security for a connecting flight. I think the true solution involves connecting terminals so that never happens but one could alternately imagine passengers scanning their tickets when entering a security line and getting priority if they are about to miss a connecting flight, for example.
When I tried to rebook a ticket on a later flight, the agent did not find any flights to Lyon that day. The agent next to him, overhearing my complaints, suggested some codes to enter to see more flights and sure enough, one showed up. All available flights should have been clearly visible. Why are agents using command-line interfaces? In a lot of cases, I find command-line more efficient than GUIs, but this is an example where I can’t believe it’s so. Imagine being able to work with 10 passenger requests at a time or do a side-by-side comparison of different options. How much of an efficiency change can be triggered by a change in interface for re-booking agents in airports? Is there HCI research on this?
I had the opportunity to watch several agents re-book passengers during the day I spent at Schiphol and it is a tremendously inefficient process involving selecting a flight to see its details, etc. I understand that flight booking is not in any way a trivial process. There are race conditions, tiered pricing, status considerations (Gold, Platinum, etc), overbooking, etc, and that’s exactly why an agent shouldn’t have to balance all of these things for each customer independently. On average, it looked like it took about 7 minutes to re-book each individual passenger. No wonder there were 8-hour lines at Schiphol. During that wait time, airlines have no idea of true demand and are having to re-invent the same solutions for passenger after passenger. Moreover, the lack of system encourages truly antisocial behavior! The only reason I got rebooked that day is that I elbowed my way to the front of a line and demanded to be put on a flight to Paris. I’m not really proud of it, but…
A cancelled flight should result in an attempt to automatically re-assign passengers. Priority should be automatically determined — by last name, by value to the airline, whatever, but not by pushiness. Passengers should immediately be told where to sit and how long to expect to wait.
I’m a big fan of ITA Software, which Google would like to acquire. Their products power most popular airline booking systems including Kayak and FareCast and have provided incredibly rich information about flight popularities and so on. I poked around a bit and found the screenshot at left which nearly made me weep with joy (taken from their baggage management brochure). This is exactly what I had in mind, only better. Another screenshot shows all passengers from a flight and automatically-suggested alternate accommodations. Why don’t agents use this? It may be expensive software, but I just can’t believe that it would be any more expensive than tens of thousands of passengers having to wait for hours in line, lose their luggage and be put in hotels.
Perhaps most alarming is that at one point, we were told the plane we were supposed to get on was 10 minutes away. Half an hour later, we were told that the plane had, for some unknown reason, landed in Stuttgart instead of Amsterdam. The gate agents truly had no idea where the plane was and when/if we had any chance of leaving. I imagine KLM probably has a general idea of where its planes are most of the time. Why is that information not available to gate agents and customers?
Air travel involves complex logistics which means software could have a significant streamlining effect in that domain. Though there clearly is already great software running behind the scenes (after all, most planes land in the right country at the right time with the right bags), some systems leave a lot to be desired. I think that if both passengers and employees were more aware of how software works and what it enables, we would see accelerated systemic improvement. For example, gate agents certainly don’t enjoy spending 7 minutes each with angry passengers to try to accommodate them and if they understood that there were alternatives, they might be able to put pressure on their employers.
If my students can be similarly thoughtful about areas where software can make a difference, then I feel like I’m doing my job. Maybe this is the elusive ‘computational thinking’ that we want all educated members of society to be capable of?