Course
Descriptions
For
the current year's course offerings, please use WebDb.
Courses
marked with a red star (
)
may fulfil an Earlham general education requirement. (FA) = Fine
Arts (H) = Humanities (L) = Language (I) = Intercultural (M) =
Multicultural (NS) = Natural Science (R/Ph) = Religion and/or
Philosophy (SS) = Social Science (A) = Offered in alternate years
The
following list outlines the courses we regularly offer. Additionally topical
courses, typically one or two each year, give students and faculty a chance
to explore areas of the discipline not normally appearing in the curriculum.
100
Level
CS 128
PROGRAMMING AND PROBLEM SOLVING (3
credits)
An introduction to computers, computer science, and programming
with an emphasis on problem analysis and algorithmic solutions.
(NS)
200
Level
CS
256 ADVANCED PROGRAMMING (3 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.
CS
260 PHILOSOPHY OF MINDS AND MACHINES (3 credits)
Examines issues in the philosophy of mind from the perspective
of recent work in artificial intelligence and cognitive science.
Most of these issues can benefit from multidisciplinary perspectives
afforded by philosophy, psychology, biology, mathematics, linguistics,
computer science, and anthropology. Participation of students
from these and related fields is encouraged. Prerequisites: Completion
of Humanities A and B. (A) (Ph/R) Also listed as PHIL 260.
300
Level
CS
310 ALGORITHMS AND DATA STRUCTURES (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.
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.
CS
340 LOGICAL SYSTEMS (4 credits)
A second course in logic on the properties of formal systems and the metatheory
of standard first-order logic. Focuses on proof theory, model theory,
and the important limitative results of the 20th century, including Gödels
theorems. Topics may include recursive function theory, computability,
paradoxes, nonstandard logics, and the nature and limits of formalism.
Prerequisite: PHIL 130 (also listed as MATH 130), or introductory programming,
or consent of the instructor. Also listed as MATH 340 and PHIL
340. (A)
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 functional decomposition and system
architecture. Explores the tools used for building and testing software
systems, particularly in the context of open source software.
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. These components are then integrated to construct
power supplies, oscillators, amplifiers, and primitive microcomputer systems.
Prerequisite: PHYS 230 or PHYS 235. Also listed as PHYS
350. (A)
CS
360 PARALLEL 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, cryptography,
and other areas.
CS
380 THEORY OF COMPUTATION (3 credits)
A study of computability and uncomputability from a perspective
which 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.
400
Level
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 protocols and the associated tools which 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
(DNS).
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.
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
from the database kernel itself. Focuses primarily on relational and object-oriented
data models and related software.
CS
440 LANGUAGES (3 credits)
The nature of programming languages and the programs that implement them.
Focuses on the characteristics of abstract machine languages present to
programmers and the mechanisms by which they are realized on concrete
hardware.
CS
481 INTERNSHIPS, FIELD STUDIES AND OTHER FIELD EXPERIENCES
CS
482 SPECIAL TOPICS (3 credits)
Selected topics determined by the instructor for upper-level study.
CS
483 TEACHING ASSISTANTS
CS
484 FORD/KNIGHT RESEARCH PROJECT
Collaborative research with faculty funded by the Ford/Knight Program.
CS
485 INDEPENDENT STUDY (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 paper.
CS
486 STUDENT RESEARCH
CS
488 SENIOR SEMINAR (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 in which each
student presents his or her work. Recent topics courses have covered the
areas of open source software, artificial intelligence, and robotics.