3. How to use these Guidelines
The premise behind the guidelines in this document is that every CS/CE undergraduate should achieve a certain minimum skill level in the basic PDC-related topics as a result of required coursework. One impact of a goal of universal competence is that many topics that experts in PDC might consider essential may be too advanced for inclusion. Early on, our working group’s participants realized that the set of PDC-related topics that can be designated core in the CS/CE curriculum across a broad range of CS/CE departments is actually quite small, and that any recommendations for inclusion of required topics on PDC would have to be limited to the first two years of coursework. Beyond that point, CS/CE departments generally have diverse requirements and electives. Recognizing this, we went beyond the core curriculum and also identified a number of topics that we recommend for inclusion in advanced and/or elective curricular offerings; however, we do not insist that every CS/CE undergraduate student acquire a certain level of literacy in each of these higher-level topics.
Through the feedback on the first version of the curriculum guidelines, we recognized that whenever it is proposed that new topics be included in the curriculum, often the readers automatically assume that something else will need to be eliminated. However, for many of the topics we propose, this is not the case; rather, it is more a matter of changing the approach of teaching traditional topics to encompass the opportunities for “thinking in parallel.” For example, when teaching array-search algorithms, it is quite easy to point to places where independent operations could take place in parallel, so that the student's concept of search is opened to that possibility. In some cases, we are indeed proposing material that may require making choices about what it will replace in existing courses. Since we only suggest potential places in a curriculum where topics can be added, we leave it to individual departments and instructors to decide whether and how coverage of parallelism may displace something else.
The reader should keep in mind that many of the topics discussed in this proposal can appear at multiple levels in the curriculum. Upon seeing a topic, the reader should try not to make a premature judgment regarding its suitability for an undergraduate course. Rather, the reader should consider where and how aspects of the topic might naturally be blended into a suitable context to facilitate the move to holistically allowing students to develop a capacity for parallel and distributed thinking. Further, the suggested level of proficiency for a topic may be achieved though coverage in progressively increasing depth, spread over several modules in one or more courses.
For each of the topics, we suggest where and, in many cases, how it can be covered in a curriculum. These are suggestions and examples, rather than prescriptions, with the goal of illustrating possibilities and encouraging the reader to think about multiple approaches. The curriculum guidelines are not meant to specify precisely where each topic is addressed. Our intention is, rather, to encourage instructors to find as many ways as appropriate to insert coverage of the indicated PDC topics into core courses. Even comments of a few sentences about how a topic under discussion can be seen from a new perspective in a parallel or distributed context, when judiciously sprinkled throughout a course, will help students to expand their PDC thinking. Students can start to think in parallel and distributed terms when they sense that their instructors are always conscious of the implications of parallelism and distributed computing with respect to each topic that is covered in their courses, including topics in which the parallel or distributed content may not be obvious.
In summary, we recommend that instructors make every attempt to incorporate PDC ideas in existing courses, rather than change the courses drastically. The recommended topics can be covered up to the recommended level of depth in many ways and across multiple combinations of courses; our course recommendations are simply our best guesses of the courses where certain topics may fit in a typical curriculum. The learning outcomes are meant to be satisfied at the end of the curriculum and not necessarily at the end of any particular course.
We summarize the notations and conventions used in the curriculum guidelines that follow in the subsequent sections.
3.1 Notations and Conventions
Each table enumerates the broad categories of concepts in Sections 4-8, and breaks these down to narrower ideas and topics, some to multiple levels of detail. In addition, a topic also contains a Bloom Level to indicate a level of coverage for the topic, a (set of) course(s) in which the topics could be covered, and learning outcomes and pointers to achieving them. We briefly explain each of these considerations below.
Concept Format: The hierarchy of concepts is indicated in the tables as follows:
- Top level topic groups are shown in bold.
- Second level topic groups are shown in italics.
- Third level topics, which sometimes have subtopics, are shown in regular text.
- Fourth level sub-topics are shown with bullets.
This hierarchy, whose depth varies across topics/concepts, reflects the need to elaborate on certain ideas more than others. In most cases, details (Courses, Bloom levels, etc.) are provided for the lowest level of the hierarchy. In some cases, higher levels of the hierarchy also provide some of this information, where appropriate.
Courses: The courses to which topics are mapped are broadly divided into “Core Courses” and “Advanced Courses.” This separation and the listing of courses below is not a rigid partition, rather it is a rough separation of ideas into commonly used course names. With the recognition that the names of the course and their coverage vary widely across institutions, the reader should interpret the “courses” in a manner that is most useful for his/her particular context. In this setting, courses are listed in order of likelihood of where the topic can be included. Once again, it should be noted that coverage of an individual topic/concept may span multiple modules in a course, or multiple courses.
- Core (lower level) courses include:
- CS1 Introduction to Computer Programming
- CS2 Second Programming Course in the Introductory Sequence
- DS/A Data Structures and Algorithms
- Systems Introductory Systems/Architecture Course
- Advanced/elective courses include:
- Algo2 Elective/Advanced Algorithm Design and Analysis
- Arch2 Advanced/Elective Course on Architecture
- Compilers Compiler Design
- DB Database Systems
- DistSystems Distributed Systems
- Lang Programming Languages/Principles
- Netw Communication Networks
- OS Operating Systems
- ParAlgo Parallel Algorithms
- ParProg Parallel Programming
- SwEng Software Engineering
Bloom Levels: The level of coverage and expected learning of each topic is expressed using Bloom’s classification1 with the following notation2:
K= Know the term (basic literacy)
C = Comprehend so as to paraphrase/illustrate
A = Apply it in some way (requires operational command), analyze the concept and be able to use it in other settings.
The indicator “N” denotes a topic whose coverage is best deferred to a non-core advanced course.
Learning Outcomes and Teaching Suggestions: These indicate a rough expectation of student understanding of the topic at the end of the curriculum. In many cases, this column of the tables often also includes suggestions to the instructor of possible ways to explore the topic. To provide better clarity and context, the learning outcomes themselves are separated for core and non-core courses.
1 (i) Anderson, L.W., & Krathwohl (Eds.). (2001). A Taxonomy for Learning, Teaching, and Assessing: A Revision of Bloom's Taxonomy of Educational Objectives. New York: Longman, (ii) Huitt, W. (2009). Bloom et al.'s taxonomy of the cognitive domain. Educational Psychology Interactive. Valdosta, GA: Valdosta State University. http://www.edpsycinteractive.org/topics/cognition/bloom.html
2 Some advanced topics are identified as “N” as being “not in core” but which may be included in an elective course.