Data Structures and Algorithms

CS4388.01
Course System Home Terms Fall 2025 Data Structures and Algorithms

Course Description

Summary

How do we organize data to solve complex problems efficiently? This course studies the fundamental structures and algorithms that form the cornerstone of computational problem-solving. Building upon the programming foundations established in CS1, we will explore how algorithmic thinking and sophisticated data organization enables us to tackle increasingly challenging computational problems.

In this course, you will analyze algorithm efficiency through complexity analysis, gaining crucial skills for optimizing solutions. You will implement and evaluate classic data structures such as arrays, lists, hash tables, trees, graphs, and stacks, and understand their strengths and appropriate applications. Through exercises, you will develop the ability to select and apply the right algorithmic approaches to diverse scenarios.

This course emphasizes both theoretical understanding and practical implementation. You will strengthen your programming abilities while developing a deeper appreciation for algorithmic elegance and efficiency. The analytical skills gained here are highly transferable, valued across disciplines, and essential for advanced study in computer science.

Topics include: algorithmic complexity, sorting algorithms, recursion, hash tables, searching algorithms, greedy algorithms, and dynamic programming

Evaluation will be based on active engagement, a midterm, and a comprehensive final examination.

Learning Outcomes

  • Use complexity analysis to evaluate and compare different algorithmic solutions.
  • Implement fundamental data structures including arrays, lists, hash tables, trees, graphs, and stacks to organize and manipulate data efficiently.
  • Apply appropriate data structures and algorithms to solve computational problems based on their specific requirements and constraints.
  • Design solutions using algorithmic paradigms such as recursion, greedy algorithms, and dynamic programming.
  • Evaluate the trade-offs between different data structures and algorithms through theoretical analysis and practical implementation.

Prerequisites

CS2139 or equivalent.

Please contact the faculty member : darcyotto@bennington.edu

Instructor

  • Darcy Otto

Day and Time

TU,FR 2:10pm-4:00pm

Delivery Method

Fully in-person

Length of Course

Full Term

Academic Term

Fall 2025

Area of Study

Credits

4

Course Level

4000

Maximum Enrollment

20

Course Frequency

Every 2-3 years