Learning Goals
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.
- Be able to recognize, identify, and make informed judgments about societal and ethical issues that arise from the uses and development of computing technology.
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.
- Responsible computing: an understanding of the societal context of computing, including bias within models and algorithms, the impact of a lack of diversity within datasets and development teams, and the overall role of algorithms in shaping daily life.