Additional profile information on Alfred Thompson at Google+
I spent this morning at MIT with Joshua Schuler who is the InvenTeams Grant Officer. I first mentioned InvenTeams back in October in one of my blogs listing resources that I thought would be interesting to computer science and technology teachers. That was based on a telephone meeting I had with Joshua, some people at Microsoft in Redmond and some people from the Lemelson Foundation. The Lemelson Foundation funds the Lemelson-MIT Program that includes InvenTeams. I was pretty impressed from the start but I’d have to say that hearing some success stories today put me over the top.
Teams in the first couple of years have done some amazing projects. In fact several of the teams have taken their projects beyond the first (funded) year. Some teams have even started the process to patent their inventions. Now when is that last time you knew of students applying for patents for a school project? Perhaps at the university level – but high school students? I don’t think that happens very often.
So what is this program all about? In short it is a program where high school teams of students, teachers and mentor find a problem they want to solve, research the issues, and develop an invention (or at least a prototype) as a school project. The project could be part of a course or as an extracurricular program. Teams can apply to the InvenTeams program and potentially receive a grant of up to $10,000 to support their project.
The idea of the program is to excite students about science, math, engineering, entrepreneurship and invention. Students will learn by doing. From the looks of previous team projects, students are learning a lot in this program.
Personally I think that it is important for students to think beyond the fears that technology and jobs are moving offshore. Technology and jobs have always started in the United States and moved offshore. This is nothing new. What students (and their teachers and parents as well) need to focus on is the need to invent the next new technology that will create the next new set of jobs. That is also what the United States has been about since the start of the Industrial Revolution in America.
Students naturally think outside the box. If you don’t think so just ask them about their creative interpretations of school or parental rules. All to often we (teachers, parents, busy buddy adults) try to put them back in the box when what we should be trying to do it to get them to put that creativity to work solving real problems. We need their ideas. And we need them to know that they can use those skills, add more knowledge and go out and do great things. I think InvenTeams can help do that. I am hoping that I can have an ongoing relationship with this organization and the schools they are supporting. There are a lot of great kids out there with the potential to invent great things. We just need to help them understand that.
One of my students complained to me about the questions on a test once. The question in question came from a previous Advanced Placement Computer Science exam. The complaint was that the code in the question was bad. It was bad because no one in their right mind would write a program like it. It went about things in an unnecessarily complex way. Unnecessarily that is if your goal was efficient, easy to read and easy to maintain code. The student was right. He went on to state that the AP CS program was full of how not to do things. Again, in a way at least, he was right.
The problem is that often on a test you are trying to demonstrate something in a small number of lines of code or you are testing a student’s ability to understand the operation of a concept. Sometimes you have to bend the rules about good design to force things into a small but complete demonstration.
The problem for students is that they just see a small but complex program doing something that could be very simple to do. They want to jump in and “fix” the program. Teachers see the concept they are trying to teach but students just see artificial code. It’s a tough problem. It is also one of the reasons the AP CS curriculum has a complex case study – it lets students see a good design on a reasonably sized project. If only we could do more of that.
I was thinking about all of this while reading a blog by Dan Forhan the other day. He has an example of a Java puzzle that is some very convoluted code. One would never write a program like that to produce the output that puzzle produces. Well not if you intended people to actually use it you wouldn’t. It’s just not the write way to do it.
At the same time you might very well right code that has 20 times as many lines but the same organization of classes and methods all calling each other. You’d no doubt be trying to solve a more complex problem than a bunch of System.out.println statements of course. If a student can’t follow the simple (ok simple here is a relative term) example in the puzzle how will they ever follow a more complex problem?
One tool that they could use though is a good debugger that will let them step through the code statement by statement. I think that many times teachers ignore the value of a debugger as a means for demonstrating the path the computer takes through a program. Debuggers can show the program flow, how and where the values in variables are changed and many other things that are not always obvious when checking code on paper. I liked to show the steps through the debugger using an LCD projector on a white board or screen in class. Sometimes seeing is believing.