Wellesley CollegeWebsiteAcademic Catalog
Computer ScienceDepartment Website
BS Degree in Computer Sciencesource 1source 2
CS Courses
- Comp Program & Prob SolvingorCS 111 (1)introCS 111: Comp Program & Prob Solving
An introduction to problem-solving through computer programming. Students learn how to read, modify, design, debug, and test algorithms that solve problems. Programming concepts include control structures, data structures, abstraction, recursion, and modularity. Students explore these concepts in the context of interactive programs, data processing, and graphics or audio, using the Python programming language.
Intro Computing for the SciencesCS 112 (1)introCS 112: Intro Computing for the SciencesAn introduction to problem-solving through computer programming with special focus on application to problems relevant to physics, chemistry, and biology. Students learn how to read, modify, design, debug, and test algorithms that solve problems. Programming concepts include control structures, problem solving strategies, abstraction, recursion, and modularity. Students explore these concepts in the context of interactive programs, data processing, and graphical and numerical analysis, using the Python programming language. Students are required to attend a 2.5-hour lab where they will apply concepts learned in lecture to study topics at the intersection of chemistry and physics. Topics might include: chemical kinetics, numerical integration, molecular dynamics, computational biology, Monte Carlo techniques, and basic statistical analysis.
- Data StructuresCS 230 (1)introCS 230: Data Structures
An introduction to techniques and building blocks for organizing large programs. Topics include: modules, abstract data types, recursion, algorithmic efficiency, and the use and implementation of standard data structures and algorithms, such as lists, trees, graphs, stacks, queues, priority queues, tables, sorting, and searching. Students become familiar with these concepts through weekly programming assignments using the Java programming language.
- Fundamental AlgorithmsCS 231 (1)algsCS 231: Fundamental Algorithms
An introduction to the design and analysis of fundamental algorithms. General techniques covered: divide-and-conquer algorithms, dynamic programming, greediness, probabilistic algorithms. Topics include: sorting, searching, graph algorithms, compression, cryptography, computational geometry, and NP-completeness.
- Theory of ComputationCS 235 (1)theoryCS 235: Theory of Computation
This course offers an introduction to the theory of computation. Topics include languages, regular expressions, finite automata, grammars, pushdown automata, and Turing machines. The first part of the course covers the Chomsky hierarchy of languages and their associated computational models. The second part of the course focuses on decidability issues and unsolvable problems. The final part of the course investigates complexity theory.
- Foundations of Computer SystemsCS 240 (1-1.25)sysCS 240: Foundations of Computer Systems
This course examines how computers run programs, introducing key software and hardware abstractions and implementations between programming languages and transistors. The course traces representation and translation of data and programs through three broad topics in computer systems: computer hardware implementation, including digital logic, computer arithmetic, and machine organization; the hardware-software interface, including instruction set architecture, assembly code, and the C programming language; and abstractions for practical systems, including the physical memory hierarchy, the operating system process model, virtual memory, and memory management. Students complete extensive hands-on projects in hardware and software systems. Students are required to attend one three-hour laboratory weekly.
- Computer Science Senior Poster Faircapstone
- Honors Thesis (for Honors degree only)capstone
Math/Stat Courses
- Combinatorics and Graph TheoryMATH 225 (1)mathMATH 225: Combinatorics and Graph Theory
Combinatorics is the art of counting possibilities: for instance, how many different ways are there to distribute 20 apples to 10 kids? Graph theory is the study of connected networks of objects. Both have important applications to many areas of mathematics and computer science. The course will be taught emphasizing creative problem-solving as well as methods of proof, such as proof by contradiction and induction. Topics include: selections and arrangements, generating functions, recurrence relations, graph coloring, Hamiltonian and Eulerian circuits, and trees.
Science Courses
Other Courses
- 4 × PE elective
- 9 × Free Elective
Learning goals
Computer science majors upon graduation will be able to:
- Gain foundational knowledge in all areas of computer science, including its theoretical basis, software methodologies, computer hardware, and applications.
- Formulate, analyze, and solve computational problems.
- Apply computational thinking to new problems and adapt to new technologies.
- Communicate technical material, including in a team-based setting.
- Evaluate the impact of computer science on society and draw connections between computer science and other disciplines.