views:

705

answers:

25

I've been teaching for a couple of years now a course for high school students (not always computing-oriented schools) using some gaming framework.

This has been very useful for trying to get them to pursue a career in the field (which is one of the goals), showing them that programming is not only making bussiness, boring applications.

What other aspects of programming can I show them? Besides gaming and bussiness programming?

Or to put it other way: What other applications of programming are there in the world besides those two fields?

+3  A: 
  • Scientific simulations can be really cool
  • Predictive modelling stuff - i.e. climate prediction
  • Artificial intelligence and robotics can be very cool

Actually, I can't think of anything I'd have liked better than to have had a stab at robotics programming in school! :-)

Galwegian
+2  A: 

Industrial controls can be fun, especially when working with custom machinery or on the R&D end.

Some of this can include simple PLC logic programming, thin client HMIs, programming for various protocols, FPGA and embedded device programming and even robotics.

Geoffrey Chetwood
+1  A: 

Scientific programming - mathematical models, image recognition, neural networks etc

tjrobinson
+4  A: 

Just about anything in the field of robotics or AI would be fun in my estimation.

Geoffrey Chetwood
A: 

Embedded devices - robots might be one of the more interesting examples, e.g. Microsoft Robotics

tjrobinson
A: 

Biology. Art. Statistics. Music. IM/Twitter/Facebook stuff.

mspmsp
A: 

I think kids would get a kick out of robotics and scientific applications as well.

Science should be easy to think of a way to involve (after all they take science classes too right?). For robotics, something like this may be of use: Lego Mindstorms (depending on if you think they're "too old" or not.

AlexCuse
+6  A: 

Web development. Start with a popular, beginner-friendly framework like Django or Ruby On Rails and show them how to create a blog or an image gallery. Bonus points for also teaching the basics of networking, client-server, and databases.

Just Some Guy
This does require Ruby or Python, and I can assure you only a minority of the high school students even know about these languages. Experiencing this myself by my classmates.
Dykam
A: 

Why not propose a list of subject areas and or projects, but at the same time leave them open to picking their own project? It could be graphics, a windows based app, artificial intelligence, physics simulation, cloud computing and consuming web services (there's lots out there these days that can be used to build interested clients side apps), building an app for a mobile phone, etc.

Ultimately, what got me excited about CS may not be the same thing as the person next to me. This sort of openness might be hard to implement on a high school level, given the need for grading conformity, etc. But something to consider.

Matt
+3  A: 

Show them relevant, useful, fun things.

How to programatically reorganize an mp3 library. How to manipulate a lot of images at once. Truncating music for ring tones. Pulling cover art from amazon. Re-engineer the more cowbell application. Someone mentioned Facebook, build a mini Facebook app.

I originally thought I wanted to learn how to program so I could build a game. What got me hooked was being able to quickly do stuff I wanted to do without having to search for an application to do it for me.

Once I had the basics down, my language became a hammer and everything was a nail. Eventually development just became fun, and my career choice became clear. Boring business applications are still fun to write if you have fun writing code.

shelfoo
A: 

Carnegie Mellon's Robotics Academy has a great collection of information for educators to get started with a Robotics curriculum for Junior High/High School students.

LEGO and VEX are both great learning platforms and not too expensive.

CMU is also currently offering some free RobotC Webinars:

http://www.education.rec.ri.cmu.edu/

Gordon Bell
+1  A: 

Personally I think business applications are blast to write! Not only do you get to code, but you also get to learn about the business process, which transcends into any field. Your customers also make crazy demands on you pushing your skill set! For example, we have one customer, who we wrote a call center management application for, that wants to provide their vendors with maps and directions. So we get to start looking at how to do this ... do we use Google or Microsoft? Who knows ... but it's something new and exciting!

There are a hundred and one ways to skin a cat, so you might try teaching your students different ways to do things. For example, you have a boring business application, why not try writing a RESTful interface to communicate with the database, or maybe an application for a Windows mobile device or IPhone, or what about writing and Email client to receive emails from users, similar to IWantSandy, and interface with your application.

There are a ton of cool technologies and ways to do things ... this might be a good alternative to finding something else to program. When push comes to shove it's all about business! :)

mattruma
A: 

APIs. Probably a lot of the Web sites they use have APIs (Facebook, Twittr, and Flickr all do to name a few). Teach them how to access their data from these sites and use it for their own applications or mix it up.

Jeremy DeGroot
+11  A: 

I used to worked in a School(11-18 yr olds) as a Science Computer technician.
As part of the IT curriculum we developed a series of teaching modules based around real World applications.
Topics included;

  • Robotics in the form of control programing of a Robotic Arm, Turtles, Lego creations etc. We developed a simple control interface board to allow easy interfacing with the outside World. (We built from scratch because you couldn't buy them in those days - 25 yrs ago!)

  • Domestic appliance control in the form of a Washing Machine and Video recorder we built from perspex and other bits of modelling materials

  • Game programming of the Ping Pong type, we got the kids to build their own controllers and cabinets. They used BASIC programming commands.

  • We built basic weather measuring stuff, wind speed, rain fall, light intensity, etc. The kids then wrote BASIC code to log the data over a week etc.

  • We built a basic light pen and the kids created a basic paint package that could create drawings by actually drawing on the sceen.

  • We built a model pair of elevators and set them the task of writting code to service all the floors in a hotel.

All of this stuff was quite low-tech because we had to build this stuff from scratch since 25yrs ago it wasn't easily available, where as you can now buy it quite easily. How ever I think the from scratch method gives them a better 'feel' for the technology.

I think using control examples gets them out of the mindset that programming is just about what happens on their desktop.

DaveF
I wish I could give +10 to this. Some fun educational kits can be found by reading http://chiphacker.com/questions/267/id-like-to-learn-how-to-make-my-own-usb-gadgets The answers are neat, starting with something that emulates a serial connection all the way to cheap MP programmers.
Tim Post
A: 

Something that can relate too. Maybe something twitter related, that sends out text messages or maybe even something related to asterix the open source PBX type thing. I think the need to see it working in the real world.

Brian G
+3  A: 

Don't be so quick to dismiss business applications. While not as "cool" as writing games, I really enjoyed writing applications that made people's lives better.

Since you're looking for something beyond business and gaming, why not introduce them to web applications that have APIs like iGoogle or teach them how to develop personal web pages. Most high school students have figured out how to customize a myspace page, but I imagine you could add a generate a lot of excitement by teaching them how to take it to another level with web programming.

And if you want to stay in the gaming genre, writing plugins for games they all play is a seems like a gimme.

John
A: 

Teach them how to write something that will run on their mobile phone. This has a cool factor, because they can show it off to anybody they bump into.

Scott Langham
A: 

How about a program that interacts with a WebService, say google maps or something, I'm not sure what. Finding out what's possible with some internet research can be the first class!

Scott Langham
A: 

Virus writing might be interesting to kids. How to eat all of a computers memory and take it down or something like that. But, I'm not sure this is the kind of thing you want to teach. I think I might even down-vote my own answer!

Scott Langham
[Core Wars](http://www.corewars.org/) for the win. Seriously, writing viruses to shut down your buddy can be a lot of fun.
Just Some Guy
A: 

Actuarial prediction... I kid, I kid.

Seriously though, my 11-year-old just took a Java robotics class that made him all wild-eyed talking about it. He's also a big fan of Flash, ActionScript.

To be honest though... you mention business apps and games. At some level, that's all there is (and actually, games are big business these days.)

David Hill
A: 

In my career I've dealt with two main fields. The first - computer aided design software for engineering - was very cool to work in. Being able to create software that allowed engineers to think in 3D (3D graphics wasn't as prevalent twenty years ago when I started) and help people work better was very rewarding. My last job was developing software for the flight displays of the VH71 Presidential Helicopter. While doing this, I was able to work in a lab with sample cockpits and simulators. It wasn't always exciting (actually a lot of the work can be dull), but I had some great days. Yesterday I read an article in the newspaper about the first successful test flight and was proud of the work I contributed to it.

There are so many fields that use software. The most important thing to instill in your students is the vast variety of things that they could write software for - from medical imaging to engineering to building web sites like Itunes or napster. Look around and you'll find software running on everything from cars, planes, and trains to every web site that your students use (Facebook, myspace, etc.).

A: 

For those that really get into programming at a young age like that, go over things like source control, test driven development, object design, etc.

High school may be a bit early for those concepts, but if they're really into it, let's point them in the right direction early!

John Miller
A: 

Given the number of web sites and start-ups surrounding social web applications, I think a great place to start (not to mention a career booster) is by teaching Web Development.

Aside from initial excitement and hype, it would be great for high school students to go into college with a basic foundation in the fundamentals of the Web - demystifying the fluff and automated web environments we're all accustomed to.

A career in programming for web applications has a lot of options. It would be a great motivator for high school students that want to start their own businesses someday.

nyxtom
+1  A: 

Respect to you for taking this approach, I would have really benefited from someone taking this approach while I was at college learning programming.

As many have said above, web development would most likely be a big benefit...students spend a lot of their time on sites like Facebook and MySpace. Many have no idea how these sites work and I think it would really benefit them to be able to whip up a prototype of a similar system. It's also something which their fellow students would be able to interact with and thus drawing them more into programming.

Good luck.

Adam Gibbins
A: 

Mashups could be interesting, where they combine things they may already know. Google Maps + Pizza Foo locations to find the nearest Foo, for one thought. Maybe there is a way to use Twitter or Facebook with something else to make some cool application that isn't quite a game nor a business application.

JB King