Human Computer Interaction: visual programming of educational simulations with end user programming, intelligent agents, usability evaluation, computer supported collaborative work, minimalism. Software engineering: software reuse, object oriented program analysis/design and development.