The Program

Computer Science at Earlham is unique in many ways. Our diverse faculty and rich facilities provide an environment that fosters an interdisciplinary approach to theory and practice in the field. Computer Science works closely with Mathematics, Physics and most of the other Natural Sciences, and has ties to linguistics and logic.

Our curriculum is built on the fundamental paradigms of the discipline: theory, abstraction and design. These three are woven throughout the Department, binding the sometimes disparate topics of Computer Science into a cohesive body of knowledge and experience. Because of the rapidly changing character of the field, we review the curriculum regularly. Our work is heavily influenced by the liberal arts mission of the College, in particular our interdisciplinary approach and our inclusion of the cultural, legal and ethical issues surrounding computing within the curriculum. We provide our graduates with the ability to make informed decisions about the appropriate use of technology in a variety of contexts.

At a practical level we rely heavily on open source software, such as Linux distributions, FreeBSD, PostgreSQL, MySQL, etc. These tools and many others like them form the software stack that supports all of the teaching and research activities of students and faculty. Students, faculty and alumni contribute to a wide variety of open source packages, particularly in the area of scientific and parallel computing.

Earlham offers many opportunities for students to apply their studies in Computer Science to real-world problems, ranging from applied computer science to more research oriented work. All of the work we do involves close interaction between students and faculty. A variety of opportunities assist students in reinforcing and extending their classroom learning experiences. Groups of students are responsible for most of the Departmental computing infrastructure:

  • System and Network Administrators Group is responsible for the care and feeding of the labs, desktop machines and networks we use in our work.
  • Content Administration Group is responsible for the content of the Computer Science Department Web pages.
  • Pedagogical Support Group supports the various software tools we use in teaching Computer Science.
  • HIP, the Hardware Interfacing Project, works on interfacing laboratory equipment to computers. Their work has included a local weather station, installed on the roof of Dennis Hall, providing support for a scientific research project investigating concentration of metals in local water sources, and, most recently, construction of a TrafficCam to record video and speed data for traffic passing in front of Earlham's main entrance.
  • Cluster Computing Group works on a variety of projects in the areas of cluster computing, computational science, Grid computing, and education, outreach and training.
  • Theory Group is a faculty-led collective of students ranging from first-years to seniors who are studying foundational issues in Computer Science.
  • ECS System Administrators Group works with the College's Computing Services system administrators, assisting them in maintaining and extending the servers for the College-wide computing systems.
  • Green Science Group collaborates with Physics, Computer Science and Environmental Science on environmental projects. They have been responsible for a solar array and grid-tie system in Dennis Hall, a modest wind turbine at Miller Farm and the Green Zone, an area in the Dennis Hall lobby where the College's environmental projects are displayed.

Our curriculum's strong mix of theory and practice, in conjunction with our applied and research activities, produces graduates prepared for a variety of careers in computer science. Students who major or minor in CS have gone on to advanced studies in computer science and other disciplines; software engineering positions; and system, network and database administration.

Major technology companies who have employed our graduates include Lucent, Amazon.com, Oracle, Sybase, Microsoft, MCI/WorldCom and Ontrack. A number of successful technology companies have been started by Earlham graduates, including Organic Online (Web site design and hosting), Ray Ontko and Company (software development and consulting services), Summersault (website design and hosting) and Infocom (Internet service provider).

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

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:

  • MATH 180 Calculus A
  • MATH 190 Discrete Mathematics
  • MATH 195 Math Toolkit
  • CS 128 Programming and Problem Solving
  • CS 256 Advanced Programming
  • CS 310 Algorithms and Data Structures
  • CS 320 Principles of Computer Organization
  • CS 380 Theory of Computation
  • CS 488 Senior Capstone Experience

AND

  • Four additional CS courses, 300 and above, excluding CS 481, CS 383/483, CS 484, CS 485 and CS 486. In exceptional cases, the Department may waive the exclusion of CS 484, CS 485 or CS 486.

The Minor

  • Either MATH 190 Discrete Mathematics OR
    MATH 195 Math Toolkit
  • CS 128 Programming and Problem Solving
  • CS 256 Advanced Programming
  • CS310 Algorithms and Data Structures

AND

  • Three additional CS courses, 300 and above, excluding CS 481, CS 383/483, CS 484, CS 485 and CS 486. 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-AP) = Arts - Applied
  • (A-TH) = Arts - Theoretical/Historical
  • (A-AR) = Analytical - Abstract Reasoning
  • (A-QR) = Analytical - Quantitative
  • (D-D) = Diversity - Domestic
  • (D-I) = Diversity - International
  • (D-L) = Diversity - Language
  • (ES) = Earlham Seminar
  • (IE) = Immersive Experience
  • (RCH) = Research
  • (SI) = Scientific Inquiry
  • (W) = Wellness
  • (WI) = Writing Intensive
  • (AY) = Offered in Alternative Year

*CS 128 PROGRAMMING AND PROBLEM SOLVING (4 credits)
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 ADVANCED PROGRAMMING (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 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.

CS 290 COMPUTATIONAL SCIENCE (3 credits)
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 and any lab science. (AY)

CS 310 ALGORITHMS AND DATA STRUCTURES (4 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.

CS 320 PRINCIPLES OF COMPUTER ORGANIZATION (3 credits)
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.

CS 330 FUNCTIONAL PROGRAMMING (3 credits)
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.

CS 340 SCIENTIFIC COMPUTING (3 credits)
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)

CS 345 SOFTWARE ENGINEERING (3 credits)
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)

CS 350 ELECTRONICS AND INSTRUMENTATION (3 credits)
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)

CS 360 PARALLEL AND DISTRIBUTED COMPUTATION (3 credits)
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)

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)

CS 380 THEORY OF COMPUTATION (3 credits)
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 410 NETWORKS AND NETWORKING (3 credits)
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)

CS 440 PROGRAMMING LANGUAGES (3 credits)
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)

CS 481 INTERNSHIPS, FIELD STUDIES AND OTHER FIELD EXPERIENCES  (1-3 credits)

CS 482 SPECIAL TOPICS (3 credits)
Selected topics determined by the instructor for upper-level study.

CS 483 TEACHING ASSISTANTS (1-3 credits)

CS 484 FORD/KNIGHT RESEARCH PROJECT (1-4 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.

CS 486 STUDENT RESEARCH

CS 488 SENIOR CAPSTONE EXPERIENCE (3 credits)
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.

Print Friendly and PDF

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

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