CISC 470/670 Programming Languages 
(Fall Semester 2000)

The Role of Groups in 470/670

In CISC 470/670 this semester, student-student interactions have been restructured so that they are fundamentally cooperative instead of competitive or individualistic. Students are organized into small groups of three to four members who are encouraged to work together to facilitate each other's learning.

Class discussions and mini-lectures involve the whole class, whereas the conceptual assignments, real-world applications and in-class problem-solving sessions are performed in small collaborative groups. During the group discussions, the instructor circulates among the groups and becomes a "roving" tutor/facilitator. This one-on-one interaction with a group gives the instructor the opportunity to assist with the task if necessary and to monitor students' understanding of the material.

Pedagogy and Philosophy of Group Learning:

How often do you discover what you don't know on an examination? Ignorance is not bliss. Successful students, like successful scientists, recognize and manage their ignorance. What don't you know? What do you need to know? What would you like to know? What is most important to learn first? While knowing facts may help you on an examination; understanding concepts, so that you can apply them to new situations and appreciate the facts, is much more important in the long run. Cultivating the ability to confront your ignorance is an exercise in humility and building competence.

How do you learn best? How can I enable you to achieve beyond your expectations? These questions challenge me as a teacher and are independent of the grade you will get. Learning is an active process. Each year I try new ways to facilitate that process based on my learning.

While a lecture-survey course can expose students to lots of information, the students' role in class is basically passive. Learning is often superficial, and long-term retention for most students is poor. This approach may "cover" the subject rather than "uncover" it. Many studies show that classroom activities that encourage active learning in groups lead to better understanding and greater retention. In such a learning environment the teacher becomes a coach who creates appropriate challenges (problems) and works to enable students to master the problems and use them to identify and eliminate areas of personal ignorance. Such problem-based approaches to learning emphasize analysis, synthesis, judgement, and communication. While learning and remembering facts are important in any science, those facts are useless and quickly forgotten unless they fit into a context where they have importance and are perceived as worth remembering beyond the next examination. In problem-based learning, the problem comes first and provides the incentive to learn and understand the concepts.

Group Formation and Function

The in-class groups will be created informally, on-the-fly. You will be assigned to permanent project groups for your out-of-classroomprojects. The assignment is based on your questionaires completed the first day of classes, with the aim of forming heterogeneous groups with a wide variety of backgrounds in theory and practice of programming languages.

There are several procedures for helping to maintain optimal group functioning this semester. You are required to do the preparatory reading listed in the syllabus before you come to class. Homework assignments and weekly quizzes will be used to monitor your reading of the material. The term homework is used to describe work that is initiated and completed outside of the classroom. You are urged to ask questions about the homework during class but before the homework is due. Homework is due at the start of the class on the due date. Any homework handed in after class starts will be considered late. By completing the homeworks and the required readings, this will help you to come to class prepared to participate in the class activities. You will be virtually ineffective in your group if you are unfamiliar with the concepts that are being discussed and used in the various learning activities.

Here are some guidelines for the successful functioning of your group:

To facilitate the successful functioning of your project group, it might help to define (and rotate for each project) different roles for each member in addition to the coding:

Task Manager: Keep everyone on track for the due date. Lead the discussion at the group meetings.

Writer: Write up the documentation and be in charge of handing in the assignment.

Skeptic: Challenge the approaches taken by taking the perspective of the user of the software, grader,.... (You might want more than one of these.)

Tester: Run thorough tests on the software to identify problem test cases, for all of the group to debug. (You might want 2 of these.)

Others you can think of.

Permanent Project Groups:

Undergraduate Groups:

Group U1:
Frank Gallagher
Chris Haase
Tara Wilkinson

Group U2:
Robert Alekel
Tim Delesio
Andrew Jaffe
Abe Bosch

Group U3:
Greg Navaline
Ty Spicer
Uty

Graduate Groups:

Group G1:
Eric Abbott
Matt Spilich
Matt Huenerfauth

Group G2:
Ilknur Aydin
Rui Liu
Thongchai Rojkangsadan
Donald Williamson

Group G3:
William Boyer
Joe Pellegrino
Joe Squyres

Group G4:
Wei Du
Maria Medvedeva
Alban Douillet

Group G5:
Sonny Rajagopalan
Stacey Shindo
Yue Zhu