Learning Goals for the Computer Science Major
I. A student graduating from Middlebury College with a Computer Science major will:
- Have critical thinking skills to solve problems by developing and implementing algorithms.
- Be able to analyze the inherent complexity of computational problems as well as the complexities of their solutions.
- Be able to design, implement and test computer programs that solve substantial computational problems.
- Be able to communicate clearly in written and oral form.
- 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:
- Abstraction to manage complexity.
- 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.
- The conceptual organization of computers—including both computer architecture (the hardware level) and operating system issues.
- Data storage on a computer—including the digitization of analog information.
- Computer programming—including working knowledge of at least two programming languages in different paradigms.
- Models of computation—including NP-completeness and computability and the practical significance of both.
- Recursion and induction.
- Data structures: an ability to use and implement fundamental abstract data types including queues, stacks, balanced search trees, hash tables, and graphs.
- Applications of computing: an understanding of how computers, algorithms, programs, and/or data structures are used in several application areas.