Introduction to Computer Science 2: Algorithms and Application
Course Description
Summary
Introduction to Computer Science 2 continues the design-recipe approach started in Introduction to Computer Science 1. We extend our toolkit from structural recursion into generative recursion, abstraction, and algorithmic problem-solving. Students move beyond simple data definitions to work with more sophisticated structures (trees, graphs, sets, maps) while beginning to reason about program efficiency and resource use. We will also learn habits of abstraction: designing functions that consume and produce other functions, developing modules for reuse, and thinking about scalability. Alongside these technical foundations, we connect algorithmic ideas to larger social and intellectual contexts, preparing students to carry both computational rigor and critical perspective into more advanced courses and applications.
Learning Outcomes
- Design and test programs using generative recursion, higher-order functions, and abstraction.
- Work with some abstract data types including lists, trees, stacks, queues, sets, and maps.
- Apply some classic algorithmic strategies (divide-and-conquer, search, sorting, backtracking) and reason carefully about their correctness.
- Analyze efficiency of programs, with attention to trade-offs in time, space, and clarity.
- Practice modular design, building programs that are reusable, composable, and maintainable.
Prerequisites
CS2139: Introduction to Computer Science 1.
Please contact the faculty member : darcyotto@bennington.edu