Our research and teaching focuses on the development and application of formal and semantic (i.e. mathematically grounded) methods to the study, modeling and verification of complex systems in various fields of computer science, varying from software development to ontologies and conceptual blending. An important topic are logic-based methods and the study of modularity, based on the notion of institution, an abstract formalisation of the notion of logical system. Modularity arises both at the specification level (i.e. modularity of logical theories), as well as at the implementation/software architecture level (i.e. modularity of models of logical theories). Another topic is heterogeneity, arising from different viewpoints onto a system, formulated in different logical formalisms. Modularity and heterogeneity are key techniques for a divide-and-conquer approach to complex systems.