Historically my research areas have been algorithm design/analysis and computational complexity. I have worked on parallel algorithms, combinatorial optimization, randomized algorithms, graph-theoretic algorithms (notably those involving graphs of bounded pathwidth and treewidth), fixed-parameter-tractable algorithms, and computational complexity.
I found at one point that senior undergraduate students could not think algorithmically or write code from scratch; their early "objects-first" training seemed to be aggravating the problem. I designed and offered an alternative first-year sequence using functional programming, which became the basis of the courses that all Faculty of Mathematics students at the University of Waterloo take.
This led me to discover the fascinating world of functional programming, along with operational semantics and type theory. I am currently attempting to get up to speed in the area of programming languages by reading, attending conferences such as POPL and ICFP, and teaching graduate courses. I am particularly interested in purely-functional algorithms and data structures and their relationship with persistent data structures and concurrent algorithms. I am also interested in the connections between type theory and formal logic, and applications to verified computation. I have presented at workshops associated with TFP, and been on program committees of workshops associated with ICFP.
Here are some representative publications.
P. Ragde. Proust: a nano proof assistant. Electronic Proceedings in Theoretical Computer Science, 230: 63-75, 2016.
P. Ragde. Simple balanced binary search trees. Electronic Proceedings in Theoretical Computer Science, 170: 78-87, 2014.
P. Ragde. Mathematics is imprecise. Electronic Proceedings in Theoretical Computer Science, 106: 40-49, 2012.
M. R. Fellows, C. Knauer, N. Nishimura, P. Ragde, F. Rosamond, U. Stege, D. M. Thilikos, and S. Whitesides. Faster fixed-parameter tractable algorithms for matching and packing problems. Algorithmica, 52(2): 167-176, 2008.
V. Dujmovic, M. Fellows, M. Hallett, M. Kitching, G. Liotta, C. McCartin, N. Nishimura, P. Ragde, F. Rosemand, M. Suderman, S. Whitesides, and D. R. Wood. On the parameterized complexity of layered graph drawing. Algorithmica, 52(2):267-292, 2008.
I was on sabbatical 2015-2016. In fall 2016, I taught a new version of the core undergraduate course CS 245E, "Logic and Computation (Enriched Version)", which involves using Racket to build a proof assistant for propositional and predicate logic, based on the idea of propositions as types. I also taught CS 798, "Software Foundations", a repeat of the course I taught in fall 2014. It is based on the online textbook of the same name by Benjamin Pierce and co-authors that discusses relationships among functional programming, logic, proof assistants, formal reasoning about programs, and type systems, using the Coq proof assistant.
In spring 2017, I repeated CS 245E, and offered a newly-developed version of CS 240E, "Data Structures and Data Management (Enriched Version)". In fall 2017, I will teach CS 600, "Fundamentals of Computer Science for Data Science", for those in the new MMath Data Science option who do not have an undergraduate degree in CS. I will repeat CS 240E in winter 2018, as well as a revised CS 442. I hope to teach CS 245E and CS 798 in fall 2018.
In winter 2006 and winter 2007, I developed a version of CS 245 (Logic and Computation) that is both more rigourous and more attuned to the rest of the CS curriculum than the ones normally taught. In fall 2007, Brad Lushman used my slides as a basis for his offering, and made a number of improvements. I keep his version online as a reference for students who might encounter a less-than-optimal conventional offering of the course. However, I think my CS 245E approach is better than what I did then.
A summary of my teaching history is available, as are a few anecdotes. I also have a set of essays on teaching written several years ago (many adapted from blogs I did for specific courses).
I serve on the Math Faculty's Committee for Student Appeals. I am also on the University-level Steering Committee for Gender Equity Grants, and play a role in selecting grant recipients, as part of the University's commitment to the HeForShe IMPACT framework.
In the School of Computer Science, I serve on the Women in CS Committee. Prior to August 2015, I was for several years in the pool of chairs for PhD defences throughout the university, and I was faculty advisor to the Computer Science Club. I have been on the Undergraduate Academic Plans Committee several times, most recently ending in July 2015. Prior to July 2014, I served on the Outreach and Undergraduate Recruiting committees.
For several years, until August 2016, I was the Math Faculty representative on the University Tenure and Promotion Appeals Committee (in which capacity I acted as an observer at meetings of the Promotion and Tenure Committee for a Faculty other than my own).
I was on the University Diversity Advisory Committee as a representative of the Faculty Association from January 2011 to August 2015.
For several years, I was on the Instructional Technologies Advisory Committee, which advised the Associate Vice-President (Academic) on issues relating to teaching and learning. It gradually stopped meeting, and I have no idea when it ceased to exist (2012 or later). Or maybe it still exists; it's mentioned on at least one official UW web page.
From September 2009 to September 2010, I served on the Teaching Excellence Council as one of the Math Faculty representatives.
Prior to July 2010, I served on the university-level Senate Undergraduate Council and the faculty-level Undergraduate Affairs Committee, and on the School's Space Committee.
I was interim Director of First-Year Studies in Computer Science for the Faculty of Mathematics from January to July 2006. I could not serve a full term because of an impending six-month sabbatical starting July 2007. Dan Brown returned from his sabbatical and took over the position.
From September 2003 to August 2005, I was on the University Appointments Review Committee (which reviews for the Provost all offers of faculty appointments made by Deans at the University).
From the time that Math Faculty Council moved to a representative format (see below) to August 2005, I was an elected representative from Computer Science on what was then called Representative Council. This Council met monthly to oversee academic policy and plans within the Faculty of mathematics.
From January 2002 to September 2004, I was a member of the Academic Board of the Independent Studies programme, which meets to approve the thesis proposals of students hoping to earn a Bachelor of Independent Studies.
From December 2000 to November 2003, I served on the Hagey Committee, which every year selects a distinguished lecturer to deliver the Hagey Lecture.
Until March 2004, I was one of the faculty representatives on the Teaching and Learning Technology Roundtable, an advisory panel reporting to the Associate Provosts and meeting monthly to assess, coordinate, and facilitate the implementations of learning technologies at UW. The Roundtable was replaced by a Teaching and Learning Council composed of winners of the Distinguished Teaching Award, and later resurrected as ITAC (see above).
From July 1998 to July 2002, I was the Associate Chair for Curricula of the Department of Computer Science, and in that role was chair of CS's Curriculum Committee. During that period I spearheaded the development of the new Bachelor of Computer Science degree and was chief negotiator for CS in the creation of the Bachelor of Software Engineering degree. I served as a member of that committee, now called the Undergraduate Academic Plans Committee, from July 1998 to July 2007.
In the period September 2000 to July 2002, I was a member of the CS Governance Committee whose report led to the formation of the School of Computer Science, and the Mathematics Governance Committee that redrafted the committee structure and bylaws of Mathematics Faculty Council, notably moving it from a committee of a whole to a representative council. That reform was undone by a subsequent dean in 2009.
For something like three years, I sat on UW's Presidential Commission for Institutional Planning which commenced work in September 1994. The members of this commission were selected by the Provost, who chaired the committee; the mandate of the commission was to produce a White Paper on strategic and long-term planning for the entire University, and this was done, under the title "Building on Achievement", in fall 1997. This is also known as the "Fifth Decade" report.
I served on the Status of Women and Inclusivity Committee (SWIC) of the Faculty Association of UW from May 1995. From January to July 1997 I chaired this committee, which made me an ex-officio (nonvoting) member of the FAUW Board of Directors.
I was once the faculty advisor to the Gay and Lesbian Liberation Organization of Waterloo (GLLOW). Actually, the only reason I can claim this is that many years ago they needed someone to sign a form for CIBC that allowed GLLOW access to a bank account whose balance was approximately thirty dollars in the hole. That's all I ever did for them, but before doing it, I asked if I could put it on my CV. This is also how I became the faculty advisor for the Computer Science Club, though I took a more active role with them.
For three years (July 1993-1996), I held an at-large seat (originally gained by acclamation) on the Academic Policy Committee of the Mathematics Faculty. In that time, the committee did not hold a single meeting. My replacement was also acclaimed to the post. Years later, without the committee ever having met, I managed to get it written out of the revised Math Faculty bylaws.