Computer Science Curriculum
Mission
Computer Science studies the design of computational processes, computing systems, and virtual objects.
The Colby Department of Computer Science is committed to making computer science an integral part of a liberal arts education. Our goal is to provide Colby students with a strong background in computer science, including the integration of knowledge from other disciplines. Our graduates will have the ability and experience to enable and produce new and innovative discoveries.
The Department of Computer Science has the broader goal of enabling computational thinking throughout the college community. Computational thinking is the ability to decompose a problem or process and describe it at the level of computable operations. Computational thinking integrates abstraction, hierarchical design, information management, and an understanding of complexity.
Objectives
Objectives are broad statements that describe the career and professional accomplishments that the program is preparing graduates to achieve.
We expect that graduates of the Colby Computer Science program will
- exhibit the ability to learn and apply new concepts and adapt to new technologies and challenges,
- seek out opportunities for continuing education and intellectual engagement, and
- become leaders and innovators in their chosen professions.
Outcomes
Outcomes relate to the skills, knowledge, and behaviors that students acquire through courses and degree programs.
Graduates of Colby College with a major in computer science will possess
- proficiency in computational thinking,
- the ability to analyze systems at the three levels of computer science: theory, software, and hardware,
- proficiency in the design and implementation of algorithms using multiple programming languages,
- the ability to apply computational thinking to a diverse set of problems and disciplines,
- the ability to communicate effectively and collaborate with others, and
- the ability to adapt to new challenges and computational environments.
Degree Programs
- Major in Computer Science
- Major in Computer Science with a Concentration in Artificial Intelligence
- Major in Data Science
- Major in Computational Biology
- Major in Environmental Computation
- Major in Computational Psychology
- Major in Theater and Dance - Interdisciplinary Computation
- Major in Music - Interdisciplinary Computation
- Minor in Computer Science
- Minor in Data Science
- Honors in Computer Science
- Independent Study in Computer Science
Students with a variety of interests may want to explore Computer Science, as it impacts and interacts with virtually every discipline. Many advances in the natural and social sciences, engineering, and the humanities would not have been possible without the exponential growth in computing power and the corresponding design of advanced algorithms by computer scientists. Students who become majors or minors, or take just a few courses, will expand their possibilities by knowing more about how to effectively use computers and computation.
Computer science offers a major in CS, a major in CS with a concentration in Artificial Intelligence, and a minor in CS. Joint with departments across campus, we also offer a major in Data Science, minor in Data Science, and five interdisciplinary computing majors (CS+X): IC-Theater and Dance, IC-Music, Environmental Computation, Computational Biology, and Computational Psychology. The CS+X majors are designed to give students depth in both computer science and their focus discipline, preparing them for careers or interdisciplinary graduate programs with a computational focus, such as digital media, geographic information systems, and bioinformatics, computational neuroscience, or computational biology.
The initial sequence of CS courses (Computational Thinking, CS 231, and CS 251/2) also complements many disciplines. Whether you are an artist or a biology major, you will benefit by knowing more about how to apply computing to you area of interest. The first CS course for most students will be Computational Thinking: CS 151, 152, or 154. Students with some programming experience should speak with a professor about taking a placement exam and potentially starting with Computational Thinking: CS 166. Students with significant programming experience should speak with a professor about taking a placement exam and potentially starting with CS 231.
Students may not major or minor in more than one computing-related degree. CS majors, CS+X majors, and CS minors interested in Data Science should complete a Statistics minor. Mathematics and Statistics majors interested in Data Science should complete a CS minor.
Major in Computer Science
The major in computer science is designed to prepare students for either graduate study or a career in a computation-related field. Colby CS majors have been successful in a wide variety of career paths.
Students planning to attend graduate school in CS should strongly consider taking CS 376 and CS 378, undertaking an honors project, and strengthening their math background beyond the minimum required.
- Computational Thinking: CS 151, 152, 154 or 166 (with a grade of C- or better)
- CS 231 Data Structures and Algorithms (with a grade of C- or better)
- CS 232 Computer Organization
- CS 251 Data Analysis and Visualization or CS252 Mathematical Data Analysis and Visualization
- CS 333 Programming Languages
- One of CS 375 Analysis of Algorithms, CS 376 Algorithm Analysis and Design, or CS 378 Theory of Computation
- In addition to the core, one CS course at the 200 level or higher and three CS courses at the 300 level or higher.
- At least two of the four electives must be part of a two-semester sequence, finishing with a 400-level course.
- A 200-level mathematics or statistics course.
- Students must complete their math requirement prior to taking CS 375.
- MA 274 is a pre-requisite for CS 376 and CS 378.
- MA 253 is a pre-requisite for CS 252.
Core Requirements
Electives
Math/Statistics Requirement
Visually, we have
Interested students should look at the example CS Major timelines. As is apparent from the timelines, taking Computational Thinking in your first year is strongly recommended. Students can take only one of the Computational Thinking courses.
A student majoring in Computer Science may not also major in Computer Science with a Concentration in Artificial Intelligence.
Major in Computer Science with a Concentration in Artificial Intelligence
The Computer Science major with a concentration in Artificial Intelligence prepares students for graduate work or careers as tool builders in AI.
- Computer Science Core: identical to the Core Requirements for the CS Major
- Artificial Intelligence Math: one of
- MA 253, in which case students should take CS 252, or
- MA 274
- Artificial Intelligence Core
- CS 310
- Neural Networks (CS 343)
- Artificial Intelligence Sequence: One of the following sequences:
- Simulation: CS 346, CS 446
- Human Interpretable AI: CS 348, CS 448
- Interactive Systems: CS 353, CS 453
- Neural Networks: CS 343, CS 443 or CS 444 (but if this is the sequence, either CS 321, CS 346, CS 348, CS 353, or an AI course from abroad must also be taken to satisfy the AI Core requirement)
- Other AI sequences by permission of the faculty
- Foundation Courses (4 courses: some may be satisfied by AP or other placement)
- Computational Thinking: CS 151, 152, 154 or 166 (with a grade of C- or better)
- MA 160 or MA 165
- SC 212
- Environmental Studies 218
- Core Courses (6 courses)
- CS 231 (with a grade of C- or better)
- CS 251/2
- CS 310
- MA 253
- SC 321
- SC 324
- Culminating Experience: a sequence of two closely related three- or four-credit courses offered by any department. These courses must either incorporate significant data analysis using a variety of tools or be primarily concerned with applied or theoretical ideas of direct relevance to data science. These courses, together with a description of how they meet the requirements, must be approved by the Data Science Committee at least four months prior to enrolling in the first course of the sequence
- Foundational Coursework (some courses may be satisfied by AP or other placement)
- Computational Thinking: CS 151, 152, 153 or 166 (with a grade of C- or better)
- BI 163 and BI 164 (with a grade of C- or better)
- Single Variable Calc: MA119/120, MA 125, MA 130, or MA 135
- Multi Variable Calc: MA 160
- Required Math/Stats/CS courses
- MA 253 or MA262
- SC 212
- CS 231
- CS 251/2
- Two of: CS 341, CS 441, CS 343, CS 443/4, CS 346, CS 446
- Required Biology courses:
- BI 278
- BI 279
- Two of: BI 320, BI 345, BI 371J, BI 376, BI 378, BI 382
- Required Statistics course: SC 212
- Foundational Coursework (4 courses; some may be satisfied by AP or other placement)
- Computational Thinking: CS 151, 152, 154 or 166 (with a grade of C- or better)
- CS 231 (with a grade of C- or better)
- ES 118
- One 200-level course (e.g. ES 233, ES 234, ES 242, ES 244, ES 265, ES 271, ES 276 or ES 283)
- Required Modeling and Analysis Courses (4 courses)
- CS 251/2
- One of CS 341, CS 346, CS 363, CS 365, or other approved CS course)
- ES 212 or ES 214
- SC 212 or MA 160
- Application Courses (5 courses)
- At least one, and up to two CS courses at the 300 level or above.
- At three, and up to four ES courses not also counted elsewhere to provide depth in an application area. For recommended application groups, see the catalog entry under Environmental Studies.
- One mathematics and statistics course out of: SC 321, MA 253, MA 262, MA 311, or MA 332.
- Culminating Experience
- ES 401, 402 (one credit for the year)
- One capstone selected from the following in consulation with the student's advisor:
- A CS 4XX course (each has a CS 3XX prerequisite)
- ES 493
- ES 494
- Foundational Courses (3 courses: some may be satisfied by AP or other placement)
- Computational Thinking: CS 151, 152, 154 or 166 (with a grade of C- or better)
- CS 231 (with a grade of C- or better)
- PS 111
- Core Methods and Topics Courses (6 courses)
- CS 251/2
- PS 214
- PS 215
- At least three 200-level PS courses
- Applications Courses (3 courses)
- One of CS 341, CS 343, CS 346, CS 363, CS 365
- One additional 300- or 400-level CS course
- One 300-level PS course with an associated course in collaborative research
- Culminating Experience (1 or 2 courses)
- PS 416, or
- PS 483 and PS 484 (by invitation), or
- CS 483 and CS 484 (by invitation), or
- A 400-level CS course
- CS Coursework (5 courses; Computational Thinking may be satisfied by placement)
- Computational Thinking: CS 151 (preferred), 152, 154 or 166 (with a grade of C- or better)
- CS 231 (with a grade of C- or better)
- CS 251/2
- CS 351, CS 353 (or approved alternative)
- CS 267, CS 269, CS 451, CS 453 (or approved alternative)
- Theater and Dance Coursework (5 courses)
- TD 113 The Dramatic Experience or TD 114 The Dance Experience
- TD 135 Introduction to Design
- TD 171 Acting I or two of TD 115, TD 116, TD 117, TD 119
- TD 281 Directing or TD 285 Choreography
- TD 235 Intermediate Design or TD 365 Adv. Topics in Design
- Culminating Experience (1 course/4 credits): a capstone project designed in consultation with the major advisors in both departments.
- CS Coursework (5 courses; Computational Thinking may be satisfied by placement)
- Computational Thinking: CS 151, 152, 154 or 166 (with a grade of C- or better)
- CS 231 (with a grade of C- or better)
- CS 251/2
- One of CS 267, CS 269, CS 453 or approved alternative
- One of CS 351, CS 353, CS 363, CS 365 or approved alternatives
- Music Coursework (5 courses)
- MU 111
- MU 181
- MU 182
- MU 282
- Two semesters of applied lessons (same instrument, for credit)
- Culminating Experience (4 credits/1 course): MU 491 or MU 492 capstone project, developed in consultation with the major advisors in both departments.
- Computational Thinking: CS 151, 152, 154 or 166 (with a grade of C- or better)
- CS 231 Data Structures and Algorithms (with a grade of C- or better)
- CS 251/2 Data Analysis and Visualization
- One 3 or 4 credit 200-level or higher CS course
- One 3 or 4 credit 300-level or higher CS course
- A course numbered 400 or above, or
- an independent study or capstone course of at least 4 credits in the student's major department with a significant computing component, or
- two 300 level courses.
- Foundation Courses (3 courses: some may be satisfied by AP or other placement)
- Computational Thinking: CS 151, 152, 154 or 166 (with a grade of C- or better)
- MA 160 or MA 165
- SC 212
- Core Courses (3 courses)
- CS 231 (with a grade of C- or better)
- CS 251/2
- SC 321
- Application Courses: one of the following
- CS 341, CS 343, CS 346, CS 363, CS 365, or
- MA 253, or
- SC 306, SC 308, SC 310, or other approved course
Note to students planning to study abroad. If you take a department-approved neural networks course abroad (e.g. a course at DIS), then it will fulfill the core neural networks requirement, but it will not serve as a pre-req for CS443/4 at Colby. That means you may take neural networks abroad and then take CS343 and CS443/4 at Colby, or take neural networks abroad and any other AI sequence at Colby.
A student majoring in Computer Science with a Concentration in Artificial Intelligence may not also major in Computer Science.
Major in Data Science
The data science major equips students with the analytical tools and capacities needed to interact with real-world data in a research environment that is changing and growing very quickly.
A student majoring in economics or psychology who has completed the second semester of the respective statistics/methods sequence need not take Statistics 212. A student majoring in data science may not also major in computer science, statistics, computational biology, computational psychology, environmental computation, music–interdisciplinary computation, or theater and dance-interdisciplinary computation. A student majoring in data science may not minor in computer science or in statistics.
Major in Computational Biology
The Computational Biology major is intended for students interested in industry or post-graduate work in that area. Computational biology is a broad term describing many areas where computation is used to model or analyze biological systems. These include: mathematical and computational modeling of cells, cell networks, individual organisms, and ecosystems; the analysis of genomes, their evolution, and the relationships between species and ecosystems; and understanding the expression of genomes in response to growth, stress, and other environmental factors.
Major in Environmental Computation
The interdisciplinary major in environmental computation provides an introduction to environmental studies as a discipline as well as training in computational techniques used in environmental policy and science. Students become familiar with quantitative tools used to investigate environmental problems. The major is designed to provide students with proficiency in computational thinking, the analysis and understanding of environmental systems, challenges, and solutions, and in the design and implementation of algorithms for modeling and analysis. Students gain experience applying computational thinking and statistical methods to a diverse spectrum of topics in environmental studies and are introduced to the complexity and inter-relatedness of coupled human and natural systems and diverse computational environments. Diverse electives allow students to explore environmental topics in depth, including agriculture and food, conservation science, energy and climate, environmental humanities, marine and freshwater conservation, and public health.
Major in Computational Psychology
The interdiscplinary major in computational psychology provides a strong foundation for students interested in applying advanced computational modeling an analysis techniques to problems in human pscyhology and cognitive development.
Major in Theater and Dance - Interdisciplinary Computation
The theater and dance-interdisciplinary computation major focuses on the growing relationship between computation and performance scenography and the multiple applications of software technologies to stage design. It offers a sequenced, stage design-based curriculum while also providing students with exposure to the theory and practice of dance, acting, choreography, and directing. Students should begin by taking Theater and Dance 113 or 114, and Computer Science 151 in their first year, then Theater and Dance 135 and Computer Science 231 (fall) and 251/2 (spring) in their second year. The remaining requirements may be taken in any other semester in consultation with the major advisors in theater and dance and computer science.
Major in Music - Interdisciplinary Computation
The music interdisciplinary computation major gives students the opportunity to pursue the creation of music using digital and advanced computational techniques. Students interested in this major should take the introductory CS and Music courses in their first year.
Minor in Computer Science
The minor in computer science is intended to give students the ability to apply computing and computation appropriately and effectively within their major discipline. The core and electives provide a background in both fundamental and applied CS, and the capstone experience explicitly ties together CS and the student's major discipline.
Core Requirements
Electives
Capstone Experience
The independent study/capstone option must be pre-approved by a computer science advisor.
Minor in Data Science
The data science minor equips students with the analytical tools and capacities needed to interact with real-world data in a research environment that is changing and growing very quickly.
A student majoring in economics or psychology who has completed the second semester of the respective statistics/methods sequence need not take Statistics 212. A student minoring in data science may not major in computer science, statistics, computational biology, computational psychology, environmental computation, music–interdisciplinary computation, or theater and dance-interdisciplinary computation. A student minoring in data science may not minor in computer science or in statistics.
Honors in Computer Science
Honors in computer science is for students who wish to pursue a topic more deeply than may be available in their regular coursework. Honors projects can be significant software projects or research in some area of computer science. Projects that have applications in or ties to other disciplines at Colby are strongly encouraged.
Students who with to pursue honors must have a grade point average of 3.6 in all computer science courses numbered 200 or higher and discuss potential projects with a CS advisor in the spring of their junior year.
The honors project itself consists of two semesters of independent study (CS 483-484), culminating in both a written paper and a colloquium presentation. Students who successfully complete the requirements and receive the recommendation of the department will graduate "With Honors in Computer Science".
Independent Study in Computer Science
An independent study is a course in which a student conducts an independent project under the direction of a faculty sponsor. Independent studies are typically part of a faculty research project or a student honors project. If you are interested in an independent study, please read this document and contact a faculty member to begin a discussion.
