RHYS PRICE JONES Professor of Computer Science The George Washington University (202) 994 9393 rhyspj@gwu.edu E DUCATION The University of London, Royal Holloway College -- Ph.D. in mathematics, 1976 Studied under Norman Biggs; thesis included implementation of my algorithm for coloring hypergraphs by a divide-and-conquer approach to computing the chromatic polynomial. Hypergraphs generalize graphs by allowing edges to contain numbers of nodes other than 2. Indiana University -- M.S. in computer science, 1985 Completed coursework for a Ph.D. but chose not to pursue a second doctorate with dissertation since I was already teaching computer science at the university level. The University of Calgary -- M.Sc. in mathematics, 1973 Studied under Norbert Sauer; thesis -- Partition Numbers of Graphs -- investigated a generalized notion of graph coloring that unifies concepts like planarity, outerplanarity, and thickness. The University of Oxford -- B.A. in mathematics, 1972 Advanced options in relativity, fluid mechanics, combinatorial theory and graph theory. I was an Open Exhibitioner at Jesus College, an honor roughly corresponding to a merit scholarship. E MPLO YM E NT Stanford University – visiting lecturer in computer science, Summer 2010 Taught CS 121 Introduction to Artificial Intelligence. The George Washington University, Washington, DC – professor of computer science, July 2005 - present In my work in the School of Engineering and Applied Science at GW I have: • Developed a new introductory computer science sequence using Alice, a programming language that emphasizes good object-oriented development using three-dimensional animations and a “story-telling” approach to programming. Alice is the legacy of the late Randy Pausch. Enrollment has doubled from 30 mainly computer science and engineering students to over 60 including 20 life and natural science majors. After six weeks of Alice, students transition easily into Java with a thorough understanding of the object-based programming principles emphasized in Alice. I meet regularly with Wanda Dann, the leader of the Alice Project at Carnegie Mellon University who is also my colleague in LACS (see below). GW’s introduction to CS is one of the few in the country that has more women than men enrolled. • Developed a new programming semantics course for the sophomore CS majors. The CS core is now strong enough that junior and senior level courses can assume a greater degree of sophistication from the students. • Developed a bioinformatics course that attracts graduate students with a wide variety of backgrounds. After an intense introduction to algorithmic principles and considerations that underlie many bioinformatics applications, the seminar focuses on recent developments in the field can be computationally as well as scientifically informed. • • • • • • • One Laptop Per Child (OLPC): upon release of the technology, I organized a seminar discussing the potential of the laptop and developing educational software for that platform. Participated ACM SIGCSE symposium in March 2008 comparing OLPC experiences with other educators. With my colleagues on the curriculum committee, reorganized the undergraduate curriculum to facilitate study abroad for our majors. Academic advising: I serve as academic advisor to more than 80 undergraduates. I have served on the PhD committees of three graduate students and have three PhD students currently under my directorship. Advisor to the student chapter of the Association for Computing Machinery (ACM) and coach of GW’s teams for the ACM International Programming Competition. Redesigned teaching evaluation forms and procedures. Reappraised the academic integrity code. Revised the department’s processes for outcomes-based assessments and feedback. Rochester Institute of Technology, Rochester, NY – professor of computer science, July 2000 – June 2005, tenured on appointment I was a full, tenured professor charged with facilitating interdisciplinary collaborations spanning departments and colleges and reporting directly to the provost. I developed and taught courses in: • Bioinformatics. I recruited faculty from computing departments to collaborate with biology faculty to develop a bioinformatics program starting in 2000. I was an active participant with this group of biologists, a chemist, computer scientists and a statistician. We developed and obtained funding for dissemination of materials for undergraduate and masters programs in bioinformatics. • Summer workshops for bioinformatics educators. With support from the National Science Foundation, I worked with two RIT colleagues to present workshops for college and university faculty in the computing sciences and the biological sciences to help them develop courses in bioinformatics at their home institutions. • Art-technical collaborations. I taught with Duane Palyka, of the film and animation department, a class comprising artists and computer scientists. Teams developed projects involving both artistic expression and technical innovation. • Computer programming for artists. • Advanced abstractions and concepts in computer science. • Visualization seminars and classes. With RIT’s Director of Visualization, Marla Schweppe, I organized a regular seminar for faculty and staff to explore the broad field of visualization. Faculty from imaging science and from information technology were prominent in sharing their experiences. We taught courses in visual thinking and in scientific visualization. Oberlin College, Oberlin, Ohio – associate professor of computer science July 1987 to June 2000, tenured 1993 Over the years, I taught almost the entire repertory of courses offered by a typical liberal arts college towards a computer science degree. • I oversaw the honors program for many students and mentored one of the relatively few Marshall Scholars from Oberlin College. That student studied genetic algorithms with me and worked at Oxford under William Hamilton. • Principal Investigator 1998-2001 (with Gary Lee Nelson and Richard Povall of the Technology in Music and Related Arts program of the Oberlin Conservatory) for a project to design a course combining computer science and music composition. Students used Lindenmeyer grammars and genetic algorithms for artistic expression. A grant to fund development of this course was awarded by the National Science Foundation (NSF). 2 • • • Principal Investigator 1994-1997 (with Richard Salter, Oberlin College) for an Educational Infrastructure grant from the National Science Foundation to incorporate algorithm design, analysis and correctness verification into introductory computer science courses. Chaired a faculty-student committee to revise the constitution of Oberlin’s Honor Code. My main concerns were to ensure its continued existence as a student-run activity, and ensure sensitivity to cultural and societal differences in expectations. Oberlin/Spelman Collaboration: o Initiated collaborative visits between Oberlin and Spelman College, a historically black women’s college in Atlanta, receiving strong support from Nancy Dye (then Oberlin College president) and Johnnetta Cole (then president of Spelman). o Collaboration led to curricular modifications designed to make the introductory courses equally challenging to all students, creating an environment where all thrive regardless of previous computing experience. Indiana University-Purdue University, Fort Wayne, IN – visiting professor and, later, assistant professor of mathematics and computer science July 1978 to June 1987 • Taught many mathematics courses, including discrete mathematics and graph theory • Instrumental in adapting Purdue’s West Lafayette computer science bachelor’s degree curriculum to the academic community at the Fort Wayne campus. A CADEM IC L E ADE RSH IP AND P ROF ES S IONAL S ERVICE Program Evaluator for ABET (Acceditation Board) since 2007. National Science Foundation: • Regular member of panels evaluating proposals to improve undergraduate computer science education. • In 2001, member of a Committee of Visitors (a congressionally mandated NSF internal review) for the REU program of the EIA division of the CISE directorate. Association for Computing Machinery (ACM): • Washington DC chapter of the Association for Computing Machinery: I worked with William Fielder (then chapter chair) and Cora Dickson to resurrect this professional chapter. We brought to campus visiting speakers including: o Brian Kernighan, an early contributor to the success of Unix, the C programming language, AWK and AMPL; o Richard Garriott (AKA Lord British, General British), one of the most significant figures in the video game industry; o Sir Charles Antony Richard Hoare, who developed Quicksort, Hoare logic, and the Communicating Sequential Processes (CSP) language; and o Bjarne Stroustrup, the developer of the C++ language. • ACM Mid-Atlantic Regional Programming Contest: I acted as local judge for this contest in November 2005. Each year since 2005 I have selected and trained three GW teams for this contest. In 2006, 2007 and 2008, teams from GWU have secured second, third place and fourth places at the local contest site. In 2009 I was site director at GW which was one of the sites hosting this competition. • Chief Judge, ACM East Central Regional programming contest, November 1994; member of the judging panel in 1992, 1993, and 1995. 3 • • • • Organizer and Moderator of ACM/SIGCSE Panel Discussion on Issues in the Choice of Language for CS1, Indianapolis, February 1993. Invited panelist at ACM Computer Science Conference discussion on “How to prepare a team for the ACM Programming Contest,” Indianapolis, February 1993. Selector and coach for the Oberlin College ACM International Programming Contest team from1987 to1996. Oberlin's programming team placed seventh in the international final in 1991 and sixth in 1993. President of the Cuyahoga Valley Chapter of the Association for Computing Machinery, 1991-1992. Vice President, 1990-1991. Liberal Arts Computer Science Consortium (LACS): • LACS is a group of computer scientists representing leading liberal arts colleges including Oberlin, Williams, Swarthmore, Wellesley, Bryn Mawr, Middlebury, Gustavus-Adolphus, Spelman, Pomona, and others. This group was instrumental in defining the ACM Model Curriculum for Liberal Arts Colleges and continues to be a strong advocate for the liberal arts colleges within the profession. We are best known for producing curriculum recommendations appropriate for smaller institutions in concert with the IEEE/ACM. • Six times I have been the convener of our meetings. • I chaired the discussions at the 2006 and 2007 summer meetings. The 2006 meetings were particularly important in that we finalized the 2007 model curriculum for a Liberal Arts degree in Computer Science. External reviews, in past five years: • Proposals to MIPS (Maryland Industrial Partnerships Program) at the University of Maryland, College Park, November 2005. • Book proposal to MIT Press, Programming Media: A Pragmatic Foundation in Writing Software for the Arts, March 2006. • Articles submitted to Journal of Experimental Algorithmics. • Articles submitted to ACM Special Interest Group Computer Science Education (SIGCSE). • External reviewer for tenure committees at Kalamazoo College and Zayed University. • National Science Foundation Panels. In 2007 I was on a panel for evaluating proposals in medical informatics. R ES E ARCH A CT IVIT IE S , I NDUS T RIAL AND C ORPO RAT E C OL L ABO RAT IO NS Wyeth Vaccines During the academic year 2002-2003 I divided my time between RIT and Wyeth Vaccines at their research facility in Henrietta, NY. I joined Robert Zagursky’s vaccine discovery group and developed several approaches to the problem of detecting genes within prokaryotic genomes and to the problem of automatically detecting and repairing sequencing and read errors for genomic data. RIT/Xerox research group From 2000 to 2003, research into automated analysis and formatting of document styles was funded by Xerox and NY State CAT Program. The group included Fernando Naveda and Andreas Savakis from RIT, Steven Harrington and Lisa Purvis from Xerox, and consultant Paul Roetling, and employed many coop and master’s degree students as active participants over the years. This collaboration produced several Patents and Publications listed below. Dimension Technologies Inc. 4 Three dimensional viewing and projection devices. At RIT I worked with Arnie Lagergren, the president of Dimension Technologies Inc. to bring their 3 Dimensional flat screens to the attention of faculty and students. I served as the liaison between RIT and other NY state faculty and DTI (Dimension Technologies Inc.), a Rochester-based designer and distributor of glasses-free 3D viewing screens. This led to NSF funding for 3D projection facilities for RIT, Alfred University and other New York state campuses. Oberlin I secured funding for research with Richard Salter in implementation (particularly parallel) of declarative and logic programming languages; and I obtained National Science Foundation support for Educational Infrastructure developments in Computer Science Education. Richard Salter was again a collaborator, and the funding enabled Oberlin to hire Dr. Fritz Ruehr as a participant in curriculum development and testing. Another NSF grant supported my work with composer Gary Nelson of the Oberlin Conservatory of Music in Algorithmic Interactive Composition. Other research areas included game theory, artificial intelligence and graph algorithms. Xolox Corporation From 1980 to 1987 I acted as a consultant and Science Officer at the Xolox Corporation in Fort Wayne, where my work involved developing software to produce numeric control code for cutting molds for non-circular and nonstandard gears and pulleys. Prior to my development of this software, it had generally been considered impossible to produce noncircular gears with involute teeth except by cutting with a rack; my software successfully enabled production of these gears by plastic injection molding. P AT E NTS (with collaborators at RIT and Xerox) United States Patent 7,308,116, December 11, 2007. United States Patent 7,305,107, December 4, 2007. United States Patent 7,283,648, October 16, 2007. United States Patent 7,280,675, October 9, 2007. United States Patent 7,277,560, October 2, 2007. United States Patent 7,269,276, September 11, 2007. United States Patent 7,266,222, September 4, 2007. United States Patent 7,260,245, August 21, 2007. United States Patent 7,136,511, November 14, 2006. United States Patent 7,130,451, October 31, 2006. United States Patent 7,130.450, October 31, 2006. United States Patent 7,116,802, October 3, 2006. United States Patent 7,095,877, August 22, 2006. United States Patent 7,092,552, August 15, 2006. United States Patent 7,092,551, August 15, 2006. United States Patent 7,072,495, July 4, 2006. United States Patent 7,035,439, April 25, 2006. United States Patent 7,035,438, April 25, 2006. United States Patent 7,024,022, April 4, 2006. A W ARDS AND H O NO RS 5 The George Washington University, School of Engineering and Applied Sciences, Computer Science Educator of the Year, 2008. The George Washington University, School of Engineering and Applied Sciences, Computer Science Professor of the Year, 2007. The George Washington University, School of Engineering and Applied Sciences Computer Science Professor of the Year, 2006. In both 2000 and 2002 my CCLI-funded project on Interactive Algorithmic Composition was selected for inclusion in a NSF CCLI Showcase. These are exhibits that NSF sponsors at prominent computing conferences. First, at an early stage while the project was still being developed, I exhibited in conjunction with an IEEE Frontiers in Education conference; and second, as a mature project in conjunction with an ACM SIGCSE conference. Sigma Xi College Teacher of the Year, selected by the Indiana University-Purdue University chapter of Sigma Xi, May 1987. Open Exhibition, Jesus College, Oxford, 1969-1972. E XT E RNAL F UNDING National Science Foundation Course, Curriculum and Laboratory Improvement (CCLI) grant for developing undergraduate courses for the new Bioinformatics degree. With Gary Skuse, Paul Tymann and Anne Haake. $74,842. 2002-2003. Sloan Foundation grant for course development for graduate courses in bioinformatics. With Anne Haake, Gary Skuse and Paul Tymann. 2001-2002. National Science Foundation Course, Curriculum and Laboratory Improvement (CCLI) grant “Algorithmic approaches to interactive musical composition.” With Gary Nelson and Richard Povall. $126,000. 1999-2002. National Science Foundation Educational Innovation (EI) grant “CISE: Enhancement of Undergraduate Curriculum.” With Richard Salter. $500,000. 1993-1997. National Science Foundation Research in Undergraduate Institutions (RUI) Grant, “Implementation of concurrent declarative languages.” With Richard Salter. $100,000. 1990-1993. Mellon Foundation Grant for development of a freshman colloquium course “The Limits of Computation.” $10,000. December 1988. S EL E CTE D P UBL ICATIO NS A ND P RE SE NT AT IO NS Bioinformatics: A Computing Perspective. With Shuba Gopal, Anne Haake, and Paul Tymann. McGraw Hill, 2008. “A 2007 Model Curriculum for a Liberal Arts Degree in Computer Science,” with the members of Liberal Arts Computer Science Consortium (LACS), ACM Journal on Educational Resources in Computing, Vol. 7, No. 2, Article 2, June 2007. 6 “Aesthetic Measures for Automated Document Layout,” with J. Fernando Naveda, Paul Roetling, Steven J. Harrington (lead author) and Nishant Thakkar, Proceedings of the ACM Symposium on Document Engineering, Milwaukee, Wisconsin, October 28-30, 2004. “Expression of document structure in automatic layout,” with Steven Harrington (Xerox Corporation – lead author), J. Fernando Naveda (RIT) and Nishant Thakkar (IBM), IS&T/SPIE 18th Annual Symposium, Electronic Imaging Science and Technology, 15-19 January 2006, San Jose, CA. “DNA Analysis” (archive video), Daniel P. Friedman: A Celebration, conference at Indiana University, December 2004, http://www.cs.indiana.edu/dfried_celebration.html. Others invited to present included Gerald Jay Sussman, Guy Steele, Kent Dybvig, Matthias Felleison, David Wise, and Julia Lawall. “On the Structure of Style Space for Documents,” with J. Fernando Naveda (RIT), Paul Roetling (of Roetling Consulting, and a consultant with Xerox), Steven J. Harrington (Xerox) and Nishant Thakkar (RIT student). I am lead author of this paper, which I presented at the American Association for Artificial Intelligence (AAAI) 2004 Fall Symposium on Style and Meaning in Language, Art, Music, and Design. “Towards a Science of Document Intent,” with Steven Harrington (lead author) and Fernando Naveda, First International Workshop on Web Document Analysis, Seattle, Washington, September 8, 2001. ACM SIGCSE seminar “New Technological Tools for Education”, with Richard Salter, Christopher Haynes and Fritz Ruehr. Proceedings of the Twenty Seventh SIGCSE Technical Symposium on Computer Science Education, Philadelphia, February 1996. “Enhancement of the introductory computer science curriculum”, with Fritz Ruehr and Richard Salter, Proceedings of the 1996 IEEE Frontiers in Education, November 1996. “Beyond Minimaxing for Games with Draws”, with D.J. Thuente, Proceedings of the 1991 ACM Computer Science Conference, San Antonio, Texas. “The Role of Simulation in Developing Game Playing Strategies”, with D.J. Thuente, Proceedings of the 1990 Eastern Multiconference, The Society for Computer Simulation, Nashville, Tennessee, April 1990. “A Computer Representation for Graph Theory Knowledge”, Proceedings of the 250th Anniversary Graph Theory Conference, Congressus Numeratium, 64, Winnipeg, Canada, 1988, 131-136. C OURS ES T AUGH T The George Washington University CSci 150 - Foundations of Computing. Formal grammars, finite-state machines, equivalence of machines, reduction, finite-state languages, acceptors, regular expressions, pushdown automata, context-free languages, Turing machines, computability. CSci 53 - Introduction to Software Development. Introduction to the solution of problems on a digital computer. Object-oriented programming concepts; documentation techniques; design 7 of test data. Writing, debugging, and running programs in an interactive computing environment CSci 133 - Algorithms and Data Structures I. Object-oriented software. Inheritance, exceptions, development of classes. Data structures such as trees, lists, stacks, queues, and strings. Sorting and searching. Introduction to algorithm performance prediction. CSci 143 - Software Engineering I. Review of programming techniques and software development in one or more programming languages. Application development with GUI's, database access, threads, web-programming. CSci 147 - Team Project Development and Professional Ethics. Developing a large software project using a team approach. User interface and interface standards. Integration and testing of modules. Social impact analysis of the project. Working and writing as a team. Professional code of ethics. Intellectual property. Presentation of technical material. Computer crime and hackers. Oral presentation and demonstration of the project. CSci 145 - Programming languages. Programming language and software design fundamentals, patterns and paradigms are studied as abstract concepts using the programming language Scheme. Students will also learn and write programs in at least one modern non-procedural programming language. Included are the notions of closures, procedure and data abstraction, object-oriented programming, procedural programming, declarative programming, continuations, compilation and interpretation, and syntactic extension. Advanced control structures appropriate for parallel programming. CSci 144 - Introduction to Bioinformatics. Broad introduction to the field of bioinformatics. Overview of DNA/RNA, proteins and the central dogma. Biological databases and searching. The new biology lab. Alignment tools. Protein structure and function. Overview of phylogenetics. Rochester Institute of Technology Introduction to Bioinformatics Computing. This course will focus on the Computer Science/Information Technology aspects of Bioinformatics. Students will learn about the algorithms and performance issues related to computational genomics in a theoretical and practical (lab-based) study of computational genomics. This is the first of two courses covering the advanced algorithms used in the field of Bioinformatics. Algorithm development, performance analysis, and techniques for proving correctness are emphasized. Advanced Bioinformatics Computing. Students will build on their experiences in Introduction to Bioinformatics Computing and learn about advanced issues in bioinformatics and computational genomics. This course will provide an in-depth exposure to advanced techniques in computational genomics. The significant growth of biomolecular data has created demand for the use and development of new techniques for extracting "knowledge" from the data. This course will explore several established and new computational approaches to data mining and present these techniques in the specific context of biomolecular data. 4003-231 Computer Science I. The goal of this course is to introduce the student to the science of computing. The student will learn about the basic elements of computing, including problem decomposition, design and implementation of solutions, testing those solutions and 8 integrating pieces of solutions together. Object-oriented technology is used as a means to an end to design solutions and actually implement them in software. Java is the language used; it is an object-oriented programming language that was designed for developing large systems from reusable components. Programming assignments-labs and post-labs are an integral part of the course. 4003-232 Computer Science 2. This course continues the Java-based introduction to basic computer science concepts begun in Computer Science 1. Essentially, this course covers the use of object-oriented programming to design and implement software solutions. Students will learn how to implement a solution to a problem by reusing existing components and creating new components using inheritance. Other topics include; exception handling, files/streams, collections, threads and thread synchronization, graphical user interfaces (GUI's), networking, and event-driven programming. Programming projects - labs and projects are an integral part of the course 4003-233 Computer Science 3. This course is the third course in the computer science introductory sequence and builds upon the computer science foundations and design principles presented in Computer Science 1 and Computer Science 2. Students will learn how to use linear data structures, such as stacks, queues, and lists and non-linear data structures, such as trees and graphs, and will also be introduced to the design and analysis of algorithms. Students will learn how to analyze the efficiency of basic sorting, searching, and hashing algorithms, and acquire an understanding of how recursion works. Object-oriented programming will be used to design solutions and implement them as Java programs. Programming assignments - labs and projects are an integral part of the course Abstractions and Practicalities. A two-quarter course studying the history of computing from ancient days; emphasizing theoretical considerations and asking what was/is possible. Cross-Disciplinary Courses as described above under “Employment: Rochester Institute of Technology”. These include courses pairing artists with computer scientists on creative projects in the visual arts; a course teaching the essentials of computing principles to enable artist better to use production tools; a visualization course for students of varied backgrounds that considers the use of visualization in different disciplines. Oberlin College CSCI 150 - Principles of Computer Science I. Introduction to algorithm design and problem solving in an object- oriented programming language. The course will cover fundamentals of computer programming including data types, variables, expressions, statements, control structures, arrays, and recursion. It will also introduce object- oriented concepts including classes, methods, inheritance, and polymorphism. CSCI 151 - Principles of Computer Science II. This course builds upon the principles introduced in CSCI 150 and provides a general background for further study in Computer Science. The course will cover object-oriented programming concepts; the design and implementation of data structures (linked lists, stacks, queues, trees, heaps, and hash tables) and related algorithmic techniques (searching, sorting, recursion); and algorithm analysis. Students will be expected to complete a number of programming projects illustrating the concepts presented. 9 CSCI 275 - Programming Abstractions. Programming language fundamentals are studied as abstract concepts using the programming language Scheme. Included are the notions of closures, first-class data structures, procedure and data abstraction, object-oriented programming, continuations, compilation and interpretation, and syntactic extension. Some advanced control structures such as coroutines and asynchronous interrupts may also be included. The following courses have changed substantially since I taught them. Titles here included for completeness. CSCI 364 - Artificial Intelligence CSCI 307 - Programming Languages CSCI 280 - Introduction to Algorithms CSCI 241 - Systems Programming CSCI 383 - Theory of Computer Science CSCI 401 - Honors 10