Creating Environments for Computational Researcher Education
The overall goal of this White Paper is to provide guidance that will help institutions create an undergraduate environment that supports the acquisition and internalization of the computationally-oriented researcher mindset. We addressed overall directions rather than comprehensive details, not a curriculum design. The committee tried not to duplicate work being done by related efforts, such as the ACM/IEEE Computer Science Curricula 2001 report/2008 update, or any effort having to do with K-12 education such as ACM’s Model Curriculum for K-12 Computer Science and NSF’s CS/10K Project, whose goal is the revision of the AP computer science course. Instead, the work was complementary to these efforts, providing a specific focus in line with the overall goal of computationally-oriented education at all levels in the 21st century. Computer science departments take on a new and critical role as identifiers and promulgators of the core set of cognitive skills and computational concepts that inform various computational-X programs, independent of their domains.
Three major mechanisms for meeting this goal are: 1) develop flexible curricular structures that can more easily reflect and adapt to change, 2) provide a “research-oriented” environment in the undergraduate program, and 3) support the assimilation and putting into practice of enduring cognitive skills and core concepts over four years and different contexts through the deepening process of building mastery.
We encode these mechanisms into six recommendations, arranged into three thematic groups:
- Introduce students to computational thinking by foundational courses that address student interests within the fundamental range of computational thinking concepts and skills.
- Re-factor computer science curricula to provide a flexible and adaptable range of options for computationally oriented directions in any domain.
- Identify cognitive, mastery, and research skills that should pervade the entire curriculum, from introductory courses through the advanced courses taken by seniors heading to graduate school.
1. Introductory Courses – addressing a broad range of student interests
Address student interests while at the same time ensuring that these courses address a significant subset of the fundamental range of concepts and skills that comprise computational thinking.
Use these courses to instill a set of cognitive skills such as learning how to create, validate, and establish relationships among abstractions from data and information on hand, a key skill in effective modeling, simulation, and validation. This skill in working with abstractions, in turn, undergirds both the scientific method and computational thinking, and should be a part of every computationally oriented course. The differences among such courses help to reinforce the underlying skills as students meet the same concepts in different contexts.
Other examples of cognitive skills include: working with the tradeoffs involved with different representations; moving, where appropriate, from a declarative understanding of a problem to an imperative understanding of that problem; reducing computationally intractable problems to related tractable problems; and building, simulating, and validating computational models that shed light on important questions.
Refactoring Computer Science Curricula
2. Core/Foundation for All Computer Science Graduates—lean core with focus on enduring concepts, techniques, and skills
A relatively lean core emphasizes foundational concepts and skills while allowing students more time to explore areas in depth, both by taking courses and by engaging in undergraduate research. Additionally, a lean core makes it easier for students with multidisciplinary interests to pursue a joint major [See Recommendation 4 – Specialization: Integrated Joint Majors] while still sharing a common experience with computer science majors.
3. Specialization: Tracks, Threads, and Vectors – flexible approaches to gaining understanding and skills
Define sets of meaningful specializations to permit students to pursue their interests in a context that guides their development while providing strong motivation. Ensure that these ‘tracks’ are specialized enough that a course sequence can lead to a student attaining some reasonable depth in the area but broad enough that someone in a company or graduate school will be able to fit it into their institutional context.
4. Specialization: Integrated Joint Majors – deep collaboration among disciplines
Coherent, integrated multidisciplinary, inter-departmental joint majors provide a balanced approach that addresses the differences in intellectual culture, concepts, and strategies between different fields by establishing the common ground between them. Use these integrated joint majors to provide a creative synthesis beyond that which can be provided by a computer science department alone, one that blends the cultures and mindsets of multiple departments and synergistically establishes new techniques for problem solving.
Establishing Mastery across the Curricula
5. Design Under Constraints and the Gaining of Mastery – deepening the skill set
Provide students the ability to attain mastery by gaining experience in learning new technologies and techniques, building and analyzing artifacts, and learning to understand design as an iterative process that involves evaluating tradeoffs, analyzing system performance, and testing at each step. Create design and development experiences that tap into the actual interests of the students within a structure that both rewards effort and requires debugging/dealing with the uncertainties and approximations of real-world non-determinacy.
6. Attracting, Selecting, and Preparing Students for Research Careers – developing computationally-oriented researchers
Skillfully introduce research problems and their intellectual excitement in all courses, thus helping to entice potential research students by disabusing them of the notion that our field has become routinized. Successful courses that attract and excite students present new concepts within the context of the ongoing research of the R&D community.
Combine explicit research skill training with an apprenticeship approach to acculturate future researchers to their communities of practice. Provide systematic guidance in the practices of computationally-oriented research from freshman year through graduation combined with the support provided by close relationships with graduate students at all levels, faculty and other members of research groups.”
The White Paper contains a wealth of resources to help individual departments and institutions develop approaches that reflect their culture, goals and resources:
- Each recommendation section contains background issues, examples, and solution approaches, with the resulting recommendations summarized at the end of the section.
- The complete recommendation set is provided as a single document in Appendix A to give a sense of the set as a whole.
- The references (Appendix B) contain both a bibliography and the complete set of all the URLs that are mentioned in the report.
- The White Paper and the appendices contain descriptions of exemplar courses and curricula.
- The index supports both search and browsing modes through extensive ‘See Also’ trails.