However, the main difficulty of building a browser engine is (IMHO) the fact that it should update the display incrementally whenever a change in the DOM-tree or the CSS occurs. That is, an update should cause a minimal (or close-to-minimal) number of (paint) operations to be performed. I'm looking forward to the discussion of this topic :)
Even if you don't implement it, it could be nice if you discussed it in abstract terms. That is describe the architecture, rather than write a complete implementation.
IMHO, architecture is more important than implementation, especially when explaining things.
This is currently implemented in Servo, but it is not a trivial problem. It was only added in the past several months, if I recall correctly (pcwalton will have to clarify). This is but a demonstration engine for educational purposes - kind of like Featherweight Java.
However, the main difficulty of building a browser engine is (IMHO) the fact that it should update the display incrementally whenever a change in the DOM-tree or the CSS occurs. That is, an update should cause a minimal (or close-to-minimal) number of (paint) operations to be performed. I'm looking forward to the discussion of this topic :)