Gregor Kiczales

Professor

Office
ICCS
311
Office Phone #
604-822-4806

Academic Information

Undergraduate Study M.I.T. (1978-1983); Research Staff, MIT Lab for Computer Science (1980-1983); Member of Technical Staff, Symbolics Inc. (1983-1984); Member of Research Staff, Xerox PARC (1984-1999); Manager, Software Design Area, Xerox PARC (1992-1999); Principal Scientist, Xerox PARC (1996-1999); Professor, University of British Columbia (1999-); Xerox/Sierra Systems/NSERC Software Design Chair, UBC (1999-).

Research Areas

programming languages
computer science education

Research Groups

Interests

My research is directed at enabling programmers to write programs that, as much as possible, look like the design. My belief is that programs that clearly express the design structure they implement are easier to maintain, because questions about what a part of the program does, why it does that, and what other parts of the program depend on that behavior become easier to answer.

In pursuit of this goal, most of my research has been in programming language design and implementation, but I am also interested in programming environments, design and coding styles, and software engineering principles.

A key theme underlying my work is mechanisms that support crosscutting program modules. These are units of code that deliberately cut across each other's modularity boundaries. My belief is that this kind of modularity, when grounded in proper principles, can make complex systems significantly easier to develop and maintain. The goal of my work is to discover these principles and the mechanisms that can support them.

Courses

2024 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
2023 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
2022 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
2021 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
2020 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
2020 Summer
CPSC_V 110 - Computation, Programs, and Programming
2019 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
2018 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
2018 Summer
CPSC_V 110 - Computation, Programs, and Programming
2017 Winter
CPSC_V 110 - Computation, Programs, and Programming
2016 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
2015 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
2014 Winter
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming
CPSC_V 110 - Computation, Programs, and Programming