Integrate well-structured Pair Programming. When students are first learning this technique, enforce the formal rules of pair programming to ensure that each student gets experience in both roles and to decrease the likelihood that one student dominates.
Try Peer Instruction. This is an active approach to teaching and learning that centers around conceptual questions (“ConcepTests”) posed by the instructor and responded to by students. Students first try to answer the question individually. They then discuss the question in small groups and attempt to reach consensus on the answer. Peer instruction encourages students to think critically and analytically by focusing their attention on the underlying concepts rather than the correct answer.
Use Process Oriented Guided Inquiry Learning. POGIL is an active approach to learning designed to guide students to construct their own understanding of key concepts using "explore-invent-apply" learning cycles. Working in small teams, students explore a model, invent or create their own understanding of a key concept, and then apply the concept.
Group students by level of experience with computing. Collaborative learning works best when students are grouped with others who have similar levels of experience. Students with little experience in computing can get discouraged and feel as if they don't belong--even if they are performing well--when they are in a group with others who have a lot of experience.
Don't further isolate women or minorities. When possible, don’t put women--or other students who are underrepresented in computing--one to a group.
Examples from the collection
This assignment introduces the concepts of bio-computation and genetics and how programming is used to help solve current-day problems in those fields. Specifically this assignment looks at skin type, type-2 diabetes, exercise and diet. It includes references to a website with a diagram showing how the genotypes for exercise and diet interrelate and students need to develop code to implement the diagram. Learning objectives include: command-line arguments, data structure (python dictionary), if-else, loops, file input, writing user-defined functions.Engagement Excellence
In this project, student's explore the technological side of mail forwarding, by writing a program that determines whether individual pieces of mail should be forwarded and, if so, the address to which they should be forwarded. Along the way, student's gain experience implementing their own data structure called a singly-linked list. This assignment is excellent for students that want additional exposure to an intuitive example of fundamental data structures, or more practice implementing classes.Engagement Excellence