Greetings fellow Monks,
I've got a project I need to do for school, the only problem is, I'm not quite sure what to choose as a topic. It should be programming related, though not necessaraly in perl. Does anyone have any suggestions? (Doesn't necessaraly have to be new either, but that would be nice.)

Note: I'm writing this at 12:30 after having a very busy day... so not all of that may make sense... I'll try to clear it up in the morning.

Thanks!


My code doesn't have bugs, it just develops random features.

Flame ~ Lead Programmer: GMS | GMS

  • Comment on Looking for Suggestions on School Project

Replies are listed 'Best First'.
Re: Looking for Suggestions on School Project
by PodMaster (Abbot) on Sep 14, 2002 at 04:46 UTC
    How about a College planner, that makes sure you have all your major requirements and there is no overlapping and such? Make it very generic, and database based, so it isn't specific to a particular major or college, as long as the database is stuffed (i was gonna do it with damian1301, but he hit puberty, and lost interest ;)

    Make it modular, so you can build multiple interfaces. My plan was a web based one, using CGI::Application and HTML::Template.

    ____________________________________________________
    ** The Third rule of perl club is a statement of fact: pod is sexy.

      Hmm, that's an interesting idea, there's definately a need for it, and it sounds doable. I'll seriously consider it. Thanks!



      My code doesn't have bugs, it just develops random features.

      Flame ~ Lead Programmer: GMS | GMS

Re: Looking for Suggestions on School Project
by FoxtrotUniform (Prior) on Sep 14, 2002 at 04:47 UTC

    One thing I've always wanted to look at is unsupervised modelling: given a few basic concepts and some parameters, produce a semirandom 3d polygon model. L-systems look like a workable approach: specifying the generation rules and terminals gives you a lot of control over your output, and it looks easy to build an interesting and complex system. Not exactly trivial, though.

    If you choose to do this, Wavefront's OBJ file format (more info here) is the obvious choice: nice and easy to work with, and powerful enough to do pretty much everything you'd want.

    --
    F o x t r o t U n i f o r m
    Found a typo in this node? /msg me
    The hell with paco, vote for Erudil!

      Hmm, you've made me curious, but I have to admit... unfortunately, I have no clue what you're talking about.

      *hehe*

      Can you explain in a little more detail? (sorry, just never heard of what you seem to be describing.)



      My code doesn't have bugs, it just develops random features.

      Flame ~ Lead Programmer: GMS | GMS

        Hmm. Okay, in this context, an L-system is sort of like a grammar with extra information. Doesn't help much, eh? :-)

        Here's a simple example: random models of trees (those big leafy things in the room with the tall ceiling, not graphs). We can describe a (kind of) tree with this L-system:

        Tree: Stick . (Branch)+ Branch: Stick . (Branch)+ | Stick . Leaves Stick: <model of a stick> Leaves: <model of leaves>

        Basically, a tree is one big stick (the trunk), with a bunch of branches on the end. A branch is a stick with a bunch of (smaller) branches on the end, or a stick with leaves on the end. Sticks and leaves are "terminals": they're well-defined, and we don't make more of the model once we're at a stick or a leaf.

        There's a lot of information that we didn't specify for each of these rules. For instance, we don't want to have branches scattered just anywhere on the trunk; we probably want at least one or two of them right at the top. We also don't want them growing at just any angle; probably around 30 degrees of the branch they're growing off of (we pick the exact angle for each branch randomly). But that's the basic idea. (You can find a nice demo of L-system trees here.)

        Now, the interesting thing about L-system modelling is that it gives you different results each time, but those results are all related. You won't get the same tree twice (well, okay, up to the period of your PRNG) from this system, but you'll always get trees. So what if you apply this to a different problem? What if, instead of a grammar for trees, you make a grammar for fighter craft in a Homeworld-like game? It might look something like this:

        Fighter: Body . Wing . Wing . Engine+ Body: Fuselage . Cockpit . Weapon+ Wings: (Control Surface) . Weapon? | Weapon? Engine: Intake? . Thruster . Exhaust ...

        Now, every time the player encounters a new enemy fleet, you can generate a fighter model that they haven't seen before, but still looks something like a fighter. Your player never knows quite what to expect, and gets a slightly different experience every time.

        The really hard part is making these models look good....

        --
        F o x t r o t U n i f o r m
        Found a typo in this node? /msg me
        The hell with paco, vote for Erudil!

Re: Looking for Suggestions on School Project
by diskcrash (Hermit) on Sep 14, 2002 at 14:37 UTC
    Dear Flame,

    Your GMS site looks very interesting and has some open issues on features. You might extend those but use a broader context for use in other apps. Some other suggestions:

    1. Development of a script for some specific USB device support.

    2. Create a new client server app (pick an open port number) and create some nifty chat/game/news/mail/file share display toy.

    3. Find a pair of file types that need conversion but no one has built yet. For example astronomy FITS files.

    4. Serial port I/O support in Perl has always needed some improvements. How about reviewing it and offering updates.

    5. Code and set up an "always on" network port location for other people to test client server apps to. Config it with an e-mail then test it with a socket.. or?

    Turn up the heat, Flame!

    Diskcrash

      Wow, thats quite a bit I hadn't even considered, mostly because I wouldn't know where, or, for that matter, how to begin.

      I'll look at them one by one.

      "Development of a script for some specific USB device support": Hmm, while interesting, I wouldn't have a clue how, though I'm more than willing to learn if you can point out something that could explain that.

      "Create a new client-server app": Ooh, this is something I've wanted to try to do for a while, but I've never gotten over that first major hurdle of figuring out how to get them to talk to each other, any suggestions?

      "Find a pair of file types that need conversion...": My biggest flaw at the moment may very well be that I have a rediculously hard time understanding the anatomy of a file format. I've never really worked with anything becides plain text. Once again, if you have any suggestions as to how I could get better, just say so :)

      "[Improve Perl I/O support]": Hmm, interesting, are you refering to the IO modules, or to something else though?

      #5: Well, umm... could you explain that in a little more detail (/me has minimal knowledge of network systems & program interaction)

      I know, I'm helpless! Hehe. Seriously, all of those sound interesting, but for most, I'd have no idea how to do it. That's part of why I'm doing this project though, to try to learn something I don't already know. So if you can answer any of those questions, I'll appreciate it. Thanks!

      Note: Yes, by some freak accident I made it to "Friar" here without any of that knowledge.



      My code doesn't have bugs, it just develops random features.

      Flame ~ Lead Programmer: GMS | GMS

        Dear Flame,

        USB -support - there are a few USB test kit vendors out there who provide drivers and small USB test boards. They usally read switches and light LEDs. There are USB ref docs on the web. I'd contact a vendor and see if they would help you out.

        Client-server apps are documented with code in several Perl books. They usually let you send and receive a buffer full of bytes between two ports on two machines. You would add some structure to the buffer content and possibly use simple TK to display the results. You might make a master/follower mouse display or perhaps a "public scratchpad" app. Check out "Perl in a Nutshell" - Chapter 13.

        The file server converter is interesting. Use hex mode in vi (or similar editor) to look at the byte by byte content of a file. Start with a simple text file. You'll see the text and the "whitespace" characters, like line feeds, spaces etc. You can use Perl to read and parse this file and then spit out a different format. Consider a simple Unix /PC converter. You might also try a simple encryption technique.

        In the broader sense think about any app that needs to move info of one type to another in a consistent way. The term often used is "Data Munging" and there is a good book by that title for Perl (by David Cross). This sounds pedestrian, but a whole lot of people get paid a whole lot of money to come up with fast and accurate format conversions.

        Good luck and use strict

        Diskcrash

Re: Looking for Suggestions on School Project
by Nemp (Pilgrim) on Sep 14, 2002 at 13:35 UTC
    Hi Flame,

    Can you tell us a little more about where your interests lie and what kind of things you'd like to work on? It's all too easy to throw out suggestions but we could end up starting you down a track you don't care for too much or something you won't enjoy donig. (and to me if I'm working on a project I get to help define I make very sure it has elements in it that I think I'll like :))

    Regards,
    Neil
      Well, part of the problem is that my interests are rather broad, and I'm trying to expand them. Basically, I'm willing to seriously consider anything I'm capable of doing. It should stretch my skills a little, if possible. I'm not quite sure how I could judge my current coding skills, so I can't really give a guideline there... perhaps taking a look at the (slightly outdated) CVS repository at the sourceforge home for GMS could show approximately how good I am?



      My code doesn't have bugs, it just develops random features.

      Flame ~ Lead Programmer: GMS | GMS