CS Student Learning Outcomes
Part I: Goals for all HMC students’ computer science education
- All HMC students will demonstrate the skill of designing, implementing, documenting and testing their own programs and algorithms in order to complete computational tasks.
All HMC Students should be able to:
- Decompose problems into subproblems, create solutions from subproblems and compose solutions to solve composite problems.
- Design, implement and execute algorithms in a programming language.
- Write clear, appropriate and concise documentation for their programs.
- Test software for correctness.
- All HMC students will appreciate the breadth of computer science as a field of study, as well as the breadth of CS’s connections to other fields.
All HMC Students should be able to:
- Describe relationships between computer science and at least three distinct non-CS fields.
- Articulate some of the big questions, answers and ideas of computer science, e.g., (un)computability, models of computation and execution efficiency.
- Explain the relationships among a number of major sub-disciplines within computer science.
- All HMC students will be able to apply and further develop their computational skills outside the classroom.
All HMC Students should be able to:
- Apply computational skills to explore problems of personal or professional interest.
- Perform experiments using computational tools, including specifying a hypothesis, gathering and analyzing data, and clearly presenting results.
- Adapt and extend their computational skills to new contexts as needed in their post-HMC path (e.g., using a different editor/IDE, finding and using appropriate code libraries, learning a new programming language or computational workflow).
Part II: Goals for the computer science major at HMC
- All CS majors will demonstrate competencies drawn from the core of the discipline of computer science. In addition, students will be comfortable and competent with a variety of computing paradigms, platforms, and environments.
All HMC CS Majors should be able to:
- Design an algorithm to solve a problem and reason about properties such as correctness, case-completeness and time complexity.
- Starting from an informal, English language description of a problem, give a fully formal computational description of it and prove something about the behavior of the system.
- Describe the high-level behaviors that occur in the execution of a computer program, recognizing the layers of abstraction involved, including those facets of the system not fully understood.
- Apply computational foundations to a variety of advanced CS topics.
- Demonstrate facility with the hardware, software and computing paradigms commonplace in academic and professional workplaces. This includes designing and writing substantial code corpora in many different general-purpose languages (e.g., C++, Python, Java, Haskell, C, assembly) as well as special-purpose/domain-specific languages.
- Succeed at first-rate graduate schools in CS and related disciplines; and/or at companies, labs and other institutions with leadership roles in the field of computing.
- All CS majors will be able to apply computational and social skills to real-world problems.
All HMC CS Majors will be able to:
- Purposefully and positively engage with project stakeholders outside the HMC community.
- Identify strategies for solving an open-ended problem that are ethical, feasible, and add value, and which are based on pertinent background research and appropriate design.
- Deliver professional work products, including designs, models, software prototypes/products and documentation.
- Attend to relevant project trade-offs along dimensions such as performance, usability, robustness, security and durability.
- Understand, influence, and adapt to non-computational constraints and opportunities that accompany a computational project, including ethical considerations and possible impacts on society. Students will defend their decisions to peers and colleagues.
- All CS majors will have professional skills in writing, visual and oral presentations, both in academic coursework and in open-ended clinical practice.
All HMC CS Majors will be able to:
- Verbally present to professional and lay audiences about a computational challenge, their approach to addressing it and their results.
- Demonstrate team-interaction skills on an open-ended computational project satisfying both internal and external stakeholders.
- Write about computational systems and principles, using language suitable for technical and nontechnical audiences as appropriate.
- Explain the appropriateness of alternative computational-system designs with respect to the social context in which the system would be used.
The CS department revised these goals and outcomes in May of 2021. To create these revisions, we read and researched many other schools’ SLOs. Many of these SLOs have been inspired by and borrow from those. Particular borrowing – and outright homage – comes from Harvard’s “plain-language” SLOs.