Learning Goals for the Computer Science Major

I. A student graduating from Middlebury College with a Computer Science major will:

  1. Have critical thinking skills to solve problems by developing and implementing algorithms.
  2. Be able to analyze the inherent complexity of computational problems as well as the complexities of their solutions.
  3. Be able to design, implement and test computer programs that solve substantial computational problems.
  4. Be able to communicate clearly in written and oral form.
  5. Be able to work effectively on a team.


II. A student graduating from Middlebury College with a Computer Science major will also have a solid knowledge and understanding of the following concepts:

  1. Abstraction to manage complexity.
  2. Algorithmic problem-solving: an ability to design, code, analyze, and prove the correctness of algorithms using recursive divide-and-conquer, dynamic programming, and greedy approaches.
  3. The conceptual organization of computers—including both computer architecture (the hardware level) and operating system issues.
  4. Data storage on a computer—including the digitization of analog information.
  5. Computer programming—including working knowledge of at least two programming languages in different paradigms.
  6. Models of computation—including NP-completeness and computability and the practical significance of both.
  7. Recursion and induction.
  8. Data structures: an ability to use and implement fundamental abstract data types including queues, stacks, balanced search trees, hash tables, and graphs.
  9. Applications of computing: an understanding of how computers, algorithms, programs, and/or data structures are used in several application areas.

Department of Computer Science

McCardell Bicentennial Hall
276 Bicentennial Way
Middlebury College
Middlebury, VT 05753