Hamilton College
Skip Main Navigation
Skip Section Navigation Academic Information
Academics

Computer Science

First, contrary to popular opinion, Computer Science is not the same thing as programming, any more than the study of literature is the same thing as writing. While computer scientists do write programs from time to time, there’s much more to what we do. At the core of the discipline is the study of computation, where we ask questions like “What principles are behind the design of the machines on which programs run?”; “How can we translate a program written in a language designed for people into a sequence of instructions that can be run on a machine?”; “What, exactly, does it mean to ‘compute?’”; and “Now that we have all this information processing power, what are the consequences for humans and the societies in which they live?”

Our introductory courses include a series of hands-on introductions to current topics of interest (including virtual worlds, robotics, human-computer interaction, programming in the visual arts) in CPSCI 105, an introductory level course on computer security(CPSCI 104), and our entry point to the concentration, CPSCI 110. 110 is a traditional “CS1” introduction to computer science through programming. Finally, 110 is a prerequisite for 111, where the exploration of data structures that can be used to represent information in a program and the algorithms that are used to manipulate this information continues.

After completing 111, a student who wishes to continue in CS will typically take 210, Applied Theory, a course covering the theoretical background behind computation and its practical applications, 220, Principles of Programming Languages, and 240, Computer Organization. These core courses are supplemented by a 200-level rotating topics course.

The Computer Science curriculum is somewhat hierarchical in its prerequisite structure, so if you are considering a CS concentration, we advise getting started early with CPSCI 110 (or 111, if your background makes this an appropriate choice). This is especially true if there is a possibility that you will be going away for all or part of your junior year. If you have prior programming experience, especially if you have taken the Computer Science AP exam and received a score of 4 or higher, you should talk with a member of the department to determine whether you are eligible for advanced placement.

104F,S Secrets, Lies and Digital Threats.
Introduction to digital threats, computer security technology and strategies for combating digital threats. Through case study, students investigate the nature of digital threats, the limits of technology, and roles humans must play in protecting and securing digital creations. Topics include viruses, Trojan horses, worms, cryptography, identity theft, intellectual property theft, privacy violation, biometrics, threat modeling and risk assessment. Includes a service-learning component. No knowledge of computer programming required. Does not count toward credit in the concentration or minor. Maximum enrollment, 24. Bailey.

105F,S Explorations in Computer Science.
Provides a hands-on introduction to the field of Human-Computer Interaction (HCI). HCI focuses on the design, evaluation and implementation of interactive computing systems intended for direct human use. We will discuss the history of HCI, still-emerging interface types and standards, and the wide range of factors that can contribute to the effectiveness of an interface, all with the goals of turning you into a critical evaluator and expert developer of interfaces. No prior computer experience is expected. Not open to students who have completed 111. (Quantitative and Symbolic Reasoning.) The Department.

More information ...

[107] Applications, Implications and Issues.
A multidisciplinary exploration of the technology and social consequences of electronic computation and communication. Topics may include the history and technology of the Internet and the Web, the techniques and design patterns used to make Web pages and possible future influences that the Internet will have in public policy, social structures, economics, law and ethics. Does not count toward the concentration or minor. Maximum enrollment, 24.

110F,S Introduction to Computer Science.
The first course in computer science is an introduction to algorithmic problem-solving using the Python programming language. Principles include primitive data types, mathematical operations, structured programming with conditional and iterated statements, functional decomposition, and compound data types. Students apply these principles, writing their own programs for solving problems in areas such as text analysis, information organization, system simulation, animation and graphics. No previous programming experience necessary. (Quantitative and Symbolic Reasoning.) Maximum enrollment, 20. The Department.

111F,S Data Structures.
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. (Quantitative and Symbolic Reasoning.) Prerequisite, 110, 123 (which may be taken concurrently) or placement by the department. Maximum enrollment, 20. The Department.

123F,S Discrete Mathematics.
Study of mathematical models and techniques useful for addressing problems such as enumeration, network design and code encryption. Emphasis on analytical and logical skills, including an introduction to proof techniques. Topics include set theory, number theory, permutations and combinations, mathematical induction and graph theory. Appropriate for students with strong pre-calculus backgrounds. (Quantitative and Symbolic Reasoning.) Not open to students who have taken Math 123. The Department.

[207] Topics in Computer Science I.
Study of an area in computer science. Content, differing from year to year, has included computer organization, neural networks, genetic algorithms and parallel computation. Prerequisite, any computer science course and consent of the instructor. May be taken more than once.

210F Applied Theory.
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. The Department.

220S Principles of Programming Languages.
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. The Department.

240F Computer Organization and Assembly Language.
A study of the connection between programs and the machines on which they run. Topics include number systems and representation schemes, the basic principles of machine organization, assembly language programming, and the design and implementation of assemblers. Prerequisite, 111. The Department.

290F,S Programming Challenges.
Study of classic programming problems from regional and national programming competitions. Students are required to participate in a regional programming contest. Prerequisite, CPSCI 111, and consent of instructor. One-quarter course credit. Offered credit/no credit. May be repeated. Students may count up to one credit from courses numbered 290-298 toward graduation. Maximum enrollment, 20. The Department.

[291F,S] The Programming Language Lisp.
Development of expertise in the programming language Lisp. Emphasis on learning technique and solving problems naturally suited to Lisp. One-quarter course credit. Students may count up to one credit from courses numbered 290-298 toward graduation.

[292] The Programming Language C++.
Development of expertise in the programming language C++. Emphasis on learning technique and solving problems naturally suited to C++. One-quarter course credit. Students may count up to one credit from courses numbered 290-298 toward graduation.

[293] The Programming Language Fortran.
Development of expertise in the programming language Fortran. Emphasis on learning technique and solving problems naturally suited to Fortran. One-quarter course credit. Offered credit/no credit. May be repeated once. Students may count up to one credit from courses numbered 290-298 toward graduation. Maximum enrollment, 20.

307S Topics in Computer Science II.
This is a seminar course exploring new forms of human-computer interaction based on measurement of brain function and properties. Students will read research papers in several related disciplines and present and discuss them in the seminar. We will explore the use of brain sensing technologies to detect specific forms of brain activity, with a focus on EEG, and students will design and conduct task-specific experiments that attempt to isolate particular human reactions and emotions. Prerequisite, Two courses in Computer Science, Neuroscience and/or Psychology, or permission of instructor. May be taken more than once. Maximum enrollment, 16. Hirshfield.

More information ...

310F Compilers.
Principles and practice of programming language translation. Topics will include lexical analysis, formal syntax specification, parsing, code generation and optimization. Prerequisite, 210 and 220. The Department.

320S Computer Architecture.
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. Prerequisite, 240. Some programming required. The Department.

330S Algorithms.
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 and 123 or placement by the department. The Department.

More information ...

340F Operating Systems.
Study of the design and implementation of computer operating systems. Topics include systems programming, process scheduling, inter-process communication, deadlocks, memory management and virtual memory, file systems and I/O, and security. Prerequisite, 240. The Department.

[370] Artificial Intelligence.
Exploration of AI theory and philosophy, as well as a variety of algorithms and data structures, such as heuristic 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, 220. Maximum enrollment, 20.

410F Senior Seminar.
Practicum in research methods in computer science. Emphasis on oral and written presentation. Prerequisite, 210, 220, and 240. Open to senior concentrators only. Hirshfield.

[420] Readings in Computer Science.
Reading in a field of computer science. The class will read several papers assigned weekly from research conference proceedings and journals. Classes will consist of discussions of the day's paper(s). Students will develop a comprehensive annotated bibliography and lead the daily discussions. Does not count toward the concentration or minor. Prerequisite, Consent of instructor. May be repeated for credit with permission of the department. Maximum enrollment, 6.

500S Honors Project.
A semester-length research project. Open to qualified senior concentrators. Prerequisite, 410 and consent of the department. The Department.

LIBRARYAsk a LibrarianLibrary CatalogReservesE-JournalsDatabasesHoursLibrary HomeResearch Guides

Academic Resources

For Our Students and Faculty