# Design Patterns for CS Education/Design Patterns
## Introduction to Design Patterns

A design pattern describes a problem that occurs over the time in a specific context and it pairs the problem to a solution. Usually these pairs of problem-solutions can be used in larger contexts as well. The solution is usually a general term and the details are left with those who apply the pattern or is elaborated by other low-level patterns. The solution has different definitions in different contexts for example, in production fields solution can be a new (quite simple or very complex) thing or an artifact, and in practical fields such as education a solution could be a method rather than a thing. Also, the important fact about the design pattern is that the body of the problem should include a rationale (drawing on research, theory, experience, etc.). When the patterns are organized and connected to each other into a comprehensive and sequential order it is called Pattern Language.
Generally the core of a design pattern is: “for problem P, under circumstances C, solution S has been known to work”. Design patterns create a two-way bridge between theory and practice by relating practical wisdom to theory and projecting theory into practice.
This whole idea of design pattern paradigm and pattern languages was proposed by mathematical and architectural works of Christopher Alexander. His main aim was to externalize the knowledge to gather and generalize the solutions and allow other members to collaborate and discuss their ideas about it. Here is his definition of design pattern in his words: “Each pattern describes a problem that occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.” (Alexander et al, 1977)
The definition of Design pattern at the highest level has three aspects which are: Normative: it is a meta-design tool that highlights key issues and methods to solve them Descriptive : it describes about problems and their solutions Communicative: It enables different communities to discuss about problems and their solutions

## Peer Learning Design Patterns for CS Education

In this section our emerging peer learning design patterns based on our experience with active learning in CS education is presented, which are structured by the literature on design patterns and team-based learning. These patterns which focus on a gap in existing CS educational design patterns and the issues related to the successful use of teams for peer learning in active learning classroom, are derived from 3 years of applying strategies for flipped classrooms in undergraduate and graduate CS programs [3]. Our current set of design patterns emerged through 3 workshops held in 2016. Each workshop was attended by 5-10 faculty actively implementing flipped classroom strategies. During the workshops the faculty were given a template for the design patterns and some sample design patterns, and were asked to modify the template and create patterns from their own teaching experiences. In each workshop the pattern template and the design patterns were revised and expanded, providing the starting point for the next workshop.
Our active learning design patterns fall into 2 major categories: course specific active learning patterns and general active learning patterns. Course specific active learning patterns are specific to a type of learning in CS education. So far we have three types of course specific patterns:
1. Learning to code
2. Learning computational thinking concepts
3. Learning to design
General active learning patterns can be applied to any course. The instructor can use any one or combination of patterns to facilitate a successful active learning class. So far we have seven types of ‘general’ patterns:
1. Learning about learning in active learning
2. Preparation for in class active learning
3. In-class active learning
4. Teams for peer learning
5. Lectures for active learning
6. Quizzes for active learning
7. Assessments for active learning

### Peer Learning Design Pattern Template

Our design pattern template for peer learning in active learning classrooms is derived from 3 sources:
1. Design pattern templates from Goodyear [4] and Alexander [5].
2. Our workshops on emerging patterns in our experiences.
3. Research on teams in education [6,7,8].
Goodyear [4] presents a template for pedagogical design patterns adapted from Alexander’s patterns [5]. Goodyear’s template includes: problem, solution, and rationale. We developed a template for our patterns that includes 5 attributes: pattern name, problem, solution, rationale, and potential pitfalls. This template is shown in table 1, with the attributes associated with “Lightweight Teams” [9].
Table 1. Design Pattern Template, showing the Lightweight Teams Pattern
* Pattern Name:Light weight teams
* Problem: Students need help learning to collaborate. Typically, the learning experience while collaborating in teams is negatively affected the importance of the grade.
* Solution: Assign students to groups and then assign the seating in the first day of classes so that the groups are sitting at the same table. Create in class activities for groups that do not have a big contribution to their grade.
* Rationale: The students do not feel the pressure to perform well to get a good grade, and this reduces the stress of who is on their team and fosters successful social learning.
* Solution: Create teams for in-class activities that do not have a significant contribution to the final grade.
* Potential pitfalls: Students will be awkward in introductory courses, especially in the beginning of the semester.
We extended the template for our design patterns for peer learning to include dimensions within the problem attribute and the solution attribute. This extension reflects the need to distinguish the patterns emerging from our experiences in creating successful peer learning activities informed by the literature on optimizing the performance of teams in education. We illustrate the use of these dimensions in our patterns with the lightweight teams pattern shown in table 2, that extends the generic concept in table 1.
Table 2. Lightweight Teams pattern with peer learning dimensions.
* Pattern Name: Lightweight Teams
* Problem: Students need help learning to collaborate. Typically, the learning experience while collaborating in teams is negatively affected the importance of the grade.
* Level: Introductory
* Semester: Any
* Activity type: Programming, Quiz, Discussion, or Problem solving
* Solution: Assign students to groups and then assign the seating in the first day of classes so that the groups are sitting at the same table. Create in class activities for groups that do not have a big contribution to their grade.
* Formation: random
* Size: medium
* Composition: random
* Duration: entire semester
* Individual grade: grade for individual contribution
* Contribution to final grade: small
* Activity progression: individual to group
* Roles: equal
* Rationale: The students do not feel the pressure to perform well to get a good grade, and this reduces the stress of who is on their team and fosters successful social learning.
* Potential pitfalls: Students will be awkward in introductory courses, especially in the beginning of the semester.

### Peer Learning Design Patterns

In this section we report on the design patterns across all of our categories of general and course specific patterns that are related to peer learning. In this early stage of identifying our active learning patterns, we focused on the benefits of having student engage in lightweight teams in the introductory courses.
The design patterns we have developed so far are:
Lightweight Teams: This is a general pattern for creating teams with little affect on the final grade.
Forming lightweight teams: Forming the groups in lightweight teams is a challenge for the instructor. This pattern provides problem-solution patterns for forming the successful teams of students.
Size of lightweight teams : This pattern offers solutions for the problem that students are reluctant to talk and participate in a large class.
Training for lightweight teams-icebreaker : This pattern includes solutions to help students learn how to behave effectively in lightweight teams.
In-class lightweight teams - progression: Students are worried about team-based activities because their grade depends on other students. This pattern includes some solutions for individual quizzes after encouraging group discussion.
Lightweight teams for final exam prep: Students always want or need guidance for final exams. It is difficult for the teacher to completely reiterate the entire semester. Students need a way to share knowledge, discuss what might be on the final, with a new perspective. This pattern has some solutions for this problem.
Student prepared short lectures: Students don’t learn by just listening. This pattern talks about how the students collaborate on producing a short video that describes that topic.
Active learning quizzes: Normally taking a quiz tends to be about individual assessment rather than about learning. This pattern offers solutions to use quizzes as a learning tool in active learning classes.
Peer critique: This pattern has some solutions to help students learn how to critique their peer’s work.
Peer instruction: Some of the students learn the course content better and faster than other students or some students learn better from the peers by try and error than from the instructor. This pattern offers some solutions to help students learn from each other.
Group discussions: This pattern offers solutions to help students share, question or criticize their knowledge during the class.
Broadening from Small to large group discussions: During the active learning classes student’s discussions and collaborative learning is limited to their own group at the same table. This pattern offers some solution to broaden the discussion from groups to the class.
Clicker questions activity: Students are not necessarily aware of their conceptual misunderstandings as they are studying course materials and concepts. This pattern describes how to engage students in actively taking exam-like questions individually, and then discuss it with their team to learn how their peers answered the questions.
Active test: Writing large numbers of questions can be difficult for a teacher, and students can be surprised by the type of questions, or what is considered important to know. This pattern has solutions by asking groups of students to identify and write relevant test questions and use them as question bank.
Pair programming : these patterns provide a structure to help students work together on a programming task.
Gender paired programming: Males and females have a different dynamic when working together. In early programming courses males can tend to dominate the activity. This pattern provides a solution by pairing female students with each other.
Resource:
[1] Goodyear & Retails, 2010, Technology enhanced learning book
[2] http://www.ld-grid.org/resources/representations-and-languages/design-patterns
[3] Maher, M.L., Latulipe, C., Lipford, H., Rorrer, A. 2015. Flipped Classroom Strategies for CS Education, Proceedings of the 46th ACM Technical Symposium on Computer Science Education. pp. 218-223. Doi:10.1145/2676723.2677252.
[4] Goodyear, P. 2004. Patterns, pattern languages and educational design.
[5] Alexander, C., et. al. 1997. A Pattern Language.
[6] Michaelsen, L.K. and Sweet, M. 2008. The essential elements of team‐based learning. New directions for teaching and learning, (116), pp.7-27.
[7] Mennecke, B., & Bradley, J. 1998. Making project groups work: The impact of structuring group roles on the performance and perception of information systems project teams. Journal of Computer Information Systems, 39(1), 30–36.
[8] Johnson, D. W., Johnson, R. T., and Smith, K. A. 1991. Active learning: Cooperation in the college classroom. Interaction Book Company Edina, MN.
[9] Latulipe, C., Long, N.B., Seminario, C. 2015. Structuring Flipped Classes with Lightweight Teams and Gamification. SIGCSE '15 Proceedings of the 46th ACM Technical Symposium on Computer Science Education, 392- 397.