Reviewers' Notebook: Questions
From CSWiki
Throughout this report, we explore a number of issues of interest to the department. Our discussions in preparation for this report raised additional questions. To help our reviewers understand key issues of interest to the department, we begin with some questions, group those by category, and provide a short introduction to ground each category. Most of these categories are explored in more depth elsewhere, although a few are only described here.
Diversifying the Discipline
One of the department's core goals is to support a broad range of students. Our workshop-style introductory curriculum, our active participation in the Grinnell Science Project, our Women in CS lunches and reading groups, and a number of other endeavors speak to this emphasis. However, our results have been mixed.
Q: Are our current activities appropriate?
Q: What other activities might better support a diverse student body in CS?
Courses in the Major
College policy limits us to eight courses in the major. Those eight courses are currently:
- Introductory data structures and algorithms (CSC 152 Fundamentals of Computer Science II or CSC 153 CS Fundamentals)
- C and Formal Methods (CSC 201 Memory Management, Data Representation, and Formal Methods)
- An under the hood course (CSC 211 Architecture or CSC 213 Operating Systems)
- A course with a large group project (CSC 223 Software Design or CSC 362 Compilers)
- Appropriate math background (MAT 218 Combinatorics)
- An upper-level algorithms course (CSC 301 Algorithms)
- An upper-level programming languages course (CSC 302 Programming Languages)
- An upper-level theory course (CSC 341 Automata, Computational Complexity, and Formal Languages)
There are also a few "hidden" requirements: CSC 152 has CSC 151 as a prerequisite, and MAT 218 has linear algebra and two semesters of calculus (including multivariable calculus) as prerequisites.
In our curricular discussions to prepare for this review, we talked about the following revised requirements for the major. These include a shuffling of the introductory sequence (see below), removal of the formal methods from the imperative programming course, adding a new course for the group project requirement (CSC 225 Databases and Web Applications Design), and moving compilers from the group project requirement into a Programming Languages requirement.
Q: Is this an appropriate curriculum?
Q: Have we introduced any problems in changing curriculum?
Q: Are we missing any key topics from the core?
Q: Is there anything we can delete from the core to give students more options?
Introductory Sequence
Our current introductory sequence is three courses: CSC 151 (Fundamentals of Computer Science I, emphasizing functional programming in Scheme), CSC 152 (Fundamentals of Computer Science II, emphasizing data structures and algorithms through object-oriented programming in Java), and CSC 201 (Memory Management, Data Representation, and Formal Methods, using C and Gries-style analysis). We also offer CSC 153 (Computer Science Fundamentals), which combines CSC 151 and CSC 152 into a single course for students with significant background (primarily AP).
In the new sequence, students will still begin in CSC 151 with a functional approach. Students will then move to the C course where they will learn some data structures and some GNU/Linux shell. In the third course, students will study the object-oriented paradigm and will study algorithm analysis in a bit more depth. The rationale for the change appears in section 5.4.
Q: Does the new sequence make sense?
Q: Now that we are inserting a course (data structures in C) between the two courses, what should we do with 153? More generally, what should we do with students who have significant experience in Java or C++?
Q: Is one offering per year of CSC 207 sufficient?
Languages
Students finish the introductory sequence knowing three languages that illustrate three important paradigms: Scheme (functional), C (imperative), and Java (object-oriented). We revisit Java in the Software Design course. We revisit all three languages in the Programming Languages courses. Other courses use languages at the discretion of the instructor or the student. Some students have expressed concern that they do not learn C++ or C#. Others have expressed concern that they do not learn any one language in depth. Most students indicate that they appreciate this breadth because they are equipped to learn any new language.
Q: Is this the right set of three core languages?
Q: Are there compelling reasons to sacrifice this breadth for more depth?
Q: How important is it that students gain experience in a scripting language, such as Ruby, Python, or Perl?
Core Systems Courses
While we consider both architecture and operating systems almost essential for an undergraduate computer science major, our limit of eight courses and the size of the department make it difficult to require both architecture and operating systems. We do recommend that students take both. The department continues to discuss how the alternation of architecture and operating systems fits within the core curriculum, but has not reached a better solution.
Q: Is there a better solution to this problem?
Electives
Under current staffing, we can offer 17 or 18 courses per year. We must offer a section of Tutorial each fall and a section of TEC 154, The Evolution of Technology, each spring. Under the current curriculum and the proposed curriculum, CSC 211 and CSC 213 are offered in alternate years. Under the new curriculum, CSC 302 and CSC 362 are offered in alternate years, as are CSC 223 and CSC 225. The proposed schedule for the new curriculum appears in an appendix. Under this schedule, we offer four electives (Artificial Intelligence, Computer Networks, Computational Linguistics, Human-Computer Interaction), with each offered every-other year.
We have been approved to expand the department by one person as partial expansion and partial leave-proofing. (That is, in years in which one or fewer people are on leave, we will not hire temporary faculty.) In some years, that will give us the opportunity to offer one or two additional courses. We have indicated that we would like to prioritize interdisciplinary offerings, such as Bioinformatics or Value-Sensitive Design.
Q: Are there other important electives to offer?
Assessment
In the past dozen or so years, the department and the College have tried a variety of forms of assessment. At the time of our last re-accreditation, many departments (including Computer Science) indicated that they would collect student essays in a few courses and then evaluate those essays. In the time since, every department has found that evaluating such essays is too time-consuming to be of value. CS had students take the ETS majors field test, but received little useful information from that test (since our students as a group regularly scored in the 96-99th percentile, even on a Sunday after a major campus-wide event, there was little opportunity to show improvement). We know that some CS departments use an industry panel to evaluate the program, but we do not find such an industry focus appropriate for Grinnell. We also worry about the observations from our graduates that many industry hiring decisions seem driven by particular technologies, rather than general skills. Our most successful assessment seems to be the exit interviews we conduct with our majors (with a participation rate of about 50%), but we have not systematically tabulated those interviews.
Q: What assessments are appropriate for a liberal-arts computer science program?
Q: How does one manage such assessments without putting too much burden on faculty?
Q: If exit interviews suffice, is there an appropriate way to tabulate the information from those interviews?
Internships and Post-Graduate Opportunities
In the alumni survey and exit interviews, many responses suggested that we should provide more internship opportunities for our students.
In the alumni survey, many responses suggested that we should provide students with more support for finding employment or choosing graduate schools. Traditionally, the Career Development Office (CDO) is most responsible for helping students with these kinds of activities. CDO also has responsibility for maintaining lists of alumni who might be willing to support our students as they look for jobs. Clearly, however, our students feel that because CDO has to support a wide range of majors, they do not have sufficient depth in their support for CS students.
In the past, we have not had formal sessions on graduate school. More recently, we've started to have such sessions, particularly when recent graduates currently in graduate school visit campus.
Q: How should the responsibility for building and maintaining an internship program be shared between the department and the Career Development Office?
Q: What kind of support program would be appropriate for our students going on to industry?
Q: What kind of support program would be appropriate for our students going on to graduate school?
Spaces
We were fortunate to obtain an excellent variety of new spaces in Phase II of the science building construction. While we have a high-level vision for every space and a detailed vision for many, we would appreciate feedback on a few spaces in particular.
Q: In what ways can we make the best use of the science learning center?
Q: In what ways can we make the best use of the capstone and systems classrooms?
Q: Do you have any other suggestions for using our new spaces?
Digital Library Resources
Although Grinnell gets the full ACM Print Journal subscription and selected IEEE Computer Society publications, we do not have digital library subscriptions to either the ACM Digital Library or the IEEE Computer Society. Because of the pricing of these subscriptions, it seems much more cost effective to buy individual students memberships in these organizations. Our librarians have asked us to consider the relative value of print and digital subscriptions.
Q: What does your institution do about access to core digital library resources?
Q: What would you recommend that we do?
Software and Hardware Support
The department now has nearly 100 workstations (mostly Linux or dual-boot Linux/Microsoft Windows, with a few Macintosh workstations thrown in). In addition to the standard suite of Linux applications, our workstations also include Matlab, Mathematica, and Maple.
Hardware and Microsoft Windows support comes from Information Technology Services (ITS). Linux support is part of John Stone's responsibilities (approximately half of his contract is technology support). Stone also supports Mathematics and Statistics (approximately 80 workstations) and Physics (approximately 20 workstations). Stone also runs the Web servers for Computer Science and Mathematics/Statistics and manages the Web sites for both departments. Stone also manages other network services, such as the departmental wiki, mail, MySQL, and Subversion servers. In the past year, the size of the CS and Math/Stats network has doubled.
Q: Is this the right amount of support for this size of a system?
Q: Is there an appropriate way to provide student support for system administration tasks?
Q: What challenges can we expect from the larger network and the split support responsibilities?
Connecting Students to Professional Organizations
There are a number of opportunities to build student chapters (or the equivalent) of computing-related professional organizations, such as ACM, SIGGRAPH, and ACM-W.
Q: Is it worth the effort to build and coordinate student chapters for these organizations?
Q: Which should we prioritize?
ACM Programming Competition
In recent years, self-motivated groups of students have registered for the ACM Programming Competition and transported themselves to the competition. The department has funded the costs of travel. However, many of us have concerns about the competition. Some are worried that the competition teaches bad programming habits (get it done quickly, rather than get it done thoughtfully). Some are worried that the competition might be off-putting to women.
Q: What level of involvement in the ACM Programming Competition is right for this department?

