Professor of Computer Science The George Washington University

advertisement
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
Download