Skip to main content area Skip to sub-navigation
Skip to main content

Computer Science

Applicable for the 2017-2018 academic year.

Computer Science Website

Associate Professor BURGE; Assistant Professors WHITEHEAD, YLVISAKER

The study of computer science develops many skills that are central to a liberal arts education: analytical thinking, creativity, and communication. Computer science majors and minors at Colorado College study classical ideas and cutting-edge technologies in close collaboration with their peers and faculty. The computer science program is inclusive and welcoming, with the aim of helping every student achieve his or her full potential. Our students have ample opportunity to work with faculty here and elsewhere on research projects, as well as to put their skills to use in internships. Our alumni are in high demand in the tech sector and other fields, and many earn advanced degrees from top-flight universities.

The Department of Mathematics and Computer Science offers a major and a minor in computer science; computer science courses are designated by CP. For details about the mathematics major and a list of mathematics (MA) courses, see the listing under mathematics elsewhere in the catalog.

Major Requirements

In addition to the general college requirements, a major in computer science must complete:

  • CP115 (Computational Thinking), CP122 (Computer Science 1), MA126 (Calculus 1), MA129 (Calculus 2)

  • CP222 (Computer Science 2), and either MA201 (Discrete Math), or MA251 (Number Theory): a student should complete these before declaring the major

  • CP274 (Software Design) and CP275 (Computer Organization) 

  • Two 300 or 400-level one unit courses, not including CP405, CP407, and CP499 and excluding Independent Study (CP355, CP455); course choices must be approved by a faculty member of the Department of Mathematics and Computer Science. 

  • CP405 (Theory of Computation) and CP407 (Analysis of Algorithms)

  • CP499 (Senior Project); students must take CP499 during their senior year, and all prerequisites for CP499 must be completed before the start of Block 1 of the student's senior year. 

A student majoring in computer science must also

1. Attend at least four departmental seminars or department-approved talks after declaring the major, and submit a summary of each talk on Canvas within three weeks of the seminar. These write-ups must be completed by the beginning of Block 7 of the student's senior year. Please see the department's website for more guidelines.

2. Complete the year long Computer Science Senior Project. Project block assignments will be made prior to pre-registration in Block 7 of the student's junior year. Students who have declared the major by that time will receive an e-mail asking for project/block/team preferences, will be assigned a team, and will be able to register for CP499. The department will assign the project block based on the student's preferences (when possible) and faculty schedules. All members of a project team must register for the same project block. For more information on the senior project, see the dept website.

To be eligible for Distinction in Computer Science, see the CS Distinction Requirements page.

Minor Requirements

To minor in computer science, a student must complete each of the following:

  • CP115CP122CP222CP274, and CP275;
  • Two additional units of computer science at the 300 or 400 level;
  • Obtain approval of the choice of courses from a member of the Department of Mathematics and Computer Science.

Revised November 2017

Courses

Computer Science

CP115 Computational Thinking

Introduction to the encoding of information as data and the automation of quantitative reasoning with computer programs. This course covers the basics of the Python programming language with examples drawn from many fields (e.g. chemistry, biology, linguistics, art, music). This is the first course for those interested in computer science. Meets the Critical Perspectives: Quantitative Reasoning requirement. (Not offered 2018-19).

1 unit

CP122 Computer Science I

Introduction to algorithms and data structures, and the design of computer programs using the programming language Java. This course requires some experience in programming. Meets the Critical Perspectives: Quantitative Reasoning requirement. (Not offered 2018-19).

Prerequisite: Computer Science 115 or consent of instructor.

1 unit

CP222 Computer Science II

Examination of algorithms for searching, sorting, and manipulation of data structures. Exploration of queues, stacks, trees, and graphs using a variety of design techniques including recursion and object-oriented programming. Meets the Critical Perspectives: Quantitative Reasoning requirement. (Not offered 2018-19).

Prerequisite: Computer Science 122.

1 unit

CP241 Topics in Computer Science:

Special topics in computer science not offered on a regular basis (Not offered 2018-19).

1 unit

CP248 Introduction to Robotics

Construction and programming of a small robot over the course of a semester. Introduction to algorithms and techniques for navigation, planning, and error correction. (Not offered 2018-19).

Prerequisite: Computer Science 122.

.5 to 1 unit

CP255 Independent Study:

Prerequisite: consent of instructor.

.5 to 1 unit

CP274 Software Design

Fundamentals of design and implementation of 'real world' software. Topics include testing, databases, networking, user interfaces, collaborative development practices, and software specifications. (Not offered 2018-19).

Prerequisite: Computer Science 222.

1 unit

CP275 Computer Organization

Exploration of the design and organization of computer processors, memory, and operating systems. Topics include processor architecture, digital circuits, memory management, scheduling, file systems, assembly language, and peripheral device control. (Not offered 2018-19).

Prerequisite: Computer Science 222.

1 unit

CP341 Topics in Computer Science

Special topics in computer science not offered on a regular basis. (Not offered 2018-19).

Prerequisite: Computer Science 222, Computer Science 274, Computer Science 275.

.5 to 1 unit

CP342 Distributed Systems

Fundamentals of network design and interaction of computing systems. Topics include network protocols, security, synchronization, transactions, and network programming. Bredin. (Not offered 2018-19).

Prerequisite: Computer Science 274 and Computer Science 275.

1 unit

CP344 Database Systems

Introduction to data base management systems including the design, implementation, and analysis of data bases. Topics include relational models, concurrent access, data mining, and SQL programming. (Not offered 2018-19).

Prerequisite: Computer Science 274 and Computer Science 275.

1 unit

CP355 Independent Study:

Prerequisite: Computer Science 222, Computer Science 274, Computer Science 275.

.5 to 1 unit

CP360 Computer Graphics

Introduction to the algorithms and theory necessary for producing graphic images with the computer. Topics include perspective, projection, hidden line removal, curve design, fractal images, shading, and some animation. (Not offered 2018-19).

Prerequisite: Computer Science 274 and Computer Science 275.

1 unit

CP365 Artificial Intelligence

An introduction to the theories and methods of artificial intelligence. Topics include problem solving, game playing, knowledge representation, natural language understanding, and expert systems. (Not offered 2018-19).

Prerequisite: Computer Science 274 and Computer Science 275.

1 unit

CP398 Seminar in Computer Science

A semester-long study based on journal articles in computer science or on problems selected by the instructor. Topics will be chosen based on interest and accessibility, and there will be some writing and presentation of material. May be repeated for a total of 1 unit. (Not offered 2018-19).

Prerequisite: Computer Science 275 & consent of instructor.

.5 unit

CP405 Theory of Computation

Examination of the logical basis of computation. Topics include automata theory, Turing machines, time complexity, and space complexity theory. (Not offered 2018-19).

Prerequisite: Computer Science 274, Computer Science 275 and any 300-level Computer Science course.

1 unit

CP407 Analysis of Algorithms

Investigation of the efficiency and design of algorithms including order estimates, complexity, and NP problems. (Not offered 2018-19).

Prerequisite: Computer Science 274, Computer Science 275, and any 300-level Computer Science course.

1 unit

CP498 Senior Research Thesis in Computer Science

Research on an on-going project with a Computer Science faculty member. Students will read discipline-specific literature and contribute to research design. Students will produce a written thesis along with any supporting software. Students will present their projects during Block 7. This course does not count towards major or minor requirements.

Prerequisite: consent of instructor & Senior Standing.

1 unit

CP499 Team Software Project

Students work in teams to design, document, implement, and test a software project. Required for majors in computer science. (Not offered 2018-19).

Prerequisite: consent of instructor & Computer Science Major, Computer Science 274, Computer Science 275.

1 unit