Although there are high expectations for collaborative discussion and on-line learning, existing systems for on-line discussion and chat facilities are not fully effective in promoting learning. Pedagogical interventions are often necessary to keep discussions focused and productive. This work focuses on the creation, implementation and evaluation of innovative new software tools for undergraduate engineering courses that promote collaborative problem solving and reflection through automatic scaffolding of student discussions. We describe how discussions in similar past courses can be used to recommend interesting topics for consideration. We also present an approach to modeling student discussions by including an analysis of speech acts. We show how we use the speech act analysis in assessing participant roles and identifying discussion threads that may have confusions and unanswered questions.