Student Programming Projects

Hi. Next Semester, I am supposed to teach a short course in Haskell. Can anyone recommend interesting programming projects which can be completed in about a month? I posted this message a while ago and got a few suggestions that sounded like they would maintain student interest. Alas, my disk drive crashed soon thereafter. So if you have given me suggestions before, please do so again. I was particularly intrigued by the suggestions put forth by someone who complained that someone else's suggested projects were too theoretical. We need to try to capture the students' imaginations here and many of them prefer concrete thought to abstract thought. Again. Thank you very much. Barbara Nostrand -- +----------------------------------+----------------------------------+ | Dr. Barbara Nostrand | Department of Computer Science | | Assistant Professor | SUNY College at Potsdam | | Computer Science and Engineering | Potsdam, New York | | (315) 267-2216 | 13676 | +----------------------------------+----------------------------------+ | Ignored domains: bestbiz.net, pop.net, hotmail.com, aibusiness.com | | vdi.net, usa.net, tpnet.pl, myremarq.com | | netscape.net, excite.com, bigfoot.com, public.com | | com.tw, eranet.net, yahoo.com, success.net | | mailcity.com, net.tw, twac.com, netcenter.com | | techie.com, msn.com | +---------------------------------------------------------------------+

G'day all. On Fri, Nov 02, 2001 at 11:52:04AM -0500, Barbara Nostrand wrote:
I posted this message a while ago and got a few suggestions that sounded like they would maintain student interest. Alas, my disk drive crashed soon thereafter. So if you have given me suggestions before, please do so again. I was particularly intrigued by the suggestions put forth by someone who complained that someone else's suggested projects were too theoretical.
That may have been me. IME, there's only so much theorem proving to which you can subject an undergraduate before they switch off. My suggestion is to look to the other subjects that they've done and raid them for ideas. For example: - If they know about DFAs and regular expressions, get them to implement a cut-down version of Lex. (I have a really neat DFA construction method tucked away which is much more "algebraic data type" than the one you get taught in the Dragon Book. It's also much faster. Available on request.) - If they know about graphics, get them to implement a simple ray tracer. Limit yourself to one kind of geometry (say, spheres) but allow different kinds of light source and surface material. - If they know about game playing, alpha-beta search, heuristic search, get them to implement a program which plays some one- or two-player game and let them compete against each other (in one-player games, lowest average and/or worst-case number of moves wins some small prize, use runtime to break ties). Some suggestions for games of about the right complexity: "Mastermind", 15-puzzle. - If they know about Unix, get them to implement a program from the standard environment, like diff(1). (Provide or point them to an algorithm for longest common substring first, of course.) - If they know something about numerical analysis (or even if they don't), how about a program to perform numeric integration of a function? Gauss-Konrod quadrature with binary subdivision tends to be quite easy to understand. - If they've been introduced to the class NP, get them to try to solve an NP-hard optimisation problem. Impose a time/resource limit. Whatever happens, give them a project that they can see the practical use of, or if not, that they can play with. Cheers, Andrew Bromage
participants (2)
-
Andrew J Bromage
-
Barbara Nostrand