I am going to teach my first module at Masters level tomorrow: Software Architecture.
Of course, I am delighted and a little bit worried at the same time (sic). Teaching at Masters level is a new experience for me. But, to be frank, I can cope :-)
During the semester, I intend to make my students understand that building large-scale software is tough if one wants the software to be achieve qualities (like reliability) while respecting costs and deadlines. This requires the software to have a formal architecture. The nice thing is that this is a 2+2 module (i.e. 2 hours of lectures + 2 hours of lab weekly). I intend to make the students work on design patterns and existing frameworks a lot.
I am also thinking about making the students work out the architecture of (a small part of) an existing open-source software by themselves. This is bound to be (pedagogically) cool…
Programming Languages
During the second semester, I’ll also, for the first time, teach Programming Languages to a group of 200 second-year students. My intention is to show them the value of alternative programming paradigms in addition to what they already know (i.e. imperative with C/C++ and stateful OO with Java).
I’ll introduce them to logic programming, (lazy) functional programming, message-passing concurrent programming. I am leaning towards Prolog, Haskell and Erlang respectively. But I may also adopt the more radical Mozart.
And, naturally, I will also introduce them to the power of Unix scripting using, guess what, Ruby!
PS: I am assuming here that UoM will still exist in some weeks :-)
21 August 2007 @ 18:31: an update
I’ve just finished my first ever Masters-level course and it has been great! Now, I can go and have something nice to eat :-)