<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="RickandStu3.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>