John Plaice
About John Plaice
John Plaice is a Senior Scientist at GrammaTech, specializing in static analysis tools for programming languages. He has extensive academic and industry experience, including positions at UNSW and various universities across Canada.
Work at GrammaTech
John Plaice has served as a Senior Scientist at GrammaTech since 2015. His work focuses on developing tools for the static analysis of programming languages such as C, C++, Java, and C#. These tools are designed to detect defects in source code during the programming phase, enhancing software quality and reliability.
Education and Expertise
John Plaice has a strong educational background in computer science and mathematics. He studied at the University of Waterloo, earning a BMath in Pure Mathematics and Computer Science from 1979 to 1984. He furthered his studies at Institut national polytechnique de Grenoble, achieving a DEA and Dr.-Ing. from 1984 to 1988. In 2010, he obtained a higher doctorate (Habilitation) from Université Grenoble Alpes.
Academic Positions
John Plaice has held various academic positions throughout his career. He has been an Adjunct Associate Professor at UNSW since 2012, contributing to both practical and theoretical courses in computer science and software engineering. He previously served as an Associate Professor at UNSW from 1997 to 2012, and at Université Laval from 1992 to 1998. His early academic career included roles as an Assistant Professor at the University of Ottawa and the University of Victoria.
Previous Work Experience
Before his current role at GrammaTech, John Plaice worked in several positions in the tech industry. He was a Senior Software Developer at Klocwork from 2014 to 2015 and served as an NLP Engineer at Maluuba for one month in 2013. He also held a Visiting Scientist position at Concordia University from 2012 to 2013.
Consulting and Research Interests
John Plaice has consulted for both industry and academia, focusing on digital typography and natural language processing. His research interests include core algorithms, data structures, and programming techniques for basic computing infrastructure. He has played a key role in projects aimed at designing and implementing new programming languages and systems.