Krzysztof Czarnecki, Ph.D., P.Eng.

Professor of Electrical and Computer Engineering
I work in the area of Generative Software Development. See the overview paper for an introduction.

Short biography

Krzysztof Czarnecki is a Professor of Electrical and Computer Engineering at the University of Waterloo. Before coming to Waterloo, he was a researcher at DaimlerChrysler Research (1995-2002), Germany, focusing on improving software development practices and technologies in enterprise, automotive, and aerospace domains. He co-authored the book on "Generative Programming" (Addison- Wesley, 2000), which deals with automating software component assembly based on domain-specific languages. While at Waterloo, he held the NSERC/Bank of Nova Scotia Industrial Research Chair in Requirements Engineering of Service-oriented Software Systems (2008-2013) and has worked on a range of topics in model-driven systems and software engineering, including product lines engineering, design synthesis, variability modeling, model transformation, and domain-specific languages. He received the Premier's Research Excellence Award in 2004 and the British Computing Society in Upper Canada Award for Outstanding Contributions to IT Industry in 2008.


For students


Current Projects

Past Projects



  • MoDELS'09 conference chair
  • Bank of Nova Scotia / NSERC Industrial Research Chair (2008-2013)


Czarnecki, K., T. Bednasch, P. Unger, and U. Eisenecker, "Generative Programming for Embedded Software: An Industrial Experience Report", First ACM SIGPLAN/SIGSOFT International Conference on Generative Programming and Component Engineering (GPCE’02), Lecture Notes in Computer Science, vol. 2487, Pittsburgh, USA, Springer-Verlag, pp. 156 - 172, 2002.
Eisenecker, U., and K. Czarnecki, "Software System Families and Active Libraries – Visions for the Next Decade", Dagstuhl Seminar 01161 Product Family Development, Germany, Dagstuhl Castle, 04/2001.
Eisenecker, U., F. Blinn, and K. Czarnecki, "Mixin-Based Programming in C++: A solution to the constructor problem", Dr. Dobb's Journal, pp. 111-112, 01/2001.
Barth, B., G. Butler, K. Czarnecki, and U. Eisenecker, "Generative Programming", Object-Oriented Technology, vol. 2323, Berlin, Heidelberg, Springer Berlin Heidelberg, pp. 135 - 149, 2001.
Czarnecki, K., "Generative Programming and Software System Families, Abstract of Invited Talk", Semantics, Applications, and Implementation of Program Generation, vol. 2196, Berlin, Heidelberg, Springer, pp. 1 - 1, 2001.
Eisenecker, U., F. Blinn, and K. Czarnecki, "A Solution to the Constructor-Problem of Mixin-Based Programming in C++", GCSE’2000 Workshop on C++ Template Programming, Erfurt, Germany, 10/2000.
Czarnecki, K., U. Eisenecker, R. Gluck, D. Vandevoorde, and T. Veldhuizen, "Generative Programming and Active Libraries", Generic Programming, vol. 1766, Berlin, Heidelberg, Springer-Verlag, pp. 25 - 39, 2000.
Czarnecki, K., and U. Eisenecker, Generative Programming: Methods, Tools, and Applications, , Reading, MA, USA, Addison-Wesley, pp. 864, 2000.
Czarnecki, K., and U. Eisenecker, "Separating the Configuration Aspect to Support Architecture Evolution", ECOOP’2000 Workshop on Aspects and Dimensions of Concerns, Sophia Antipolis and Cannes, France, 2000.
Czarnecki, K., and U. Eisenecker, "Synthesizing objects", Concurrency - Practice and Experience, vol. 12, no. 14, pp. 1347-1377, 2000. [pdf]
Czarnecki, K., and U. Eisenecker, "Components and Generative Programming", Software Engineering — ESEC/FSE ’99, vol. 1687, Berlin, Heidelberg, Springer, pp. 2 - 19, 1999. [pdf]
Czarnecki, K., and U. Eisenecker, "Generative and Component-Based Software Engineering, First International Symposium, GCSE’99, Erfurt, Germany, September 28–30, 1999, Revised Papers", Lecture Notes in Computer Science, vol. 1799/2000, Berlin / Heidelberg, Springer-Verlag, 1999.
Czarnecki, K., and U. Eisenecker, "Synthesizing Objects", ECOOP’ 99 — Object-Oriented Programming, vol. 1628, Lisbon, Portugal, Springer-Verlag, pp. 18 - 42, 1999. [pdf]
Breymann, U., K. Czarnecki, and U. Eisenecker, "Generative Components: One Step Beyond Generic Programming", Dagstuhl Seminar 9817 Generic Programming, Germany, Dagstuhl Castle, 04/1998.
Kleinmann, K., M. Jungmann, W. Kopf, and K. Czarnecki, "Domain Engineering and Infrastructural Support for Software Reuse in Postal Automation", Smalltalk and Java in Industry and Academia – STJA’97, Erfurt, Germany, 09/1997.
Eisenecker, U., and K. Czarnecki, "Generative Programming", 42nd International Colloquium of the Technical University of Ilmenau, 09/1997.
Czarnecki, K., U. Eisenecker, and P. Steyaert, "Beyond Objects: Generative Programming", ECOOP’97 Workshop on Aspect-Oriented Programming, Jyväskylä, Finland, 06/1997.
Meusel, M., K. Czarnecki, and W. Kopf, "A model for structuring user documentation of object-oriented frameworks using patterns and hypertext", ECOOP'97 — Object-Oriented Programming, Lecture Notes in Computer Science, vol. 1241, Jyväskylä, Finland, Springer-Verlag, pp. 496 - 510, 1997.
Czarnecki, K., "Concreteness Kills Adaptability", ECOOP’96 Workshop on Adaptability in Software Development, Linz, Austria, 07/1996.
Czarnecki, K., R. Hanselmann, U. Eisenecker, and W. Kopf, "ClassExpert: a knowledge-based assistant to support reuse by specialization and modification in Smalltalk", Fourth IEEE International Conference on Software Reuse, Orlando, USA, IEEE Computer Society Press, pp. 188 - 194, 1996.
Czarnecki, K., D. Zhang, and K. Lano, "An Animation Tool for Supporting Specification-Based Software Architectures", The 1995 Monterey Workshop on Increasing the Practical Impact of Formal Methods for Computer Aided Software Development: Specification-Based Architectures, Monterey, California, USA, U.S. Naval Postgraduate School, 09/1995.