Working on Chapter 15.
Implemented an HMM with predict, update and forward.
The code for this (after extensive refactoring) is looking good.
I used an example from Probabilistic Robotics as an additional requirement for the HMM code, i.e, enable the HMM implementation to model a robot with uncertain sensors and stochastic actions. This has worked out well, as an HMM modelling a robot has to make provision for robot actions.
The example in AIMA models a passive observer trying to estimate the probability of rain from seeing whether his superior carries an umbrella or not. Unlike the robot, he has no action he can take that modifies the environment.
The present implementation models both these situations as can be seen from the unit test.
I've also implemented the code for single step smoothing (section 15.2 page 545 in my edition).