Unoffical empeg BBS

Quick Links: Empeg FAQ | RioCar.Org | Hijack | BigDisk Builder | jEmplode | emphatic
Repairs: Repairs

Topic Options
#182567 - 03/10/2003 08:40 advice for undergrad programming project
DWallach
carpal tunnel

Registered: 30/04/2000
Posts: 3810
Every spring, I teach a sophomore-level programming course that's required of all CS majors. The general idea is that the lectures are roughly 50/50 split between software engineering and algorithms. The projects are generally three weeks long with students working in pairs and are intended to get students over the hump from writing "toy" programs to "real" programs (as well as having some non-trivial algorithmic requirements).

In the past two years, one project we've used has been implementing a full text search engine that runs over your own files. You build an inverted index, save it out to disk, and have another program that reads the index to answer queries. Students turned out to hate the project, so it's time to try something else. My current idea is to make them implement something analogous to the search box on iTunes. As you type, it dynamically shrinks the list to incorporate only the elements that match the query. Mozilla, as of version 1.3 or so, has a similar feature for searching e-mail headers.

Needless to say, there are lots of different ways you could go about building acceleration structures, giving the students plenty of rope to hang themselves. My questions for the programmatically inclined here are:

- Does this project have enough sex appeal? I've found that students will work much harder if they can be convinced that a project is somehow "cool". A perennial favorite is using genetic algorithms to breed pretty pictures.

- Does this sound like something that two college sophomores, working as a team, can finish in three weeks and have real-time response rates like iTunes?

- Can the existing Java widget set handle this kind of refresh rate, or do I need to ask them to fake up their own list widget?

- Are there other examples of code out there, particularly in Java, that have a feature like this that I can point students to as an example? Is there anything resembling an iTunes clone for Windows or Linux?

- My temptation is to have them load a CSV file and just pretend to be an MP3 player (or invoke an external one). What's the state of Java MP3/ID3 handling? How much harder would it be to slap together the rest of the pieces to have something approximating an iTunes clone?

Top
#182568 - 03/10/2003 08:46 Re: advice for undergrad programming project [Re: DWallach]
matthew_k
pooh-bah

Registered: 12/02/2002
Posts: 2298
Loc: Berkeley, California
Algorithmically it sounds like a easy enough project. It sounds like a lot more fun than the sharks-and-minnows simulation I remember writing for my similar class. I'd worry more about it not being enough of a challenege for a 3 week project. Of course, by three week project, you understand that you're realling saying two and a half weeks of ignoreing it followed by two days of coding, right?

Matthew

Top
#182569 - 03/10/2003 09:52 Re: advice for undergrad programming project [Re: matthew_k]
DWallach
carpal tunnel

Registered: 30/04/2000
Posts: 3810
We require students to have a written "spec" by the end of week one, a working "prototype" by the end of week two, and then the final program at the end of week three. Each of the intermediate milestones are checked off by a T.A. It's annoying to need to require it, but it makes sure that they actually are working all the way along. We also require pair programming. While it's entirely possible to work more efficiently when working separately, once we started requiring pair programming, the "oh my gawd, my partner flaked on me and I'm so screwed" incidents virtually disappeared. That's worth something.

Top