Short CS course
December 9, 2007 2:00 PM   Subscribe

I have to teach an undergraduate short course (3 - 4 weeks) on software development using a new technology/tool/framework. What should I teach?

My first thought was doing Ruby on Rails. But there may be something else that is beneficial/cool/exciting for them, and can be done in a short time. Ideas?
posted by raheel to Computers & Internet (17 answers total) 2 users marked this as a favorite
Teach them python.
posted by tkolar at 2:06 PM on December 9, 2007

Processing is fun, useful, and easy to learn.
posted by aparrish at 2:14 PM on December 9, 2007

You could learn them functional programming style text processing using Python as a language. There's a book by David Mertz, Text Processing in Python that describes this. Learn Python, learn functional programming, learn text processing.
And you can do a lot in a few weeks.
posted by jouke at 2:24 PM on December 9, 2007

Is the course in the CS program? Are the students going to be experienced in any programming? Any prerequisites? These are essential to know here...
posted by tmcw at 2:25 PM on December 9, 2007

Response by poster: Hmm, I did leave out some details.

It's in the CS program. I will expect them to have dealt with programming before — it's too short for me to teach them the basics of programming. I would like to teach something related to web development.
posted by raheel at 2:47 PM on December 9, 2007

I've always thought a great intro to javascript course could be built on SVG. As a markup language its tag set is somewhat more rational than HTML. You could start off with the basic tags for constructing graphics, do fancier things like gradients and splines, next have them add snippets of javascript to do animation or mouse-overs or other dynamic effects, then move into more practical applications. SVGKit, a library that simplifies some SVG-handling functions, might come in handy. See also Inkscape, an open-source design tool for SVG graphics.

For lack of consistent cross-browser and cross-plugin support (though it's natively supported in FireFox) SVG still hasn't made it into the mainstream of web design. But if your focus is on javascript that would all be transferable.
posted by XMLicious at 3:10 PM on December 9, 2007

If you're thinking web, maybe one of the Python web frameworks like Turbogears or Django, if you've enough time to cover the basics of the language, at least, and the framework essentials. It might be an unpopular choice in here, but something on the ASP.NET framework controls and maybe some AJAX.NET thrown in won't do any harm if your students aspire to enter the corporate or government IT world. The free ASP Web Express IDE (or whatever MS calls it these days?) is enough to get you busy.
posted by normy at 3:29 PM on December 9, 2007

It might be an unpopular choice in here, but something on the ASP.NET framework controls...

I'd thought of ASP.NET too, and Silverlight which is similar to SVG, but from his other posts raheel is a Mac guy. Though maybe it doesn't matter in the context of the course.
posted by XMLicious at 3:41 PM on December 9, 2007

- Teach them how to understand/use web APIs - each can come up with a cool project on his own using Flickr, Upcoming, Google Maps, Facebook, etc.

- Make something cool with Google Android

- If they are advanced students, do something cool with MapReduce
posted by david1230 at 3:48 PM on December 9, 2007

Silverlight runs on Macs (Safari at least), but 2nding the Android.
posted by panamax at 4:16 PM on December 9, 2007

Since it's web, I'd say...

Teach PHP and either CakePHP or CodeIgniter. Focus on actual good practices of PHP and somewhat unknown features (variable variables, scope, security concerns). It's really odd how my fellow CS students have fairly rudimentary knowledge of PHP, even though it's a ruling language on the web.

or Teach Python, but with a lightweight framework like, or Ruby on Merb or Camping.

Basically, teaching kids web languages is not as massive a challenge as teaching them C or C++, and it's arguably as useful, so focus on that first. Frameworks come and go (Ruby on Rails seems to be going, Django seems to be coming), but if you can just demonstrate the correct use of the MVC model (which is imitated, in some form, in all of these frameworks), then you'll have done a lot of good.

I'd stray away from focusing on APIs... those are very easily 'learned' in a day or two - and the results, while flashy, are only sometimes useful on their own. Teaching people practical fundamentals is a massively underrated practice in computer science.
posted by tmcw at 5:00 PM on December 9, 2007

I know it's not web-ish, but they might get something out of 4 weeks of shell scripting. I know that you've got to spend a certain amount of time with man before you've earned your beard, but I'd jump at the opportunity. My school doesn't ever touch on it, and I'm amazed to find many of the juniors I've met don't know more than the basic movement commands and make.
posted by tylermoody at 6:32 PM on December 9, 2007

Oh god instead of a final exam you could have a scavenger hunt. Put the answer to #11 on a flash drive they pass around and have to mount manually, make them do horrific sed, awk, and grep searches to pull the answers for 3 questions out of the original Beowulf, oh it could be awesome. All at the CLI, of course.
posted by tylermoody at 6:38 PM on December 9, 2007

If you want web, I vote for django which. It has a pretty clear design, and you don't have to get super deep into it to produce something useful. It's definitely a lot cleaner than the PHP-based things I've looked at.
posted by beerbajay at 1:48 AM on December 10, 2007

posted by beerbajay at 1:48 AM on December 10, 2007

Someone mentioned Javascript, and I actually think that would be a really good idea. If you're going to do any kind of dynamic web pages, you're either going to use it directly or implicitly.
posted by delmoi at 12:13 PM on December 10, 2007

You've probably already finished your course but I came across good tools for another one: you take this guy's Fractal Planet application (free) and put yourself together a fictional planet. It does a bunch of cool fun things including a rotating globe and 3D flythrough. Then use the option that exports the pieces of the generated planet: a texture / image for a sphere, a height map, and a normals map.

Then you take the image and the height map and plug them into the GIS utility OpenEV (which is best installed through the FWTools package) which permits its own 3D flythrough of a flattened version of the globe and a variety of map-analysis functions. (The steps to do this in OpenEV are to select File -> Open 3D, then choose the Fractal Planet .ppm image file as the "drape" and the .pgm height map as the "DEM", and you'll need to scale it down by a factor of around .01.)

You run the students through the above steps, maybe have some fun seeing what happens when the height map is edited beforehand (the image viewer/editor IrfanView can open those files), talk about spheres and cylindrical projections and Mercator projections, maybe raster images versus vector images, and then launch into one of two possible curriculums:
  • GIS systems
  • Basic raytracing and rendering
There are quite a few pieces of nifty software out there in both categories - both free and commercial - and a great deal of tutorial and exercise content as well.
posted by XMLicious at 3:44 AM on March 3, 2008

« Older What are the rules for Canadian copyright terms?   |   Best German Classes in Sydney? Newer »
This thread is closed to new comments.