Catalogue 1999-2000Colby Home

Computer Science

Chair: PROFESSOR DALE SKRIEN
Professor Skrien; Assistant Professor Allen Downey; Visiting Assistant Professors Clare Congdon and Randy Jones

The department offers a major and a minor in computer science. The computer science major can be taken with honors.

Colby computer science majors in recent years have entered graduate school to do advanced work. They also have used the major as a solid foundation for careers in the computer industry.

Requirements for the Major in Computer Science
Computer Science 151, 231, 232, 333, 352, 356 or 357, 375 or 378; Mathematics 121 or 161, 122 or 162; and four three- or four-credit computer science courses numbered 300 or above. One of the four additional computer science courses may be replaced with one course chosen from Mathematics 253, 274, 332, or 372.

Requirements for the Honors Program in Computer Science
An honors program is available for students majoring in computer science who have a grade point average of at least 3.25 in all courses for the major numbered 200 or higher and who complete an additional, pre-approved program of independent study in the major (Computer Science 484), culminating in both a written paper and a colloquium presentation. Students who successfully complete the requirements and who receive recommendation of the department will graduate "With Honors in Computer Science."

Requirements for the Minor in Computer Science
Six courses, including Computer Science 151, 231, 232, and three additional three- or four-credit computer science courses. One of the three additional computer science courses may be replaced with one course chosen from Mathematics 253, 274, 332, or 372. Computer Science 113 and 117 may not both count toward the minor.

The point scale for retention of the major/minor applies to all courses in the major/minor. No requirement for the major/minor may be taken satisfactory/unsatisfactory.

Course Offerings

[031j] C Programming in a UNIX Environment An in-depth introduction to the C programming language, with an emphasis on programming on machines that run the UNIX operating system. Enrollment limited; priority to seniors, then Computer Science majors, others. Prerequisite: Prior programming experience in another language. Noncredit.

113f Great Ideas in Computer Science An introduction to computer science that provides an overview of the important ideas in the field. Topics may include history, programming, human-computer interaction, hardware, theory of computation, artificial intelligence, and social issues. A weekly laboratory session provides hands-on computer experience. No previous computer experience required. Four credit hours. Q. MS. CONGDON

117j Explorations with Robots A gentle introduction to computer science and programming using small robots. Topics include building and programming small robots to perform a variety of simple tasks (such as line following or obstacle avoidance) and programming in a high-level language, such as C, to control the robots. Laboratory sessions provide hands-on experience. No previous experience with computers or robots is required. Offered in alternate years. Four credit hours; three credit hours in January. Q. MS. CONGDON

151fs Structured Programming and Elementary Algorithms Problem solving and programming in the high-level language Java. Topics include object-oriented design, algorithm development, control structures, recursion, data structures, and their implementation. A weekly laboratory session provides hands-on computer experience. No previous computer experience required. Formerly offered as Computer Science 115. Four credit hours. Q. MR. DOWNEY, MR. JONES, AND MR. SKRIEN

231fs Data Structures and Algorithms Using Java, an introduction to the primary data structures and the algorithms that operate on them. Data structures to be studied include arrays, graphs, trees, stacks, and queues. The algorithms include searching, sorting, insertion, deletion, and traversal. Prerequisite: Computer Science 115. Four credit hours. Q. MR. DOWNEY AND MR. SKRIEN

232f Computer Organization An introduction to computer organization: memory, processors, input/output, virtual machines, and assembly language. Prerequisite: Computer Science 115. Four credit hours. MR. SKRIEN

317s Adaptive Agents and Robots An exploration of autonomous (and semi-autonomous) computer systems that are able to adapt their behavior based on past experiences. Topics include adaptive small robots that learn to perform specific tasks (such as learning to navigate in an unfamiliar environment) and an introduction to a variety of learning approaches, such as neural networks, genetic algorithms, decision trees, and rule-based systems. Course work will involve reading and discussion, building small robots, and several programming projects. Offered in alternate years. Prerequisite: Computer Science 231. Four credit hours. MS. CONGDON

333s Programming Languages A survey of programming languages and programming language paradigms, including the history, design, and formal definitions of different languages. Includes study of imperative (e.g., C, Pascal, Ada, Fortran), logic (e.g., Prolog), functional (e.g., ML, Lisp, Scheme), and object-oriented (e.g., Java, Smalltalk, CLOS, C++, Eiffel) programming languages. Languages are compared to see how well they achieve the goals of solving various types of problems in an efficient and readable manner. Programming projects in some of the languages is an integral part of the course. Prerequisite: Computer Science 231. Four credit hours. MR. SKRIEN

352f Information System Design A theoretical and practical examination of the design process as it applies to information systems. Techniques for assessing the need for technology, specifying the system design, and involving users in the design process are explored. Design methods include future scenarios, mock-ups, rapid prototyping, field testing, and formative evaluation. Includes a significant semester-long design project. Enrollment limited. Prerequisite: Computer Science 231. Four credit hours. MR. JONES

[353] Artificial Intelligence A broad, technical introduction to the central concepts of artificial intelligence and the design of advanced computing systems, together with discussion of the philosophical and ethical issues that surround the subject. Technical topics may include knowledge representation, deduction, expert systems, learning, natural language understanding, planning, robotics, search, vision, connectionism. Offered in alternate years. Enrollment limited. Prerequisite: Computer Science 231. Four credit hours.

[355] Human-Computer Interaction Human-computer interaction spans the spectrum from interface design to envisioning social interactions in cyberspace. An introduction to theories of human-computer interaction, representations of information, and interface design. Advanced topics may include computer agents, computer-supported cooperative work (CSCW), and virtual reality. Offered in alternate years. Prerequisite: Computer Science 231. Four credit hours.

[356] Introduction to Compiler Construction Introduction to the theory, basic techniques, and design of compilers and interpreters of general purpose programming languages; grammars, symbol tables, lexical analysis, semantic analysis, code generation, and optimization. Includes a large project in which students will implement a compiler. Offered in alternate years. Prerequisite: Computer Science 231 and 232. Four credit hours.

357s Operating Systems An introduction to systems programming concepts with an emphasis on timeshare systems and networking. Topics may include storage and memory management, scheduling, I/O, communication, and security. Offered in alternate years. Prerequisite: Computer Science 231 and 232. Four credit hours. MR. DOWNEY

[358] Scientific Computing and Visualization The large data sets that are common in scientific computing pose special problems for data storage, processing, transfer across networks, interpretation, and visualization. The course offers a practical introduction to the use of high-performance computing in areas of computational mathematics, chemistry, physics, and other sciences. Students work on projects that apply techniques discussed in class to problems from other disciplines. Prerequisite: Computer Science 231 or junior/senior standing in a science major. Four credit hours.

[375] Analysis of Algorithms Analysis of the space and time efficiency of algorithms. Graph, genetic, parallel, and mathematical algorithms as well as algorithms used in cryptology may be explored. Offered in alternate years. Prerequisite: Computer Science 231. Four credit hours.

378f Introduction to the Theory of Computation Formal languages, automata theory, computability, recursive function theory, complexity classes, undecidability. Offered in alternate years. Also listed as Mathematics 378. Prerequisite: Mathematics 274 or Computer Science 231 and either Mathematics 122 or 162. Four credit hours. MR. SKRIEN

393f Computer Science Reading Seminar A wide-ranging seminar in computer science on topics of interest organized and participated in by both students and faculty. The format typically entails discussions based on readings from current literature in computer science selected by the seminar participants. Intended to acquaint students with current research and issues in various fields of computer science. Nongraded. May be repeated for credit. Prerequisite: Permission of instructor. One credit hour. MR. DOWNEY

397f Introduction to Cognitive Science and Cognitive Modeling A multi-disciplinary approach to the study of intelligence and the mind, bringing together the fields of psychology, computer science, philosophy, education, linguistics, anthropology, neuroscience, and logic, among others. Cognitive science derives its strength from a view of the mind as an information system, including processes that implement perception, memory, reasoning, language, learning, and consciousness. Students read papers, engage in critical discussion, and learn about empirical methods for studying the mind; some hands-on work with computer models. Enrollment limited. Prerequisite: One of the following: Computer Science 231, Psychology 122, Philosophy 152, Anthropology 113, or Biology 274. Four credit hours. MR. JONES

484fs Honors Independent Study The independent study component of the honors program in computer science. Cannot be counted toward the major or minor. Prerequisite: Permission of the instructor and admission to the honors program. Three or four credit hours. FACULTY

491f, 492s Independent Study Independent study in an area of computer science of particular interest to the student. Prerequisite: Permission of the instructor. One to four credit hours. FACULTY


search the catalogue

Current Course Catalogue

General Information
Colby's Mission and Goals
About Colby
Campus Life
Libraries
Information Technology
  Services

Special Programs
Career Services
Admission
Orientation
Student Fees
Financial Aid
General Regulations

Academic Program
Academic Requirements
Academic Honors
Academic Programs
Academic Procedures

Course of Study
Course Designations
Adminstrative Science
African-American Studies
American Studies
Ancient History
Anthropology
Art
Astronomy
Biology
Chemistry
Chinese
Classics
Computer Science
Creative Writing
East Asian Studies
Economics
Education and Human
  Development

English
Environmental Science
Environmental Studies
Field Experience, Internship
French
Geology
German and Russian
German
Government
Greek
History
Human Development
Indigenous Peoples
  of the Americas

Integrated Studies
International Studies
Italian
January Program
Japanese
Jewish Studies
Latin
Latin American Studies
Literature in Translation
Mathematics
Music
Performing Arts
Philosophy
Physical Education
Physics
Psychology
Religious Studies
Russian
Science, Technology
  and Society

Selected Topics
Sociology
Spanish
Women's Studies

Directories
The Corporation
Faculty
Committees
Administration

Appedices
Degrees Awarded
Honors
1999-2000 Calendar
2000-2001 Calendar