Earlier this month Intel announced it was helping lead a parallel programming experience for high school students. The three-day “Clubhouse Parallel Universe Boot-Camp” was held at Brooklyn Technical High School (BTHS). This idea is consistent with Intel’s overall drive to help develop the expertise that applications developers — and ultimately users — need to get the most out of the company’s chips. There is a clear business driver here, but in this case, the business driver lines up well with the broader societal goals of enabling users and developers to do more with technology.
The project started with Jeffrey Birnbaum from the Bank of America. Birnbaum has lots of experience working on lock-free and parallel programming techniques for “low latency high throughput messaging systems” of the kind you find in finance. Birnbaum’s idea started with interactions he had with a high school student interested in parallel programming, and he saw an opportunity to start at the high school level to teach students to “think parallel.”
“If students start thinking parallel when they are first introduced to software development, it opens the door to new creative solutions that more experienced programmers might not attempt. In essence, the student minds have not been spoiled by old serial programming methodologies and experimentation when multi-core multi-socket systems did not exist,” says Birnbaum. “We are at the beginning of a new age in programming where the exploitation of advanced multi socket multicore systems to solve new and interesting problems requires developers who combine a “think parallel” mindset with the skill to execute.”
Birnbaum hooked up with Intel’s Bob Chesebrough, and they got together to implement the vision in the pilot program at BTHS. Fifteen students participated in the first workshop that wrapped up last week, and they wrote real code on hardware donated by Intel, IBM, and BLADE Network Technologies.
I think these kinds of efforts are tremendously important for the future of our community. Intel’s Head Software Evangelist, James Reinders, took part in the event and gave me some time over email to answer a few questions.
—–
HPCwire: Why target high schoolers? Parallel programming has traditionally been left to college. Are the students ready to grasp the concepts?
James Reinders: Because they are ready to learn it as they learn programming, there is no reason to wait. Of all the programmers, these are the ones that will be doing parallel programming their entire careers. Virtually every new computer is ready for parallel programming — multicore processors are everywhere now. So, programming is parallel programming — it is fundamental.
I’d say parallel programming in the past has been a graduate level activity because parallel programming has been a niche. It was not graduate level because it is too hard — it was graduate level because the machines to programming in parallel were scarce, and the topic affected only a minority of programmers. Now that it is fundamental, it is time to introduce early on in learning about programming. It should be part of teaching computer programming, not tacked on afterwards.
My first languages were assembly and BASIC. Neither taught structured programming nor data structures particularly. My professors whined about getting students that needed to be re-taught — some said it was worse than having us come in knowing nothing. I’m not sure I agree — but it’s absolutely true that teaching minds that are uncluttered has advantages.
I can tell you that the students we got were definitely ready for the material!
HPCwire: Regarding the involvement of Bank of America, it’s odd (but great) to see someone from the user side of the community so active in leading this effort. How did the concept develop? What made Intel want to team up with Birnbaum and BoA on this?
Reinders: Jeff Birnbaum is an energetic guy who’s hard to say “no” to! I really enjoy his enthusiasm — he knew we had an interest in teaching students but we were focused on universities. About the time we were crossing the one-thousand universities in our teach-parallel program (we started with 40 universities in 2006) — Jeff was the one that told us we should take this to a high school. For a few of us, he didn’t need to twist our arms, and we knew that actions speak louder than words.
Jeff pushed us to think about this seriously, secured some equipment support from IBM and Blade Network Technologies, and taught some himself on our day 3 — bringing together the concepts and making a deep application of it in analyzing some real code he shared from his work. Jeff also encouraged us to come out to New York City to teach a High School — and that seemed to be a fine idea, especially after we had the great fortune to hook up with Randy Asher, the principle at Brooklyn Technical High School.
HPCwire: Is this a one-off event, or will there be others? How did you get hooked up with Brooklyn Technical High School?
Reinders: I’m sure we’ll do more, but I’m not sure the exact form. We will be taking the student and teacher feedback, and seeing what we can do. Our small team of engineers from Intel that taught this are top notch experts with full time jobs. We might be able to sneak out of our jobs a time or two without our management missing us too much, but we might be missed if we tried to do this a lot more! With the universities, we started small and learned how to scale. We learned what worked and how to teach others to teach by sharing what we learned and developed. That’s the partnership that worked with universities. Something like that might be in the future for high schools. I hope so. Lots of work lies ahead to make it happen.
We actually had no pre-existing relationship with Brooklyn Technical High School — we got a few contacts in the New York school system and made a few cold calls. Next thing you know, we talked with Randy Asher. He’s the type of principle you want at a school — a huge advocate for bringing in challenge for the student and infectious in his commitment to make things happen. We were hooked. Randy’s the guy already talking about doing this again, and for more time (to earn credits), etc. I know all of us from Intel found it rewarding, and with Jeff and Randy pushing now, well, we probably have to do this again!
HPCwire: The workshop looks like three full days of student time — how did the school respond to this? Do the students have to make up the time?
Reinders: We did it during the summer, so the students didn’t have to take time off school. Doing it during school might be an option next time. One way we have to compete with summer jobs and summer vacations, and the other way we’d need to have them take off time from school for school (seems a bit funny). I’m not sure — but I suspect one or two weeks in summer will tend to work out better until we figure out how to incorporate content into regular computer science classes in high school. I think we’re learning things to let us consider both.
HPCwire: Now that the workshop is concluded can you give me some reactions from the teachers and students? Did they seem to get it? Enjoy it? Were they good at it? What did Intel learn about teaching parallel in this age group that will help shape your next event?
Reinders: We had 16 high school students plus five high school teachers in our class. We ultimately mixed teachers and students — and that worked very well. We did a short three-day — but could easily have expanded to a couple weeks.
One student told us the first day was boring, another said it was the best thing ever. They both actually got something out of it, but had different expectations. Their direct feedback is helpful. There is a lot of “let’s just DO IT” energy in the room. They had great attention span, and were very engaged, but were constantly eager to work on the computers. More lab time would have been popular I think. It was a little less than half the classroom time over three days. We split the rest of time between lectures and some hands-on exercises to simulate computer algorithms with activities — to help make things intuitive.
They all did very well. No student was “lost” by any means. Each exercise challenges each student in a different way — but ultimately they all understood the concepts and learned what we were hoping they would. By the third day, we had them changing our “Destroy the Castle” program (http://software.intel.com/en-us/articles/code-demo-destroy-the-castle/) — and we saw a lot of knowledge being used that they didn’t have the first day of the class. They added parallelism and improved the game a great deal (we gave it to them with the parallel programming removed from our downloadable version).
What did we learn? We validated that teaching at the high school level is appropriate. Those of us teaching got a little better handle on pacing and that will help us. We really reinforced the need to present basic concepts multiple ways (to drill home what a “data race” is, and “task decomposition”). We debated the relative merits, timing, etc. — I’m sure we have a better feel for it now. We also know if we expand time for the class, we would expand the hands-on time to be a higher percentage of the time. I’m interested to talk more with the high school teachers we had in our class, and see what more feedback they have. I think we have to digest the experience and feedback more — and we’ve learned a lot that will help us next time.
Bottom-line: if someone else considers doing this, we have experience that we would share to help others! Now, if we can find the time to write it down, we will. Hopefully soon.
HPCwire: Was the hardware taken on site? Were there logistical challenges (from the mundane, like cabbing a cluster across NY, to the specific, like was there enough power) and how did you address them?
Reinders: As funny as a 32-core cluster in a New York taxi would have been, we didn’t go that way. We used the power of the Internet. Blade Network Technology loaned space and expertise in their Santa Clara facility — and IBM provided the 32 core cluster, and Intel provided four 8-core machines. We used them remotely over the Internet from New York. In New York, we used BTHS machines (every student had a dual-core machine) and we brought along 16 dual-core laptops, and an 8-core machine. Those we shipped, and they were just here at BTHS for us. One of the benefits of being at BTHS was that they had plenty of capability for power and cooling for us, that was easy. It is often a concern as you look where to teach, but at BTHS that was not an issue — they have fantastic facilities, which made this easy. And their alumni association kicked in money to feed the students lunch — which was very much appreciated too.
HPCwire: I suspect this effort might inspire others to do something similar in their own community. Would you welcome others to adopt the curriculum in their own communities? What kind of support would there be for those wanting to take such a step?
Reinders: I’d love to be contacted by people with a serious interest in doing this at other high schools. They can drop a note to me at Intel — e-mail: [email protected].
HPCwire: I know that Intel has a big effort in education, so I’m going to do the natural thing and ask you to boil it down to a couple sentences so readers are more aware of the range of your efforts.
Reinders: We know that young people are the key to solving global challenges, and a solid math and science foundation coupled with skills such as critical thinking, collaboration, and digital literacy are crucial for their success. That is why we get directly involved in education programs, advocacy, and technology access to enable tomorrow’s innovators. Intel’s education outreach includes K-12 education, education competitions, high education and outside the classroom programs — see http://intel.com/education. Focusing on our outreach for computer science instruction in particular — we have our Intel Academic Program (“Teach Parallel”) that instructors can learn more about at http://intel.com/software/college.