<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="RickandStu2.xsl"?>
<RICKANDSTUSHOMEPAGE>
<RICKSTUFF>
<PICTURE>
rick.jpg</PICTURE>
<NICKNAME>
The Silver Fox</NICKNAME>
<BIO>
Rick is the venerable master of all things mathematical in the Hamilton College CS department,
and is the current head cheese of same. He can
usually be found darting through the night, searching for the
mythical diligent Hamilton student, or perhaps just a
full-bodied stout. Rick has haunted the hot corner at Hamilton since 1985, after
seven years of utility infield for Hobart and William Smith. In
his time at Hamilton, Rick has maintained the perfect love-hate
relationship with his students: his students love him, and they would hate
to see him leave.
Together with Stu, Rick turned the CS curriculum at Hamilton
on its ear, and helped compose the five text books and numerous
articles that have spilled out.
Rick would tell you it is all in a day's work for the holder of
three post-graduate degrees, from Penn State, Ohio State, and
Stanford(!).
Rick is a saucy capricorn (or a stoic rooster, if green is your
cup of tea), but has been unavailable since his 1971 union with
a wonderful weaver. He has a younger sister and a son, who at this
writing is an undergraduate at another "highly selective liberal arts college."
Double his Christmas giftage, because he was born on the same day
as a certain well-known Judean colleague of old.
</BIO>
<AQUOTE>
On the personal side, I don't have as much of a life as I'd like,
but what I do have is quite full enough, thank you."
</AQUOTE>
</RICKSTUFF>
<STUSTUFF>
<PICTURE>
stu.jpg</PICTURE>
<NICKNAME>
Little Big Man</NICKNAME>
<BIO>
Stu was for many years the head of the Hamilton CS autocracy,
and now spends most of his time patrolling the sanity of the group.
He has been recovering Hamilton since 1982, when an
unruly mob of 400+ Arizona students all attempted to congratulate
him at once for excellent teaching. He shares his office space
with various apparitions of the Hamilton Mathematics department
and is rumored to be running a spa out of his Deansboro home.
In his time at Hamilton sleep away camp, Stu has written
five books with Rick, and fathered the CS program at Hamilton.
He commanded the coup that led to the recognition of the CS
department as an academic entity, and seized its eventual
independence. Together with Rick, Stu has created a learning
environment that emphasizes all aspects of the liberal arts
experience, with a strong scientific base.
Stu is a devout member of the Cult of the Blue Wolverines,
and can often be found invoking their prayers in the glow of
his television set. He strummed the guitar for a 60's
band. For nearly 30 years he has provided a mouth to
savor his wife's phenomenal cooking. Without question his two favorite
Hamilton alums are his two sons, each of whom now "has his own health benefits."
His daaughter is still on the family health plan and may yet join he Dad on the Hill.
</BIO>
<AQUOTE>
"When I first came here (why I came is another story, for
another time), I knew it would be a great place for me --
and it has been."
</AQUOTE>
</STUSTUFF>
<BOOKSHELF>
<BOOK>
<TITLE>
The Analytical Engine</TITLE>
<DESCRIPTION>
Over ten years ago, we were talking about our introductory CS course.
At the time, we were following the rubric that was popular at
the time--our first course was an introduction to programming in
Pascal. With a sense of "You get too soon old and too late
smart," we realized that the first course in English, Sociology,
Philosophy, and most other disciplines was an introduction to the
major areas of the subject and to the ways of thought used by
practitioners of the discipline. As it stood at the time, we
were doing nothing in our first course to disabuse our students
of the notion that "Computer Science = Programming." We asked
Isn't it possible to teach a rigorous,
disciplinary,introduction to computer science?
The result was a lab-based survey course, covering
what we considered the high points of the discipline. In a very
real sense, the labs form the heart of the course. We realized
from the beginning that computer science was a contact,
rather than a spectator sport, and we built a suite of labs
(now in web form) to bring each chapter alive. Thus, for example,
when we discuss gates and circuits in the hardware chapter,
our students can use a "virtual breadboard" to design and test
their circuits.
The Analytical Engine is used at many institutions
around the world, as well as in CS 100: Survey of
Computer Science at Hamilton.
</DESCRIPTION>
</BOOK>
<BOOK>
<TITLE>
Pascal's Triangle</TITLE>
<DESCRIPTION>
In 1990, Pascal was pretty much entrenched as the language of
choice for the first programming course. The market was mature
and there were quite a few good books available. The Analytical
Engine was in print and enjoying some initial success.
Secure in the knowledge that we actually could write, our editor
asked whether we'd like to try a CS 1 text in Pascal.
We had been teaching CS1 with labs for nearly a decade at the time
and were convinced that
the best way to teach introductory programming
is through a comprehensive collection of directed laboratories.
In a reversal of the usual order of writing programming texts,
we then preceded to write the text around our existing labs. The
result was a breadth-first introduction to
programming, using "Programs in Progress" in the labs to illustrate
such toipics as numerical analysis, cryptography, and lexical
analysis.
</DESCRIPTION>
</BOOK>
<BOOK>
<TITLE>
The Object Concept</TITLE>
<DESCRIPTION>
Pascal was designed from the start to be a teaching language.
It was simple, elegant, and powerful. In 1992 it was also
nearly twenty years old and we had learned quite a lot about
how to program efficiently in that time.
Object-oriented programming had been around about as long as
Pascal and there was a growing consensus that OOP was an efficient
paradigm for designing large programs. At the time, most schools
that taught OOP began with an imperative language like C or Pascal
and waited until the second or third year to introduce object-oriented
programming in Smalltalk or C++. We
thought that for a novice, every program was a large program and
so decided object-oriented programming is an appropriate
paradigm for a first programming course.
We settled on C++ as our vehicle and produced a lab-based
introduction to programming, introducing classes from
the very beginning.
</DESCRIPTION>
</BOOK>
<BOOK>
<TITLE>
Working Classes</TITLE>
<DESCRIPTION>
The CS 1 and CS 2 curricula are so closely related that it would
be appropriate to think of them as a single year-long course.
With this in mind, we knew that
The Object Concept would need a companion text
for CS 2. Whatever questions CS educators may have had about
the appropriateness of OOP in CS 1, there was almost no
argument with the thesis that
an object-oriented approach is a natural for
a data structures course.
This text covers the "canonical" data
structures and the algorithms associated with them. We make heavy use throughout of
templates, believing that this feature is one of the most powerful
and useful aspects of C++.
</DESCRIPTION>
</BOOK>
<BOOK>
<TITLE>
programming.java</TITLE>
<DESCRIPTION>
Java is a relatively new language, designed for (among other things) producing
"applets"--programs that run within suitable Web browsers.
While Java is very
similar to C++ in many respects (it's an object-oriented language
with much of its syntax in common with C++), it has the advantage
of being much simpler that its "big brother." For instructors
who find C++ is too big a pill to swallow in CS 1, we have provided
a CS 1 text in this "kindler, gentler" language. Used in a stand-alone
Introductory Programming course or as a prerequisite to a CS 2 course in C++,
programming.java will introduce students to
good programming practices and give them the ability to make Web
pages come alive.
</DESCRIPTION>
</BOOK>
</BOOKSHELF>
<COURSECATALOG>
<INTRODUCTION>
Although the Hamilton CS curriculum has always been on the
cutting edge, the early days were marked by one distinct
problem: Rick and Stu couldn't do everything. They still can't, but
the recent
additions of Mark
Bailey and Alistair Campbell have in recent years allowed
the curriculum to finally grow at the same
pace as the student base for the major. At this point, the
CS curriculum covers all of the major topics of interest for
an undergraduate CS education, but the future will see more
specific topics classes and several interesting crossover
subjects.
Aside from just the classes that they teach, Rick and Stu
have developed a relationship with their students that is
unparalleled among the departments at Hamilton. While there are no
official College-wide distribution requirements,
Hamilton expects its students to attain a satisfactory
level of achievement in written, oral and quantitative work, and
to gain at least a passing familiarity with the Arts, Historical and Social Sciences,
Humanities and Languages, and Sciences and Mathematics.
Students are also expected to become better aware of the diversity of human cultures
and of assumptions about social relations, power and authority, and
world view connected with their own sociocultural heritage.
Rick and Stu and their CS colleagues consistently accomplish some goals of their own:
Treating students with the care and time one would
expect from a school with a 9:1 student to faculty ratio.
Preparing students for the realities of a difficult,
volatile field of study.
Making the process of learning fun, once again.
Like the field of Computer Science, the Hamilton curriculum
is constantly improving itself. At last glance, the classes
offered were as follows:
</INTRODUCTION>
<COURSE>
<NUMBER>
100</NUMBER>
<TITLE>
Survey of Computer Science </TITLE>
<DESCRIPTION>
An exploration of the major areas of the discipline, including
the social and technological history of machine computation,
the influence of the Internet, the process and nature of
programming, the techniques and processes involved in
translating a program from a high-level language like
JavaScript into a collection of machine language instructions
and the basic principles involved in designing the hardware of a
computer capable of executing a program. Also explores the
theoretical limitations on what a computer can and cannot do,
and investigates the current state and future prospects of
attempts to make programs that exhibit what might be called
intelligent behavior. No prerequisite.
</DESCRIPTION>
<MAJOR>
</MAJOR>
<MINOR>
</MINOR>
</COURSE>
<COURSE>
<NUMBER>
107</NUMBER>
<TITLE>
Applications, Implications and Issues</TITLE>
<DESCRIPTION>
A multidisciplinary exploration of the technology and social
consequences of the Internet. Topics include the history and
technology of the Internet and the Worldwide Web, the
techniques and design patterns used to make Web pages and
possible future influences the Internet will have in public policy,
social structures, economics, law and ethics.
</DESCRIPTION>
<MAJOR>
</MAJOR>
<MINOR>
</MINOR>
</COURSE>
<COURSE>
<NUMBER>
110</NUMBER>
<TITLE>
Introduction to Computer Science </TITLE>
<DESCRIPTION>
An investigation of the process of program design, using the
Java programming language. Along with learning the constructs
of the language, particular attention is paid to the principles of
effective program design and problem-solving techniques. No
prerequisite.
</DESCRIPTION>
<MAJOR>
X</MAJOR>
<MINOR>
X</MINOR>
</COURSE>
<COURSE>
<NUMBER>
111</NUMBER>
<TITLE>
Data Structures </TITLE>
<DESCRIPTION>
A second course in object-oriented programming, concentrating
on the common information patterns (linear and hierarchical,
for example) that arise in many programs and the
implementation of these structures in ways that are efficient in
terms of memory space and running time. Provides a taxonomy
of data structures and discusses measures of computational
complexity of the algorithms used to manipulate the structures.
Begins with a further investigation of Java and then introduces
the C++ programming language. Prerequisite, 110 (or 241),
Mathematics 123 (which may be taken concurrently) or
placement by the department.
</DESCRIPTION>
<MAJOR>
X</MAJOR>
<MINOR>
X</MINOR>
</COURSE>
<COURSE>
<NUMBER>
207</NUMBER>
<TITLE>
Topics in Computer Science I </TITLE>
<DESCRIPTION>
Study of an area in computer science. Content, differing from
year to year, has included computer organization, neural
networks and parallel computation. May be taken more than
once with the consent of the department. Prerequisite, consent
of the instructor.
</DESCRIPTION>
<MAJOR>
</MAJOR>
<MINOR>
</MINOR>
</COURSE>
<COURSE>
<NUMBER>
210</NUMBER>
<TITLE>
Applied Theory </TITLE>
<DESCRIPTION>
An investigation of the nature of computation. Topics include
several models of computation, such as finite state machines,
pushdown automata and Turing machines; discussion of
computational complexity; and illustration of how these abstract
models of computation may be applied to such
language-recognition problems as lexical analysis and parsing.
Prerequisite, 110 (or 241).
</DESCRIPTION>
<MAJOR>
X</MAJOR>
<MINOR>
X</MINOR>
</COURSE>
<COURSE>
<NUMBER>
220</NUMBER>
<TITLE>
Principles of Programming Languages </TITLE>
<DESCRIPTION>
Investigation into the nature of programming languages and
the details of their implementation. Topics include the design
and taxonomies of several programming languages and issues
of efficiency, translation and operation. Prerequisite, 111 (or
242).
</DESCRIPTION>
<MAJOR>
X</MAJOR>
<MINOR>
X</MINOR>
</COURSE>
<COURSE>
<NUMBER>
270</NUMBER>
<TITLE>
Artificial Intelligence </TITLE>
<DESCRIPTION>
Exploration of AI theory and philosophy, as well as a variety of
algorithms and data structures, such as heuristic search
strategies, logic, unification, probabilistic reasoning, semantic
networks and knowledge representation. Topics include
application areas such as natural language understanding,
computer vision, game playing, theorem proving and
autonomous agents. Prerequisite, 111 (or 242).
</DESCRIPTION>
<MAJOR>
</MAJOR>
<MINOR>
</MINOR>
</COURSE>
<COURSE>
<NUMBER>
307</NUMBER>
<TITLE>
Topics in Computer Science II </TITLE>
<DESCRIPTION>
An intensive study of an advanced area of computer science.
Content, differing from year to year, is typically chosen from
cryptography, system programming, database theory and
computer graphics. May be taken more than once with the
consent of the department. Prerequisite, consent of the
instructor.
</DESCRIPTION>
<MAJOR>
</MAJOR>
<MINOR>
</MINOR>
</COURSE>
<COURSE>
<NUMBER>
320</NUMBER>
<TITLE>
Computer Architecture </TITLE>
<DESCRIPTION>
Study of the major hardware components of modern computer
systems and the implications of their interactions. Topics
include cache memory, disk drive technology, chip
manufacturing, microprogramming, performance analysis and
digital logic. Some programming is required. Prerequisite, 111
(or 242) and Physics 230 or 240 (may be taken concurrently).
</DESCRIPTION>
<MAJOR>
X</MAJOR>
<MINOR>
X</MINOR>
</COURSE>
<COURSE>
<NUMBER>
330</NUMBER>
<TITLE>
Algorithms </TITLE>
<DESCRIPTION>
Discussion of the canon of “standard” algorithms, including the
major categories such as divide-and-conquer and dynamic
programming, and evaluation of the efficiency of algorithms in
terms of their use of two scarce resources, space and time.
Prerequisite, 111 (or 242) and Mathematics 123 or placement
by the department.
</DESCRIPTION>
<MAJOR>
X</MAJOR>
<MINOR>
X</MINOR>
</COURSE>
<COURSE>
<NUMBER>
340</NUMBER>
<TITLE>
System Software </TITLE>
<DESCRIPTION>
Study of programs that support application development,
covering such topics as compilers, debuggers, linkers, error
correcting codes, memory management, window systems,
process scheduling and garbage collection. Some programming
is required. Prerequisite, 111 (or 242), 210, 220.
</DESCRIPTION>
<MAJOR>
X</MAJOR>
<MINOR>
X</MINOR>
</COURSE>
<COURSE>
<NUMBER>
4100</NUMBER>
<TITLE>
Senior Seminar </TITLE>
<DESCRIPTION>
Practicum in which students provide computer expertise and
support for ongoing faculty research and curricular projects.
Topics include software engineering analysis, design, coding,
testing, maintenance and documentation. Open to senior
concentrators only.
</DESCRIPTION>
<MAJOR>
X</MAJOR>
<MINOR>
X</MINOR>
</COURSE>
<COURSE>
<NUMBER>
500</NUMBER>
<TITLE>
Honors Project </TITLE>
<DESCRIPTION>
A semester-length research project. Open to qualified senior
concentrators. Prerequisite, permission of the department. The
Department.
</DESCRIPTION>
<MAJOR>
</MAJOR>
<MINOR>
</MINOR>
</COURSE>
<COURSE>
<NUMBER>
999</NUMBER>
<TITLE>
Smash++ </TITLE>
<DESCRIPTION>
Open forum between faculty and selected concentrators covering
varous topics native to the department. Depending on attendance,
content may include intensive input, processing, and output of
fluid structures.
</DESCRIPTION>
<MAJOR>
</MAJOR>
<MINOR>
</MINOR>
</COURSE>
</COURSECATALOG>
<FAVORITELINKS>
<LINK>
<URL>
http://www.cs.hamilton.edu/</URL>
<DESCRIPTION>
Home Page for the Hamilton CS Department.</DESCRIPTION>
</LINK>
<LINK>
<URL>
http://http://www.brookscole.com/compsci/aeonline/course/index.html</URL>
<DESCRIPTION>
AE Online - The Analytical Engine online resources.</DESCRIPTION>
</LINK>
<LINK>
<URL>
http://www2.mids.org/weather/us/index.html</URL>
<DESCRIPTION>
Internet Weather Report - take a look at a map of
the last days' internet usage across the contentinal US.</DESCRIPTION>
</LINK>
<LINK>
<URL>
http://www.news.com/</URL>
<DESCRIPTION>
c|net Tech News - one of the best sites around for
news pertaining to the net.</DESCRIPTION>
</LINK>
<LINK>
<URL>
http://www.saranac.com/</URL>
<DESCRIPTION>
Saranac.com - learn about Rick's favorite beverage.</DESCRIPTION>
</LINK>
<LINK>
<URL>
http://www.umich.edu/</URL>
<DESCRIPTION>
University of Michigan - join Stu in the Cult of the
Blue Wolverines..</DESCRIPTION>
</LINK>
</FAVORITELINKS>
</RICKANDSTUSHOMEPAGE>