About the Major

The question at the root of computer science is: What can be automated? Hamilton students explore that question through hands-on courses and research. Focusing on both the experimental and theoretical sides of computer science, they also consider the growing place computing has in the modern world. What are the ethical and social risks and benefits of such technology, and how do we manage them?

Students Will Learn To:

  • Apply core principles of program execution by developing an assembler
  • Demonstrate knowledge of programming language environments by implementing an interpreter
  • Solve a given problem by writing an efficient algorithm that uses an appropriate data structure, analyzing its running time, and demonstrating that their algorithm works
  • Demonstrate their mastery of appropriate programming constructs in written code

A Sampling of Courses

computer science lab

Computer Architecture

Study of how computers are built. Starting with fundamental logic gates, students will learn how to construct fundamental computational, memory and control components using digital logic. Students study the implementation of arithmetic logic units, processor control and datapath design. Topics will include performance analysis, pipelining, cache design, virtual memory, disk storage, and multicore design. Theory intensive.

Explore these select courses:

The course demonstrates how modern, familiar instances of computing technology–Siri, jpeg files, streaming data, the cloud, hacking, social media, drones, self-driving cars and Watson–all derive from the "big ideas" that make up the field of Computer Science. Topics include what it means to "compute," building machines to compute, how humans communicate with computers, computer networks, computer security, current and future computer applications. Students will use a variety of programs to experiment with all ideas presented. No knowledge of computer programming required.

An accelerated first course in programming. Students demonstrate skill in writing programs to solve problems using Python in a variety of application areas. Concentrates on the implementation of dynamic structures for data representation. Students will write programs in the C++ programming language to implement classic data structures. Course discussion will emphasize recursion, efficient implementations in terms of memory space and running time, computational complexity of algorithms, and introduction to two important fields of study: searching and sorting.

Study of mathematical models and techniques commonly used in computer science. Emphasis on analytical and logical skills, including an introduction to proof techniques and formal symbolic manipulation. Topics include set theory, number theory, permutations and combinations, mathematical induction and graph theory. Topics will be reinforced with hands-on experiences using the ML programming language. Appropriate for students with strong pre-calculus backgrounds. No previous programming experience necessary.

A study of the connection between high-level programs and the machines on which they run by means of extensive programming experience using assembly language. Topics will include translation of high-level language idioms into assembly language, number systems and representation schemes, exceptions, interrupts, polling, and an introduction to the structure of the underlying hardware. In the final project, students develop an assembler.

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. Programming intensive.

Meet Our Faculty

Alistair Campbell

Chair and Associate Professor of Computer Science


formal ontologies, knowledge representation and reasoning, programming language design

Mark Bailey

Professor of Computer Science


the boundary between hardware and software, including program optimization, embedded systems, computer architecture and computer security

Thomas Helmuth ’09

Assistant Professor of Computer Science


genetic programming; evolutionary computation; program synthesis from examples; artificial intelligence; functional programming

David Perkins

Visiting Assistant Professor of Computer Science


David Perkins

Visiting Assistant Professor of Computer Science


Darren Strash

Assistant Professor of Computer Science


algorithms and data structures, computational geometry, graph theory, and discrete mathematics

Darren Strash

Assistant Professor of Computer Science


algorithms and data structures, computational geometry, graph theory, and discrete mathematics

Richard Decker

Professor of Computer Science (retired)


served as mathematics-statistics assistant at the U.S. Army Aberdeen Proving Grounds, and co-authored several widely used computer science textbooks

Stuart Hirshfield

Professor of Computer Science Emeritus (retired)


human-computer interfaces;brain-computer interfaces; adaptive systems; computer science pedagogy

Explore Hamilton Stories

Coding Club

Coding Club Students Seek Program for Success

It’s go time for Hamilton students who will be tackling real-world computing problems at the International Collegiate Programming Contest.

Darren Strash

Strash Presents Research at ALENEX22

Assistant Professor of Computer Science Darren Strash recently presented a paper at the virtual SIAM Symposium on Algorithm Engineering and Experiments (ALENEX22).

Dave perkins comp sci Dara Levy '23, Yassine Dhouib ’24 , Dave Perkins

Rewriting the Algorithm Industry Standard

“I kid you not — we are doing something that’s never been done before,” said Yassine Dhouib ’24 about the research that he, Dara Levy ’23, and Visiting Assistant Professor of Computer Science Dave Perkins are conducting this summer.

Careers After Hamilton

Hamilton graduates who concentrated in computer science are pursuing careers in a variety of fields, including:

  • Emergency Preparedness Officer, International Atomic Energy Agency
  • Senior Technical Program Manager, amazon.com
  • Vice President, Goldman Sachs
  • Engineering Project Manager, Apple Computer
  • Director of Global Relationship Management, International Lawyers Network
  • Aviator, U.S. Marine Corps
  • Product Manager, YouTube, Google
  • Elearning & Multimedia Developer, Coca-Cola
  • Software Engineer, Monster.com


Department Name

Computer Science Department

Office Location
198 College Hill Road
Clinton, NY 13323

The $400 million campaign to provide students with a life-altering education.

Learn More About the Campaign

Site Search