Computer Science
Associate Professor J. BURGE (Chair), Assistant Professors V. KOUSHIK, D. ELLSWORTH, C. SCOTT, B. NYE., B. JACKSON
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 All College Requirements, a student majoring in Computer Science must complete:
- Two of the following:
- MA201 Discrete Mathematics OR MA251 Number Theory
- CP115 Computational Thinking
- CP116 Applied Python
- CP122 Computer Science 1
- CP222 Computer Science 2
- CP274 Software Design
- CP275 Computer Organization
- CP307 Data Structures and Algorithms
- CP405 Theory of Computation
- CP499 Team Software Project
- TWO units approved by a faculty member of the Department of Mathematics and Computer Science from the following:
- ONE unit chosen from the Racial/Gender Equity or Ethics approved list, available on the department website. Students may petition to count a course not on the Racial/Gender Equity of Ethics course list. Petitions must be approved before the course begins, with limited exceptions for courses already completed. Only courses taken outside of Mathematics and Computer Science can count towards this category
- A student must complete any two CS courses and one math course from the above list, and take at least one course from the Racial/Gender Equity or Ethics approved list before declaring the major
- All non-transfer students may count at most three 300-400 level courses taken at other institutions (not to include the equivalent of CP499) toward their Computer Science major, provided that these courses are approved by the department
A student majoring in Computer Science must also:
- Fulfill the talk attendance and writeup requirement as described on the department's web page, by the beginning of Block 7 of the student’s senior year
- Present the project developed in Team Software Project (CP499) as either a poster or oral presentation during Block 7 of the year in which students take CP499
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:
- CP115, CP122, CP116, CP222, CP274, and CP275
- One 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
- A student minoring in Computer Science must take at least three of the required courses at CC.
- CP499 will not count towards the CS minor
Courses
Computer Science
(Summer only 2024-25).
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. Meets the Critical Learning: FRL requirement.
In-depth exploration of the Python programming language and its applications, with emphasis on object-oriented Python, data visualization, and data analysis. A brief review of Python will be provided for students entering with prior programming experience that does not include Python.
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. Meets the Critical Learning: FRL requirement.
Study of the design and implementation of computer programs in Java at the intermediate level with a focus on object-oriented programming. Foundational concepts that lead towards formal discussion of software design (e.g. design patterns), analysis of algorithms (e.g. asymptotic complexity), and computer architecture (e.g. stack/heap memory) are introduced in this course. Students will use data structures and other tools to build robust, efficient, extensible programs that utilize Graphical User Interfaces (GUIs). The concepts behind multi-threaded programming are also introduced. Students will also deepen their understanding of how computers manipulate memory and execute programs. Meets the Critical Perspectives: Quantitative Reasoning requirement. Meets the Critical Learning: FRL requirement.
Students will meet regularly during the semester in order to learn about topics in computer science. Students may take the course more than once, but at most two times for credit (in different years). Pass/Fail grade only. .5 units (Not offered 2024-25).
Special topics in computer science not offered on a regular basis (Not offered 2024-25).
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 2024-25).
Fundamentals of design and implementation of 'real world' software. Topics include testing, databases, user interface design, collaborative development practices, and software specifications.
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.
Study of fundamental data structure and algorithm concepts, and analysis techniques thereof. Examination of hash function and tree based data structures. Analysis techniques including asymptotic analysis and proof of algorithm correctness and performance. Exploration of reduction and algorithmic categories (e.g., NP- completeness). 1 unit.
Special topics in computer science not offered on a regular basis.
Fundamentals of network design and interaction of computing systems. Topics include network protocols, security, synchronization, transactions, and network programming. Bredin. (Not offered 2024-25).
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 2024-25).
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 2024-25).
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 2024-25).
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 2024-25).
Examination of the logical basis of computation. Topics include automata theory, Turing machines, time complexity, and space complexity theory.
Investigation of the efficiency and design of algorithms including order estimates, complexity, and NP problems. (Not offered 2024-25).
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.
Students work in teams to design, document, implement, and test a software project. Required for majors in computer science.