My school is using AIMA for every introductory AI-course, and if you're looking for pointers on how to implement some of the algorithms and methods described in there in python, have a look at http://code.google.com/p/aima-python/ . Since it's Norvig himself coding, the quality of the python is practically flawless.
That said, Bayes nets are fully implemented (as presented in the book, i.e. for boolean variables) and I think worth reading and trying out if you're learning the subject. Also worth checking out is aima-java, in a much more complete state, though of course a lot wordier the way it is with Java.
If you'd like to contribute, there's plenty to do. (For example the E-M algorithm used in this post to learn the Bayes net parameters.) I set up a mirror on github the other day to make it easier: https://github.com/darius/aima-python-mirror
(I don't have the spare energy right now to do a lot, myself. Including editing too many patches coming in, though it'd be a surprise to get that problem.)
So while all this is really cool, and I like the idea of doing EM on missing data (I've done it myself), it doesn't seem like it actually adds much, if I'm reading that right.
The 'T' variable is likely just a case of multicollinearity with the 'E' variable and should go away on a full-scale data set. If not it can easily be removed from the model. The 'E' variable is dominating because is additionally captures cross-sectional affects across the various exercises in the regression.
That would explain the magnitude, and I agree the negative weight on T would just be due to the direct correlation between E and T.
Edit: I just realized that an exercise consists of multiple problems, so you're predicting whether or not the student will get >= 85% of the problems right on an exercise.