Earlham College | Computer Science
Key Dates, COVID-19 Safety Protocols Announced for Fall. | READ MORE
Skip to Content

Computer Science

Theory, abstraction and design

Overview   |   Meet an Earlhamite   |   Our Faculty   |   Plan of Study   |   Courses  


Built in 2015, the Center for Science and Technology includes a state-of-the-art computer lab and a robotics lab, supporting  both what we teach and how we teach it.

Student/faculty research opportunities in Computer Science have been enriched with involved faculty, including Xunfei Jiang's work on power saving scheduling algorithms and Charlie Peck work with students on field science projects.

Our Green Science group designed and built our first solar charging station. Now anyone in the community can charge their devices using solar energy!

Given Earlham’s globally diverse community, most students don’t even have to leave campus in order to converse with native speakers in the languages they are studying.


Earlham has three new Applied Science Groups: Disaster Preparation and Response, Fabrication Lab (3D design and printing), and Cluster System Administration.

Our majors have pursued graduate work in computer science at institutions such as Indiana University; University of California, Santa Cruz; and the universities of Central Florida, Delaware, Indiana, Maryland, Oregon, Pittsburgh, Toronto and Washington.

Alumni have found jobs with such major technology companies as Lucent, Amazon.com, Oracle, Sybase, Microsoft, MCI/WorldCom and Ontrack. Others have started their own technology businesses.

Chau Pham
Good Enough for Google

Keeping up with Chau Pham ’19 is no easy task. She will be working in Google’s office in Seattle in the Corporate Engineering team, specifically with application programming interfaces.

Read More
Cracking the Code
Cracking the Code

Elena Sergienko '14 says that even though most of her fellow computer science majors are male, she has found plenty of support and lots of opportunities to gain skills and build her resume at Earlham.

Read More
Laurence Ruberl
When Computer Science and Theatre Mix

Laurence Ruberl ’20 hopes that studying Computer Science and Theatre Arts is the perfect combination to allow him to return to work at NASA.

Read More

Our Faculty

David Barbella
Assistant Professor of Computer Science

Craig Earley
Post-Baccalaureate Position in Computer Science

Doug Harms
Visiting Assistant Professor of Computer Science

Sofia Lemons
Assistant Professor of Computer Science

Igor Minevich
Visiting Assistant Professor of Computer Science, Mathematics and Physics

Charlie Peck
Professor of Computer Science

Jim Rogers
Professor Emeritus of Computer Science; Computer Science Research Professor

Roberta Cayard-Roberts
Administrative Assistant

Plan of Study

General Education Requirements

The Department offers one course that meets the Quantitative Reasoning component of the Analytical Reasoning Requirement, CS 128; and two that meet the Abstract Reasoning component, CS 128 and 130.

The Major

Students completing a Computer Science Major are required to take the following core courses (30 hours):

  • MATH 180 Calculus A
  • MATH 195 Math Toolkit
  • CS 128 Programming and Problem Solving
  • CS 256 Data Structures
  • CS 266 Computing Skills
  • CS 310 Algorithms
  • CS 320 Principles of Computer Organization
  • CS 380 Theory of Computation
  • CS 388 Methods for Research and Dissemination in Computer Science
  • CS 488 Senior Capstone Experience


Four additional CS courses (12 credits) from the following:

  • CS 330 Functional Programming
  • CS 335 Advanced Data Structures
  • CS 340 Scientific Computing
  • CS 345 Software Engineering
  • CS 350 Electronics and Instrumentation
  • CS 355 Game Design
  • CS 360 Parallel and Distributed Computation
  • CS 365 Artificial Intelligence and Machine Learning
  • CS 370 Computer Graphics
  • CS 410 Networks and Networking
  • CS 420 Operating Systems
  • CS 430 Database Systems
  • CS 440 Programming Languages
  • CS 382/482 Special Topics
  • CS 481 Internship (requires departmental approval)
  • In exceptional cases, the Department may allow:
    • CS 484 Ford/Knight Research Project
    • CS 485 Independent Study
    • CS 486 Student/Faculty Research


Cybersecurity (12 hours)

  • CS 240 Cryptography
  • CS 410 Networks and Networking
  • Choose two of the following courses:
    • CS 420 Operating Systems
    • CS 430 Database Systems
    • CHEM 105 Introduction to Forensic Science
    • CS 335 Advanced Data Structures
    • CS 345 Software Engineering
    • CS 360 Parallel and Distributed Computing
    • CS 365 Artificial Intelligence and Machine Learning
    • MATH 420 Abstract Algebra
  • Capstone requirement:
    • Senior Capstone Project built around cybersecurity.

Game Design (12 hours)

  • CS355 Game Design
  • CS345 Software Engineering
  • Choose two of the following courses:
    • MUS 372 Making Music with Computers
    • MUS 472 Orchestra & Film Scoring
    • MUS 473 Programming Music
    • PSYC 341 Cognitive Psychology or PSYC 371 Motivation (These each require PSYC 115 or PSYC 116, but as they are not strictly required for the concentration, those courses are not listed here.)
  • Capstone requirement:
    • Senior Capstone Project built around game design.

System Administration (12 hours)

  • CS 410 Networks and Networking
  • CS 420 Operating Systems
  • CS 430 Database Systems
  • Choose one of the following courses:
    • CS 345 Software Engineering
    • CS 360 Parallel and Distributed Computing
    • CS 365 Artificial Intelligence and Machine Learning
  • Capstone requirement:
    • Senior Capstone Project built around system administration.

Software Engineering (12 credits)

  • CS 345 Software Engineering
  • CS 420 Operating Systems
  • CS 440 Programming Languages
  • Choose one of the following courses:
    • CS 360 Parallel and Distributed Computing
    • CS 430 Database Systems
  • Capstone requirement:
    • Senior Capstone Project built around software engineering.

*If a student is on a concentration, then their focus in CS388 and CS488 needs to be related to the concentration.

The Minor

  • MATH 195 Math Toolkit
  • CS 128 Programming and Problem Solving
  • CS 256 Data Structures
  • CS 310 Algorithms


  • Three additional CS courses, 300 and above, excluding
    • CS 481 Internship Experience
    • CS 483 Teaching Assistant
    • CS 484 Ford/Knight Research Project
    • CS 485 Independent Study
    • CS 486 Student/Faculty Research
  • In exceptional cases, the Department may waive the exclusion of CS 484, CS 485 or CS 486.

Off-Campus Study

Students are encouraged to consider off-campus study as part of their academic career. The Computer Science major requirements and course schedule are designed to accommodate one, and in some cases two, semesters of off-campus study. Computer Science majors have studied in Australia, England, Germany, Japan and Scotland. In addition, programs for students to study at one of the national laboratories, such as Oak Ridge National Laboratories and Fermi National Accelerator Laboratory, are available.


* Key

Courses that fulfill
General Education Requirements:

  • (A-AR) = Analytical - Abstract Reasoning
  • (A-QR) = Analytical - Quantitative
  • (D-D) = Diversity - Domestic
  • (D-I) = Diversity - International
  • (D-L) = Diversity - Language
  • (RCH) = Research
  • (W) = Wellness
  • (WI) = Writing Intensive
  • (AY) = Offered in Alternative Year

An introduction to computers, computer science and programming with an emphasis on problem analysis and algorithmic solutions. (A-AR, A-QR)

*CS 130 SYMBOLIC LOGIC (3 credits)
The study of formal, deductive logic emphasizing the methods for demonstrating the validity of arguments. Includes truth functional propositional logic and quantification theory through the logic of relations. Also listed as MATH 130 and PHIL 130. (A-AR)

CS 195 MATH TOOLKIT (2 credits)
An introduction to the principal topics in mathematics needed by a Computer Science major, and intended for students of CS. Topics include writing numbers in various bases, set theory, proof by induction, relations and functions, logic, matrices, complex numbers, recursion and recurrences, and rates of growth of various functions. Also listed as MATH 195.

CS 256 DATA STRUCTURES (4 credits)
A systematic introduction to the methodology of problem solving with computers. Emphasizes the design and development process, data abstraction and fundamental data structures, programming for reuse and the development of large programs. Introduces the basic notions of software engineering and analysis of algorithms. Discusses ethical issues in computing. Prerequisite: CS 128. Co-Requisite: CS 195.

CS 266 COMPUTING SKILLS (1 credit)
This module-based course provides students with practice using the computing tool chains and technical skills they will need to use throughout their courses and careers. These tools will generally apply to their chosen track and may include the Linux command line, version control systems, individual programming languages, regular expressions, security best practices or other tools. Prerequisite: CS 128 or enrollment in 3-2 engineering, and consent of the instructor.

CS 281 APPLIED GROUPS (0-1 credit)
Limited to members of the CS Applied Groups. Working under the direction of a faculty or staff member, groups of CS students provide infrastructure support for the CS Department and the College. Current groups include: CS System and Network Administrators, Hardware Interfacing Project, CS Content Administration Group, Pedagogical Tools Group, Database Integration Group (WebDB) and Green Science Group. No more than three credits total in an academic career. Prerequisite: Consent of the instructor.

Designed for students majoring in any of the natural sciences. An introduction to the tools and techniques of interdisciplinary computationally based research in the natural sciences. Computational research uses computers to simulate laboratory experiments or to perform experiments which have no laboratory analog. Lab exercises come from a variety of disciplines. Recommended prerequisites: CS 128 or a lab science course. (AY)

CS 310 ALGORITHMS (3 credits)
A study of algorithms and the data structures on which they are based, with a focus on the analysis of their correctness and complexity in terms of running time and space. Prerequisites: MATH 180, MATH 190 and CS 256.

An introduction to the structure and function of computing machines. The concept that computing machines consist of layers of virtual machines is an organizing principle. Topics include information representation, automata, assembly language programming, register machines, microprogramming, conventional machines and language processors. Prerequisite: CS 310.

An introduction to Functional Programming, one of the three major programming paradigms. Focuses on well-structured interactive program development using a modern functional programming language. Introduces the formal study of data types and the meaning of programs. Prerequisite: CS 256.

Data structures are a central topic in computer science. Building on the material developed in CS 256 Data Structures, this course covers more advanced approaches to organizing databased on network, tree and string based structures. Problems are chosen from data-intensive domains, motivating students to solve complex problems by using efficient data structures. Prerequisite: CS 256.

Introduces computer science tools and techniques that support computational science and high performance computing. Computational methods are an integral part of modern science, including multidisciplinary research into climate change, the origins of the universe and the underlying cause of diseases such as Alzheimer's. Topics include scientific libraries and kernels, parallel distributed and grid resources, and the principle software patterns found in this domain. Prerequisites: CS 310 or consent of the instructor. (AY)

The theory, techniques and technologies associated with the design, construction, and testing of software systems, particularly large software systems. Students learn various approaches to procedural decomposition and system architecture. Explores the tools used for building and testing software systems, particularly in the context of open source software. Prerequisite: CS 310. (AY)

A laboratory-oriented course dealing with analog and digital circuits. Circuit theory is developed for diodes, transistors, operational amplifiers and simple digital circuits. Components are used to construct a range of devices, including power supplies, oscillators and amplifiers. Lab. Prerequisite: PHYS 230 or 235. Also listed as PHYS 350. (AY)

This course covers a variety of software engineering and user experience topics through the lens of game design. Students construct several games over the course of the term, first individually and then collaboratively, putting theory into practice. Prerequisite: CS 256 or consent of the instructor.

The application of parallel programming and problem-solving techniques to solve computationally intensive problems in a variety of disciplines. Parallel computation invites new ways of thinking about problems and is an increasingly important skill in corporate and research environments. Students learn about programming paradigms used in parallel computation, the organization of parallel systems, and the application of programs and systems to solving problems in mathematics, physics, chemistry and other areas. Prerequisite: CS 310. (AY)

This course offers an introduction to topics in Artificial Intelligence and Machine Learning, and covers their theoretical underpinnings while providing opportunities to put various techniques into practice. Topics covered may include search, planning, game-playing and neutral networks and other machine learning approaches. Prerequisite: CS 310 or consent of the instructor.

CS 370 COMPUTER GRAPHICS (3 credits)
An introduction to computer graphics with an emphasis on Open-GL and the mathematical foundations of modeling and rendering. Experientially oriented with frequent small projects. Requires good coding skills in C++ or, with considerably more work, C. Mathematical aspects based in Linear Algebra. Prerequisite: CS 256 or consent of the instructor. (AY)

A study of computability and non-computability from a perspective that views the problems to be solved as formal languages. Study of automata-theoretic (finite state automata, pushdown automata and Turing machines) and generative (regular languages, regular, context-free and unrestricted phrase structure grammars) mechanisms along with the properties of the classes of languages they can define. Prerequisite: CS 310 or consent of the instructor.

CS 383 BIOINFORMATICS (4 credits)
Bioinformatics is the application of statistics and computer science to the field of biology. This course is a wide ranging introduction to the field, the tools, and the techniques used to work with large datasets, and will principally concentrate on the analysis and visualization of novel genomic and metagenomic data. The course is centered around doing research and using tools, with much of the course time dedicated to active learning. Prerequisite: BIOL 111, 112, CS 128 or CS 290. Also listed as BIOL 383. (AY)

This course provides an introduction to the process of proposal writing. In the course, students will focus primarily on the learning of how to select an advanced topic, write annotated bibliography, review related literature, and finally write a proposal. The course emphasizes the process of designing and writing proposals. Prerequisite: CS 310 and CS 320. (RCH)

A study of the hardware and software technology and standards which support local area networks, wide area networks and the Internet. Emphasizes the TCP/IP protocol suits and the associated tools that provide universal connectivity to a wide variety of systems around the world. Explores the network hierarchy, from the physical level (transmission media) up through client/server applications such has HTTP servers and the domain name system. Prerequisite: CS 320. (AY)

CS 420 OPERATING SYSTEMS (3 credits)
A study of the software that manages the hardware and provides the interface between application programs and system resources. Topics include scheduling, memory management, persistent storage, resource contention, locking and multi-processor synchronization. Using open source software, students explore a production quality operating system and learn by modifying it. Prerequisite: CS 320. (AY)

CS 430 DATABASE SYSTEMS (3 credits)
An introduction to database management systems. Database design and development are viewed from the perspective of a user, an application program and the database kernel itself. Focuses primarily on relational and object-oriented data models and related software. Prerequisite: CS 256. Co-Requisite: CS 310. (AY)

The nature of programming languages and the programs that implement them. Focuses on the abstract structures programming languages provide for expressing algorithms and the methods by which they are realized on concrete hardware. Prerequisite: CS 256. Co-Requisite: CS 310. (AY)

Requires departmental approval.

CS 482 SPECIAL TOPICS (3 credits)
Recent offerings include robotics, visualizing scientific data, Android app development, hardware interfacing with Arduino, and tech for social good.

CS 483 TEACHING ASSISTANTS (1-3 credits)

Collaborative research with faculty funded by the Ford/Knight Program.

CS 485 INDEPENDENT STUDY (1-3 credits)
Investigation of a specific topic conceived and planned by the student in consultation with a faculty supervisor. Culminates in a comprehensive report prepared in the style of a thesis or research paper.


Each participant completes a semester-long capstone project in a research group setting. Weekly meetings with the instructor individually and with the group as a whole. In addition, explores topics from the cultural, ethical, historical or broader scientific context of computer science in readings and discussion. Culminates in a public seminar and student presentation. Prerequisite: Consent of the instructor.

Earlham College, an independent, residential college, aspires to provide the highest-quality undergraduate education in the liberal arts and sciences, shaped by the distinctive perspectives of the Religious Society of Friends (Quakers).

Earlham College
801 National Road West
Richmond, Indiana
1-765-983-1200 — Main Switchboard
1-800-EARLHAM (327-5426) — Admission


Earlham admits students of any race, color, national and ethnic origin, age, gender and sexual orientation to all the rights, privileges, programs, and activities generally accorded or made available to students at the school. It does not discriminate on the basis of race, color, national and ethnic origin, age, gender and sexual orientation in administration of its educational policies, admissions policies, scholarship and loan programs, and athletic and other school-administered programs.