Computer Science Learning Objectives
The goals of our major include providing our students with the following abilities:
- To conceptualize multiple views of computational problems, to develop computational solutions grounded in theory, and to evaluate their solutions using a range of metrics.
- To work alone and in teams to identify, formulate, and solve computing problems.
- To gain a firm grounding in the core areas of computer science.
- To apply the knowledge gained in core courses to a broad range of advanced topics in computer science, and to develop the ability to learn sophisticated technical material independently.
- To be able to communicate technical information both orally and in writing.
- To understand the theoretical, practical, and ethical ramifications of computational solutions to problems, and to be aware of current research developments in computer science.
Assessing the goals
Each of our goals is assessed in multiple ways by students satisfying the requirements of the major. Most of these goals are tested in each of the core courses of the major, as well as the senior seminar. For example:
- Goal 1 is assessed via problem sets and exams in Data structures, Algorithms and Introduction to Languages and Theory of Computation, all of which are required courses in the major. Here are a few examples. In Data structures and Algorithms, students learn to design algorithms and data structures to solve computational problems. Students are assessed on their ability to analyze their algorithms for time and space efficiency in order to determine the ideal solution given the problem constraints. As an example of a different sort, in Introduction to Languages and Theory of Computation students are assessed on their ability to implement parsers based on the theories learned in the course. Based on student performance in these required courses, we believe students are meeting this goal.
- Goal 2 is assessed in virtually all of our courses, both required courses and electives, as students are assigned problems and work out computational solutions to homework, lab, and exam problems. Many courses encourage students to work together in teams on implementing programs, for example, teams are explicitly required in the required Computer Systems course, Computer Systems.
- Goal 3 is attained by requiring students to take courses in the three core areas of computer science. Assignments and examinations show that students are indeed exhibiting substantial mastery of those areas.
- Goal 4 is assessed by student performance in three or more electives, by attendance at computer science colloquia, and by participation in the senior seminar. In senior seminar, students read and present research papers in different areas of computer science and write a survey paper summarizing the development of a sub-field. In the CS colloquium, students are presented with current research in computer science, experiences of alumni in the profession, and an overview of computer science graduate school, all of which helps prepare them for life after Pomona.
- Goal 5 is assessed throughout our advanced courses. Many electives require final projects that result in oral presentations and / or substantial written reports. All seniors make presentations in the senior seminar on current research in computer science and write a survey paper summarizing the development in a sub-field chosen by the student. Overall, our students have learned to communicate effectively orally and in writing.
- Goal 6 is assessed by evaluating student understanding of research papers read in Senior Seminar. Students are also exposed to current research developments by their required attendance at the Computer Science colloquium. Based on our evaluations of student presentations, the survey paper they produce in Senior Seminar and the questions asked of colloquium speakers, we believe students are meeting this goal.