David G. Wonnacott
Associate Professor of Computer Science
Email:
davew@cs.haverford.edu
Office:
KINSC
L307
Department of Computer Science
Haverford College
Haverford, PA 19041
Phone Numbers:
-
Office (KINSC L307) - (610) 896 4973
-
Fax - (610) 896 4963
-
CS Teaching Lab (KINSC H110) - (610) 896 1202
-
CS Research Lab (KINSC L310) - (610) 795 7088
-
If I am out of town or you need to reach me urgently,
you can send a short text page to my cell phone
by using the email address
davew-pager@cs.haverford.edu.
Also please remember to include a phone number
where I can call you if you want a response.
Schedule
-
Fall 2009
- CS105
Introduction to Computer Science
Lecture MW 12:30-2:00 KINSC H108;
Lab one hour F 12:00-1:00, 1:00-2:00, other times t.b.a. (possibly Thursday 3-4 and/or Thursday evening), all in KINSC H110
- CS245
Principles of Programming Languages
Lecture T/&Theta 1:00-2:30 KINSC H108; Lab any one one hour Friday between 2:00 and 4:00 PM, in KINSC H110.
- Senior Thesis advising
Group or individual meetings &Theta 10:00-11:00 in KINSC L306
-
Office/Lab Hours:
T/&Theta 2:30-3:00, M 2:00-2:30, in KINSC H110 (the CS teaching lab);
also W 10AM-11AM in KINSC L306 (the student/faculty workspace by my office).
-
Other activites:
- Chair of Haverford's Computer Science Department (24/7?)
- Committee on Student Standings and Programs (meeting times t.b.a.)
-
Spring 2010
- CS187:
Scientific Computing: Discrete Systems
(with Phil Meneely)
T/&Theta 10-11:30AM, room t.b.a.
-
CS 300: Computer Science Research Foundations
Fridays 1:30-4:00 in KINSC H110.
- CS350: Compiler Design
Lecture T/&Theta 1:00-2:30 room t.b.a., Lab: one hour regular work time plus a 10-minute "interactive grading" meeting, times t.b.a..
-
Office Hours t.b.a.
-
Other activites:
- Chair of Haverford's Computer Science Department (24/7?)
- Committee on Student Standings and Programs (meeting times t.b.a.)
If I'm not in my office, check the Teaching and Research Labs.
Current Research
-
Computer Science Education
-
J.D. and I have been working on
revising the introductory year of computer science to
emphasize the intellectual tools computer scientists use to
analyze algorithms and data structures. This was a
continuation of the direction that had already been taken by
Steven Lindell and the
others involved in setting up computer science at Haverford.
The goals of our work are to better prepare students who wish
to continue in computer science, provide a better appreciation
of the intellectual processes involved in CS for students who
do not continue, and emphasize the fun of problem solving over
the tedium of learning the arcane details of a programming
language.
After exploring the use of mathematical techniques
(as used in formal verification),
we have more recently (post-2005) been working on a balance between
informal and formal approaches, and between test suites and specifications.
For more details, see the
the 3-2-1 web site, or
our paper
at SIGCSE '05
(for our work before 2005)
or the
current course notes
at lulu.com.
(We have been quite happy with the quality and price of lulu.com materials:
the "lab copy" of the materials that we put in the lab in September 2007
was still in good condition when the academic year ended in May 2008).
- I have developed
HERA, the Haverford Educational RISC Architecture, to provide a single
microprocessor specification that is powerful enough to be used to learn
assembly language programming in Principles
of Programming Languages and to serve as a target for the compilers
written in Compiler Design,
while still being simple enough to be built by students in Principles
of Computer Organization and
Operating Systems.
The goal of this work is to help students appreciate the
connections among these upper-level applied computer science
courses by constructing a single multi-course project that
involves all the steps from a high-level programming language
to the basic AND/OR/NOT logic of computer hardware.
The first students to complete this entire sequence using HERA
graduated in the spring of 2005.
I presented this work in a poster session (not reviewed)
at
SIGCSE '05.
A (reviewed) paper describing this work and another describing
my use of attribute grammars in teaching Compiler Design appeared
at CCSCE '06.
The
specification for the HERA architecture
is available in printed form through
lulu.com.
-
Visualization of algorithm execution.
I have recently begun to investigate techniques to help visualize
the execution of algorithms -- if my own ideas prove to be sufficiently
different from prior work on algorithm animation, I'll add more here.
-
Uses of compiler technology to inform or direct system services.
I have worked with the Vivo
project at the
Rutgers University Department of Computer Science to develop tools
to instrument code to measure and improve coverage of fault recovery code
in Java web services (see our papers at DSN '03,
ISSTA '04, and
The April 2005 issue of
IEEE
Transactions on Software Engineering).
-
Constraint-based analysis of calculations involving arrays
(the Omega Test).
Vince Gabor (HC '99) and Rob Seater (HC '02) participated in this
work.
-
Optimizing regular array calculations for memory locality
(Time Skewing and Scalable Locality).
This began as a join investigation with
John McCalpin,
and involved numerous undergraduates, including
Jaime Spacco (HC '98),
Tina Shen (Bryn Mawr '98),
Vince Gabor (HC '99),
and Frank Rusch (HC 2000).
Recently, Ian Harrison (HC '03) and I have gotten some very nice
empirical results for the multiprocessor time skewing optimization on
an 8-workstation linux cluster.
-
Adapting scalar optimizations for array variables
.
-
Reconciling encapsulation and dispatch mechanisms in object-oriented languages
that support data encapsulation
(Accessory Functions).
This is an extension
of Ben Flynn's (HC '99) senior thesis,
which appeared at MASPLAS '99.
The above research has been funded by grants from the Zimmer Corporation and
grant
CCR-9808694 from the National
Science Foundation. "Any opinions, findings, and conclusions or recommendations
expressed in this material are those of the author(s) and do not necessarily
reflect the views of the National Science Foundation."
Additional Information:
I wasted enough time trying to configure a Mac OS 10.5 system
the way I wanted it that I actually wrote a
list
of some of the things that annoyed me.
I was a grad student in Bill Pugh's
Omega Project.
Here's a list of
Researchers
in Programming Languages and Compilers.
I use Gnu Privacy Guard here's my public
key.