DCF94280-E8F7-F166-A62F886D097067AC
DD020F53-C98F-50DB-CEDFC9E5288EEEAA

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 Science for All

The first course in computer science is an introduction to algorithmic problem-solving using the Python programming language. Topics include primitive data types, mathematical operations, structured programming with conditional and iterative idioms, functional abstraction, and objects. Students apply these skills in writing programs to solve problems in domains across the liberal arts. No previous programming experience necessary.

Explore these select courses:

Investigation into the nature, features, design and implementation of programming languages. Students will gain experience with a wide variety of programming languages through programming exercises. Topics will include, among others, object-oriented programming, functional programming, higher-order functions, type systems and polymorphism.

A study of fundamental algorithms and data structures from the canon, emphasizing correctness, and trade-offs between techniques, alongside deliberate coverage of topics from discrete mathematics. Topics include running time and space analysis, invariants as a means of proving correctness, and the divide-and-conquer, greedy, and dynamic programming algorithm design paradigms. Specific problems include graph traversals, (optimal) sorting/searching, minimum spanning tree and shortest paths, longest common subsequences, balanced search trees, heaps, hashing, and union-find for disjoint sets.

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.

Introduction to access technology and the development of accessible systems. In this course, students build and evaluate various access technologies. This course teaches students the deep inner workings of today’s user interface technology and serves as a guide for building the user interfaces of the future. Topics include: text-to-speech, speech recognition, screen readers, screen magnification, alternative input, tactile displays, and web transformation. Programming intensive. 

This course serves as an introduction to computer networks and data communications in the modern world. Emphasis will be on mastering the TCP/IP protocol suite. Topics include physical networks; reliable data transfer and transport protocols; routing and forwarding; data link layer communications and principles of shared media access. Students will also be introduced to wireless data communication and software-defined radio networks. Students will apply their understanding of networking fundamentals while working on hands-on programming assignments.


Meet Our Faculty

Thomas Helmuth ’09

Acting Chair, Associate Professor of Computer Science

thelmuth@hamilton.edu

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

Mark Bailey

Chair, the Robert and Pamela (Craig) Delaney Professor of Computer Science

mbailey@hamilton.edu

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

Xiao Chen

Visiting Assistant Professor of Computer Science

schen3@hamilton.edu

Deep learning, computational biology, bioinformatics

Karyn Doke

Assistant Professor of Computer Science

kdoke@hamilton.edu

Wireless networks for rural areas; spectrum sensing and analytics; spectrum sharing and coexistence

Sarah Morrison-Smith

Assistant Professor of Computer Science

smorriso@hamilton.edu

computer science; human-computer interaction; accessibility; computer-supported cooperative work; gestural interactions; human subjects research

Darren Strash

Associate Professor of Computer Science

dstrash@hamilton.edu

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

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

Explore Hamilton Stories

Charlotte Whiting (left), Thomas Meyers, Chief of EMS (center left), Sydney Tran (center right), and Madison Monroe (right) review their presentation on data organization for the Oneida County Volunteer Ambulance Corps

Comp. Sci. Seniors Lend Expertise to Area Nonprofits

Core to Hamilton’s computer science curriculum is the senior project where seniors offer their expertise to local projects, often supporting faculty. This fall, Assistant Professor of Computer Science Sarah Morrison-Smith decided to incorporate ethics and social good into her seminar by having students work with area nonprofits.

AI theatre

AI as Storyteller

The existential themes of love, death, and time were explored in the AI-scripted and human-performed musical production Channelers, an interdisciplinary art project funded by the Dietrich Inchworm Grant and headed by Assistant Professor of Digital Arts Anna Huff.

Sarah Morrison-Smith

Morrison-Smith Gives “Expert Advice”

Assistant Professor of Computer Science Sarah Morrison-Smith was recently featured in the “Expert Advice” column on TechGuide.

Contact

Department Name

Computer Science Department

Contact Name

Thomas Helmuth, Acting Chair

Office Location
198 College Hill Road
Clinton, NY 13323

Help us provide an accessible education, offer innovative resources and programs, and foster intellectual exploration.

Site Search