Since 2003 I’ve been teaching lots of courses, mostly Bachelor courses related to computer architecture and programming. I won’t list all of them here. The most recent ones appear on the official teaching page of the Federico II web site.
In addition to academic teaching, I’ve also been giving industry-oriented courses. In particular, I organized and taught two courses on digital design techniques, with special emphasis on reconfigurable technologies, at the Italian Aerospace Research Centre (CIRA), and I taught three editions of an industrial course on “Complex Systems Security: Digital Signature and PKI”, at Selex-SI, Finmeccanica Group, Rome, in 2008, 2010, and 2012. Furthermore, I taught a course on hardware security and trusted computing at Elettronica S.p.A. in 2016.
Among my teaching activities, two years ago I started a Master Degree course called Advanced Computer Architecture and GPU Programming (ACAGPU). As the name implies, the course deals with those aspects in computer architecture that are not normally covered by basic master courses, like ILP and dynamic instruction scheduling, advanced aspects of modern microarchitectures and cache coherence protocols, manycores, interconnects and networks on chip, including details and examples of real hardware implementations (the best way to get a true sense of what a modern processors contains), along with the details of GPU (micro)architectures and their subtle implications on programming. The course also includes challenging assignments, either on the “ACA” part or the “GPU” part, in both cases requiring students to put their hands on practical problems (e.g. designing a NoC router microarchitecture, designing a scoreboard for dynamic instruction scheduling under given requirements, etc.). As you might guess, most of the assignments are linked with the objectives of the ongoing projects, particularly MANGO and the Intel HARP grant. All in all, it’s a very dense, absorbing course, and most students are quite satisfied with it.
In addition to teaching, I normally supervise (plenty of) bachelor, master, and PhD thesis activities. While a few of them directly cover the above topics, most of the theses do not require the ACAGPU course and also cover broader topics in the area of digital design, interconnects, computer arithmetic, hardware security, and cryptographic processing.
If you are a student, consider taking a look at the open activities for your thesis here!