COP 3502 Study Group Materials


My research has shown me that if students form study groups in COP 3502, meet weekly and operate in a particular way, that quiz/exam grades rise by about 10% on average. (Most of the gains are made by the students who have lower grades as one might imagine, and this is a good thing for the whole group, for everyone.) Groups shouldn't just meet to give each other homework answers - worst possible use of groups that may actually lower exam scores. Instead, groups should focus on helping all students in the group learn concepts. To do this, one person in a group should scout out some extra study questions, beyond the homework prior to group meetings. Another person should organize schedules and set the group meeting times and keep other accountable.

Prior to the meetings, students should attempt the problems picked out by the problem scout. During the meetings, students should discuss their solutions with each other and, if there is disagreement, see if they can talk through it and figure out which solution is correct. For this critical part to work, at least one person in the group must know what they are doing and be confident about when they are right and when they might not be. At different points in time, different people may understand concepts and help explain to others in the group, but there will definitely be asymmetry in terms of who is doing the explaining. The key is that after the problems are reviewed, all students in the group feel more comfortable with the underlying concepts. Right when assignments are given, it's okay for the group to discuss the assignment at a high level and make sure that all students in the group carefully understand the prompt. (It's shocking how many students misunderstand what question they are being asked on homework and only come to find out that they're coding a solution to the wrong problem less than 48 hours before the due date. This is a preventable error.) Also, at a high level, without looking at any code, a group can talk about general approaches to solving a problem (it's okay to say something like, "yeah, you have to store which values have been used so far in a used array.") Also, before exams, groups should work with each other to find each other's weaknesses and help each individual improve their understanding of those topics. Though not necessary if it's not graded, having a secretary who takes notes about when the group meets, who attended each meeting and a summary of what occurred is really helpful. (I require it if I am grading study groups in a class.)

I had casually asked students to form these groups for many semesters, and when I finally got lab assistants, I decided to do the problem scouting for the group and put together some sets of problems on several key areas of COP 3502. The table below has links to the sets of problems and solutions I have collated for this purpose.
Topic Questions Solutions
Recursion Rec. Qs Rec. Sols
Algorithm Analysis Rec. Qs Rec. Sols
Linked Lists LL Qs LL Sols
Stacks and Queues S/Q Qs S/Q Sols
Binary Trees BinTree Qs BinTree Sols
AVL Trees/Tries AVL/Tries Qs AVL/Tries Sols
Sorting Sorting Qs Sorting Sols
Exam 2 Review E2 Qs E2 Sols
Heaps/Hash Tables Heaps/HashTables Qs Heaps/HashTables Sols
Base/Bitwise Operators Base/Bitwise Ops Qs Base/Bitwise Ops Sols