Teaching software engineering.
In the future, I would like to spend more time teaching software engineering.
- Foundations
- Algorithms, data structures, and fundamental software engineering concepts.
- Object-oriented design
- Design patterns, object-oriented design and principles, and how design choices affect real code.
- Development practices
-
Test-driven development, specification-driven development, and the connection between requirements,
tests, and code.
- Event-driven and distributed systems
-
Event-driven development, service design, and distributed systems, including how services communicate
and work together.
- Software engineering in practice
-
Seminars on a career in software development, code reviews, estimation, preventing regressions, and
writing useful documentation.
I would draw on around 30 years in software development, including my work at Microsoft and Amazon, to
connect these topics with the decisions engineers encounter at work.
Teaching background
I currently lead an Engineering Study Group at Microsoft. Earlier teaching included developer courses at the
European Institute of IT Education, introductory programming at high school, and mathematics seminars during
my doctorate.