Research
My long-term research goal is to understand the
computational principles underlying biological nervous system function
for application to machine intelligence. This includes
issues of computational neuroscience, scientific and
high-performance computing, artificial
intelligence, neural networks, nonlinear dynamics,
and visualization.
Nearer term, I want to understand how neuron structural and
behavioral complexity (small-scale dynamics) contributes to nervous
system operation (large-scale behavior).
Research Interests:
Computational neuroscience;
computational science;
scientific data visualization and management;
simulation;
scientific computing;
neuroinformatics;
neural networks;
nonlinear dynamics;
complex systems.
Teaching
As a founding faculty member here at UWB, and a near-founding-faculty
member at HKUST, I have been involved in the development and teaching
of a broad cross-section of the computer science core, as well as a
range of upper-level undergraduate and graduate electives. Subjects I
have taught include:
introductory, medium-level, and advanced programming, programming
tools, object-oriented design, data structures and algorithms,
discrete mathematics, calculus, technical writing for software
professionals, computer graphics, computer vision, visualization,
multimedia, computer architecture, artificial intelligence, neural
networks, complex systems, signal processing, and expert systems.
Back to Top
Research.
So what is this mind of ours: what are these atoms with consciousness?
Last week's potatoes! They now can remember what was going on in
my mind a year ago — a mind which has long ago been replaced.
— Richard P. Feynman
My research group has been developing a
parallel neural simulation framework, called BrainGrid, to
enable researchers to develop large-scale and
long-duration simulations of nervous system activity and
development. "We build simulations to do more than what we
can do in experiments on living things." In some cases,
simulations allow scientists to run experiments that would
otherwise not be possible or might not be technologically
feasible to do any other way. Currently, we are in the
process of developing an extension of BrainGrid — the
Workbench — that will permit investigators to track
simulation code, experiment configurations, and data
produced. Once fully developed, this will allow them to be
confident that their results are valid and easily identify
when changing assumptions alter the results. We eat our
own dog food: we use this framework to help understand how
large numbers of neurons form functional networks during
embryonic development.
This has involved modeling the growth and activity of
biological neural networks grown in vitro. These
dissociated cortical tissue preparations are
viewed, on the one hand, as potential "neuro-electronic
hybrid computers" and, on the other, as models for
epilepsy. I hope that my work will explain why these
networks show pathological bursting activity and how to
stop this bursting and get them to behave like normal
neural tissue.
My collaborators and I have also been investigating
information transfer across the synapses that connect
nerve cells. This synaptic coding process is the
functional unit of nervous systems, and as such the
computational unit of neural networks. Part of my recent
work has focused on the interaction between stochastic
events ("errors", e.g., synaptic transmission failure) and
neuron dynamics and the implications of this for synaptic
coding.
My methods have been based on the hypothesis that
single neurons perform nontrivial operations, and that the
coding of neural input to output can be understood if one
views the neuron as a nonlinear dynamical system. This
has involved very enjoyable collaborations with
neuroscientists, mathematicians, and physicists.
Back to Top
Teaching.
Artificial Neural Networks
A "nuts and
bolts" coverage of the mathematical and
algorithmic fundamentals of ANNs. Topics include
basic neurobiology, linear algebra, optimization,
supervised and unsupervised learning,
backpropagation in multi-layer perceptrons,
competitive and recurrent networks, radial basis
functions, and learning in deep neural
networks. See the Fall 2018
CSS 485 syllabus and schedule.
Signal Computing
How computers can
process information from the physical world as digital
signals. Topics include physical properties of
source information, devices
for information capture,
digitization, compression, digital media
representation, mathematics and algorithms relating to
digital signal
processing, and network communication. See the Fall 2016
CSS 457 syllabus and schedule.
Programming Issues With Object-Oriented Languages
This class works as
a combination of laboratory and tutorial, to help
students investigate and understand some of the deeper
and more obscure aspects of software development
in C++. Covers language and development/execution
environment differences, including data types,
control structures, arrays, and I/O; addressing
and memory management issues including pointers,
references, functions, and their passing
conventions; object-oriented design specifics
related to structured data and classes.
Computational Neuroscience
Everything we are and
do, from
the simplest physical act to the most complex and
subtle thought, is
contained within the three
pounds of grey matter we carry within our heads. After
millennia of pondering and
decades of scientific research, we've only just begun
to unlock the nature of how nervous systems accomplish
their myriad tasks. This course provides an
overview of what we've learned about nervous system
function and an understanding of
how much we still don't know. Students evaluate the
biophysical properties of nervous systems from the
point of view of computation, and apply
computational tools to simulate and analyze nervous
system operation.
Expert Systems
This course
introduces students to rule-based programming in
the context of declarative modeling of expert
human knowledge. It has an additional focus on
building expert systems applications as part of
larger systems, including web-based and enterprise
systems. Besides rule-based programming, expert
systems operation, and knowledge engineering,
topics will include aspects of Java that are
useful for developing these systems, such as
JavaBeans, serialization, applets, servlets, J2EE,
JavaServer Pages, Tomcat, web services, and
XML.
Back to Top
About Me.
I grew up in Philadelphia, reading
science fiction and dreaming of someday having a robot
army to call my own. I've always been interested in
the intersection of engineering and biology. As an
undergrad at Washington University in St. Louis, I
double-majored in Computer Science and Electrical
Engineering. Between undergrad and graduate studies, I
worked for Philips and Texas Instruments. In grad
school, I had the opportunity to take neuroscience
classes in the UCLA Medical School. I was taken with
the idea of building simulations of living systems and
how that could allow researchers to answer questions
that could be posed in rigorously mathematical terms
— questions that couldn't easily be answered by
experiments on living organisms, but could be verified
that way.
I have a lot of fun following my nose when it comes
to research and working with students in both
classroom and research settings. Around 2008, about
the time I was promoted to full Professor, I was
honored to be entrusted with leading UW Bothell's
Computing and Software Systems Program and looking out
for the well being of its faculty, staff, and
students. More recently, I've been charged with
supporting development of graduate programs in our
School of STEM. Throughout, I've cultivated a keen
sense of humor and social justice, formed during a
childhood listening to George
Carlin albums and watching Billy
Jack movies.
Back to Top