Computer Sciences Learning Outcomes/Goals: 1. the ability to apply the engineering process to solve complex and unfamiliar problems. a. Able to evaluate the relative merits of different solution methodologies for a given problem. b. Able to produce a problem specification. c. Able to design a solution for a given problem specification. d. Able to implement a solution. e. Able to effectively perform all of the above tasks as a member of a team. 2. an understanding of the foundations of computer science, a familiarity with current development tools and techniques, and the ability to apply theory in practice. a. understand the foundations of computer science, including logic, algorithms, and core concepts in hardware and software. b. Able to use current software-development tools and techniques. c. Able to learn and effectively use new tools and development techniques. d. Able to choose the appropriate tools and/or techniques to solve a software-development problem. e. Understand computation at different levels of abstraction. 3. the ability to communicate and work effectively with others, both inside and outside the discipline. a. Able to effectively use oral communication b. Able to effectively use written communication c. Able to communicate effectively as part of a team 4. acquired breadth and depth of knowledge in areas outside of computer science, including the physical and social sciences. Assessment Methods: We view the assessment question at two levels: (1) Validating that the list of outcomes properly specifies what a graduate of our program should be able to do; and then (2) Verifying that students who pass the required courses in our curriculum possess these skills, within some level of tolerance, when they graduate With respect to validation the given set was vetted by the CSE Curriculum Committee in Spring of 2004 and is supported by our Strategic Partners Council. Our work on the verification question is still in progress and we have yet to be able to verify each outcome or to make curricular changes based on attempts to measure these outcomes. What follows is a brief summary of our activities working to this end. 1. Outcomes mapped to Courses: We first mapped each of the outcomes to specific courses in our curriculum. This mapping is depicted in the attached spreadsheet. Notice that we restricted the mapping to apply only to courses that are required of every student in our major and that a single X in a cell denotes “some degree” of development of the given outcome in the given course;
whereas a double X denotes a “strong degree” of development. To clarify and refine this mapping, we are specifying, for each outcome O and each course C (such that O maps to C in the chart) that subset of C’s course outcomes that pertain to the development of O. 2. Course-level Outcomes: To date we have developed detailed course-level outcomes for three of the courses listed in the attachment (CSE 231, CSE 232, and CSE 335). For each of these courses, we have also developed mappings from the course-level outcomes to specific exam and homework problems and have been assessing/improving performance at this level. We continue to develop precise course-level outcomes for the remaining courses. Assessment Results 1. weaknesses in traditional approaches to developing skill (e.g., too little time spent introducing and demonstrating the proper use of pointers and dynamic memory allocation/reclamation in our early programming courses). 2. We have also identified topics that could be safely removed from our courses because (while interesting) they did not contribute to the development of a stated outcome and their presence was preventing a more complete coverage of topics that do contribute to said outcomes. 3. The net result is that our program has evolved to treat essential topics in more depth, resulting in students with “higher level”1 analysis/design skills, commensurate with what is expected of engineering graduates. 4. We have also been looking at using fine-grain cognitive objectives to strengthen the linkages between courses in our program and their prerequisites. Indeed, CSE 335 was developed in response to a problem we discovered while trying to assess the linkages between our sophomore- and junior-level programming courses and our (now defunct) senior-level software-engineering course. The discovery of the problem that led to the introduction of CSE 335 followed from our early attempts at assessment, and the resulting changes have greatly improved the quality of our graduates. Action Taken: 1. Changed content of CSE 232: Removed coverage of object-oriented programming topics [which are now developed fully in CSE 335] and increased coverage of dynamic-memory management and the implementation of linked structures 2. Developed CSE 331: Introduced because CSE 232, which was originally tasked with introducing algorithmic complexity and analysis, could not adequately cover these and the many other outcomes that it was charged with covering.
3. Developed CSE 335: Focus point for object-oriented software design, which previously was scattered across the curriculum and never properly assessed 4. Updated the contents of CSE 260: Now includes basic probability, which is needed in our later courses (e.g., CSE 331) 5. Updated the contents of CSE 320: Now includes some essential topics that were covered in a course (CSE 420) that is no longer required 6. Removed CSE 420 as a required course as its content was deemed more appropriate to the outcomes of the Computer Engineering program than to the Computer Science program [modulo the content that we moved into CSE 320]. 7. Improved CSE 498: Instituted tighter connection between industrial sponsors and student teams; now includes more realistic capstone projects 8. Developed CSE 291: Freshman Seminar—Academic development, student development and career preparation for first year students in CSE 9. Developed CSE 491: Senior Seminar—Post-graduation and career preparation for CSE and CE juniors and seniors Results from Action Taken: 1. There is a sense among these clients (Boeing, Microsoft and graduating seniors) that our graduates are more capable software engineers and that (thanks largely to the introduction of CSE 335 and improvements to CSE 498) they are more employable. In fact, many employers now seek to provide capstone projects so that they can get access to our students. 2. Some of the changes have allowed us to introduce new and exciting courses on the cutting edge of computer science and software engineering. For example, we now have two courses on computer security (CSE 425 and CSE 429), a senior-level project course in software engineering (CSE 435), a course on computational linguistics (CSE 475), and a course in information retrieval (CSE 484). While we could always have introduced these courses, the ability of students to schedule them is a direct result of the consolidation of required courses based on our assessment process. Future Plans: 1. We intend to continue formalizing the processes that (to date) have been have been informal at the department, curriculum and course level. 2. One option is to have a yearly meeting of the Dept. Curriculum Committee to formally assess the performance of a sample of students in each of our courses relative to the curricular outcomes listed in (1) above. 3. Continue to engage our stakeholders to refine and adapt the outcomes listed in (1) as the field continues to evolve.