Computer Science


 

Computer Science
at Earlham

Required Courses

Course Descriptions

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    200 Level    300 Level    400 Level


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ödel’s 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.

Computer Science Front Page · Earlham Home · Site Index


Copyright ©1997-2001 Earlham College. Revised August 2001.