Additional profile information on Alfred Thompson at Google+
Back in the day when I went to a college with A computer room with A computer it was cool enough that there was a computer there and that it was available to students. Today that’s not the case – having a computer (or bunch of them) does not automatically make for a cool place. For many students computer labs are down right boring.
Some of the requests I get are for posters to decorate a computer lab. Unfortunately I don’t often have any posters and when I do have them they tend to be more geeky than interesting. It occurs to me that maybe we decorate computer labs wrong though. I think that to some extent the way a computer lab is decorated, organized and in general the environment that is created determines who is attracted to the classes in the lab and how the students in the lab think. How they think about themselves and how they think about problems they are working on.
I visited a really cool computer lab the other day. The picture below is from the programming and web development program at Assabet Valley Regional Technical High School. I was there to judge some senior projects (saw an outstanding XNA/Xbox 360 game and some very professional looking web sites) and to see the facility.
This picture was taken from the front where there are 25-30 computers facing front. In there front of the room there are two large screens with ceiling mounted projectors. For the demos the PowerPoint presentations were on one screen and software demos (from the Xbox) or web pages were displayed on the second. The students presenting stood on a low platform in front. OK so far nice but not that special. The rest of the large room and some attached smaller rooms make it special though.
Oh! first off the walls are painted in interesting ways. Not computer geek ways but creative eye catching ways. The room in the back of this picture (behind the hanging white Christmas lights) is called the e-tank and the theme of the outside wall is fish. Cartoon fish – very colorful. The inside of the room has a green screen, stores robots and is generally set up for quiet work and audio/video work. The sort of thing that would distract in the main room. The colors are bright and fun – totally anti-institutional school wall painting styles. One of the more artsy shops in the school created the art work there and around the room. One wall has a painting of a window looking out over a beach scene.
Could this all be distracting? Of course it could but it is also stimulating and the sort of thing I believe helps people think more creatively.
Under the lights in the back of the first picture there is a couch and some comfortable furniture. A couch in a classroom? Yep! The whole area is ideal for collaborative work. A table in the middle and an area apart where a small group can work together on a project and hammer things out. Seems to work well from what I hear.
The large space is divided in to several informal areas with their own names. The teachers, whose one time office is not the e-tank, have their desks in the center of the room. Right in the middle of everything where they can be involved and when need be out of the way.
Honestly the whole place reminded me more of the offices of a high tech start up than a traditional classroom. There might even have been a fossball table but don’t tell anyone.
I had a chance to observe some of the students in this program in this space. They were comfortable. They were at home. They seemed to like being there. There were both boys and girls in the program and not all your stereotype white or Asian males either. It wasn’t a set from “The Big bang Theory” but a wildly creative space appealing to many types of people.
Seeing the senior projects and hearing the students talk about their processes and what they were learning I have to believe this space is working well. I’m told they had more students apply for the program next year than in previous years (this is the first year with this new set up) and I have to wonder if the environment contributed.
I’m not saying this is the end all and be all by any means. It is one example that is working well for one set of teachers. But it did make me really start to think about what the environment of our computer science labs and classrooms says to students. Are they environments that attract diverse students or do they attract a narrow subset of the populations? Does the environment stimulate creativity and out of the box thinking or does it encourage the same old same old idea of one right way to do things? What sorts of messages does the physical environment of your computer lab say about what goes on there? Fun and creative or dull and mechanical?
I am a late convert to the idea of computer science education for everyone. Or pretty close to everyone. A lot of people still don’t see it as valuable for more than a few people with some sort of natural predisposition for programming. I think there are many reasons for this. One is that they equate computer science with programming. And that’s not quite right. Second is that they see the only reason to learn computer science is to do it professionally. Inspired by Jeff Atwood’s Please Don’t Learn to Code I did a search on Bing for “don’t learn to code.” Bing came back with 224,000,000 hits. That seems like a lot. I can’t address all of what showed up but I would like to address some of what I read in the post by Jeff. He basically uses a bit of a straw man argument comparing coding to plumbing. This is largely the idea of coding as a trade skill.
I would argue that a more realistic comparison would be to compare computer science to math or reading. Computer science, of which coding is but a part, is part of the liberal arts of the twenty first century. You wouldn’t say “don’t learn math because you are not going to be a professional mathematician” now would you? Of course not!
But it gets worse with still more straw men about the move to teach CS and programming to more people.
Actually it assumes no such thing. Rather it assumes that having a better understanding of what the computer can and cannot do will lead to better decision making and a greater openness to new algorithms and to software is a desirable thing. It assumes that people can benefit from a better understanding of computer science, algorithmic (or computational if you will) thinking. It’s not about “more code” at all. I would also suggest that a better understanding of
Again, no, the assumption is that there will be better understanding of what code is all about. The idea is not to turn everyone into a programmer but to give more people knowledge and understanding. Being able to produce code is a tool toward understanding with understanding being the goal.
Backwards here. I believe most people pushing for more computer science and programming see it as a means to teach the tools for understanding problems. It’s a tool for understanding problems far more so than solving them. Will some people code their own problem solutions? Of course they will but the goal is to help them understand problems first.
No, not really. Again the people who are promoting more computer science see it not as a vocational training but as a liberal art that helps people understand the world around them. Coding is the language of computers which has in a real way a culture of its own. By learning the language of a culture we gain understanding of that culture. This is the main reason we teach “world languages” is school. Not to turn out professional translator but to give people a greater understanding of a people’s culture and the way they think.
I don’t think too many people, except for self absorbed teenagers, who really believes that. The line is more permeable than it has been in years but still not an easy path. But since vocational training is not the goal so what?
I would say that learning computer science is for everyone. Coding is just a tool to help you get there. It is about concepts, ideas, ways of looking at and solving problems, and much more than just coding to make a living. Don’t fall into the trap of seeing the field too narrowly.
I get asked questions like this a lot “can you share how you would construct a 3 year programming sequence, preceded by IC-3 type course, and culminating in AP JAVA. What would be your first two CS courses?” You’d think I’d have a great answer on the tip of my tongue by now. But I don’t. There are lots of reasons for this but they boil down to “the answer depends.”
What do you mean by computer science? Probably you don’t mean applications because while they are really important (in my opinion) they are general knowledge skills not computer science. Do you include web development? And if you do is that as a parallel track to programming heavy courses or as an introduction to CS with more programming heavy work later? And then there is the whole question of the AP Java course (technically I think it is still called AP CS A but I’m not sure.
Should AP CS be the last course in the sequence, the next to last with a senior capstone sort of course last, or should it not be in the rotation at all? It gets more complicated with the advent of AP CS Principles! Do you offer both courses and if you do are their separate options or does one probably APCS Principles) come before the other like we often did previously when there were two APCS courses? And where does hardware and networking fit into the mix? Arg, so much to think about!
I like web development. I think it is a great thing to learn. I don’t see it as a way to start computer science but as a goal of its own. There is some good web design curriculum at http://expression.microsoft.com/education and the DreamSpark program makes the software easy to get and to use with students at school and at home. Good stuff for sure.
I think about computer science as having a real programming component to it. That means I tend to think about a first course that covers basic principles of CS and of programming. So for example (not all inclusive)
The goal behind this course is learning some basic concepts of programming, problem analysis and solving skills, and some interest building success. traditionally I have used Visual Basic for a course like this but there are other options. People could use Small Basic, C#, Python or even C++ or Java. Personally I like something that lets students create some cool UIs or graphics and that seems harder with C++ and Java.
For a second course I see things as getting deeper. Designing with and creating objects for sure. Some real data structures like stacks, queues, linked lists and the like. And get deeper into algorithms with a little sorting and searching for example. I see this as a possible course to add some interesting domain specific programming. Games perhaps or maybe Kinect programming or mobile development. This gives students a deeper appreciation for the use (and creation ultimately) of APIs and sharable code. It also opens up more larger team projects. To say nothing of the fact that it gives students interesting projects involving things that they care about. (We’ve got free curriculum for all of that at the Faculty Connection BTW)
OK now your students are in great shape for AP Java. If you used C# for the second course they’ll ease almost seamlessly into Java. If you stuck with Visual Basic or used something thing else for the second course the concepts should still map nicely and the syntax is the only hitch. I found that students jumped from one syntax to a new one much easier than us more mature individuals. A reminder of how things were done in a previous language opens doors for really covering concepts independently from syntax as well.
Now maybe you made those first two courses a semester each (doable in many cases) and you are looking for something for after AP CS. Or maybe you took longer with the first two courses (a full year each even) and want something in place of APCS. What then?
Well there are lots of options including independent study courses. Or survey courses. Perhaps involving things like cryptography or robotics or advanced simulations. Or perhaps a project class with an eye towards community service! I know of teachers who have students take on projects for local non-profits for example. Or build projects around the Imagine Cup. I know several high schools that have a game development course that creates teams to enter the game design competition. One of these days a high school course is going to take aim at the Software Design Invitational and do a great mix of hardware and software in a real world changing way. I can’t wait for that.
Besides CS concepts the students learn project management deadlines HAVE to be met and the teacher can’t extend them), team work planning and communication and other “soft skills” that are very important today. A chance to win prizes and trips is one incentive but the building of a project portfolio that can be shared with university admissions people or potential internship employers is a pretty solid incentive as well.
That is just one possible scenario. I can think of others but I’d prefer to use this as an opportunity for others to share what they do in their schools. Is there only room in the curriculum for one course? Well then what does that look like? Or two courses? Or perhaps you have a more involved set of offerings with multiple paths. What does that look like? What is your school doing that works or perhaps what is it your ideal curriculum would look like? It’s getting to the end of the year and I know a lot of you are getting ready for the summer. Let’s give everyone some things to think about over the summer so that next year’s planning can get rolling early.