On the Dissertation Proposal

One of the steps in the Ph.D. is the dissertation proposal.  This is when a student actually says what the plan to do for the next few years of their life, and their dissertation committee gets to review it.  While it is a bit of a formality, it is actually quite important for several reasons:

  1. The work has to be sufficiently novel and interesting to be worth doing.
  2. The scope of the project has to be achievable – graduate student is not a tenured position.
  3. The amount of work has to be big enough.

It amounts to a contract – If the student does this then they can write up their dissertation and graduate.

The proposal serves another very important point though.  The primary aim of Ph.D. education is not just more stuff “piled higher and deeper”, but the ability to recognize an interesting research problem and to formulate a plan to answer it.

We have a bit of an argument in my department about this (though I’m in  a distinct minority about it), and many of the faculty treat it as a “pre-disseration” to be done just before the dissertation defense.  In the physical sciences, it is done very early in the students work – usually just after the dreaded qualifiers.  Developing the ability to structure research is even more critical in computer science, because – unlike the natural sciences – in computer science a student quite often goes directly to an assistant professorship and therefore has to be able to make these plans and proposals from the very start of their post-doctoral career.

Written by Rob in: laboratory practice,pedagogy,science |

More on the Asus 1000H

I had to rebuld my asus after an automated upgrade. ARRRGH!. Anyway it is probably best to unpack the development kit to a directory (mount the iso, use tar -cvf – <files> | tar -xf -; then move directories around) so that the files are always there. The specific thing that broke it was an upgrade to the chinese language module which is not exactly useful for us Gaijun.

By not implmenting any of the asus upgrades I can now get GIMP to install, so I would recommend not doing any of their upgrades until you are happy with the system (and probably not even then).

More notes 5/7/09 – I’ve had a couple of mysterious crashes where the disk is completely overwritten and it has to be rebuilt. Could be a hardware error, but the only reproducible factor was I’d just built and installed OCAML – so it’s also possible that the OCAML install script overwrites something important on this machine.

5/13/09 – Definitely not OCAML,  either a loose battery or a hardware defect.  I don’t get a repeat when its plugged in which suggests the battery isn’t locked down.  But it may require a call to Asus to resolve this.

5/16/09 – loose battery. Make sure that that the battery is locked in.  If it is not locked in then it can be moved to partially depower the system which scrambles the memory.

Written by Rob in: engineering,security |

In Praise of “.h” Files

Just back from CIDM 2009 at Nashville, and for the moment we’re ahead of the pack in fuzzy data mining. The reason for this is actually the quality of our software engineering – our (well Na’el’s) program is so much faster than the competition that we can actually tune parameters and get close to optimal performance out of what should be a good algorithm for learning. (It sort of looks like adding fuzzy-ness takes the decision tree approach from being a “weak learner” into being a “strong learner”). But that’s not what this post is about.

There were a couple of ideas that I ran into in the meeting and I was able to rapidly prototype code in C++ for them. One was “Differential Evolution” which is a neat twist on the genetic algorithm where random differences are used to recombine the genes, and the other is “radically random trees” where the decision tree is chosen at random and selected for by trial and error. (I haven’t quite finished prototyping that, but it is well underway). I also built a near state of the art particle swarm tool while (not really) listening to someone nattering on about their variation of yet another SVM. Differential evolution is really neat and I’ll probably post a few results soon.

How could I do this so fast? and more importantly have working code at the end!

I used C++ and I used “.h” header files to design the classes before I built a single bit of code. I could check my class design for consistency and completeness before writing code. Then the code practically writes itself, because with well-designed class methods there is only a small amount of self-contained code to write.  This is different from Java or Python (or many other OOL’s) but really useful.  In Java you don’t lay out a description of the objects before you write them. (well, you can but its not the standard approach) It is hard to resist the temptation to start on the  implementation before writing the design.  Sometimes that’s OK – especially if the object is so complex or poorly understood that you need to write something to find out what you don’t know – but it is truly inefficient.  Anyway even with a small, slightly slow, Asus EEE 1000, I could run test programs on problems that were comparable to what was being presented.  There is no easier way to sort out BS, than to test it as it’s being presented ;-).

Written by Rob in: engineering |

Powered by WordPress | Aeros Theme | TheBuckmaker.com WordPress Themes