~~~~~~~~ COURSE PORTFOLIO ~~~~~~~~

Introduction to Computer Science: A Course Portfolio for CSCE 144
Part of the Disciplinary Commons Project

Laurie Murphy (Pacific Lutheran University)


METHODS

Teaching methods I use in the CSCE144 course:

Lecture integrated with reinforcement exercises
When students' exposure to a topic is likely to be weak and the material is complex I find it is often best for me to lecture. However, I typically follow or intersperse the lecture with group exercises designed to reinforce the lecture material. Each group is responsible for writing a few solutions on the board. This works well because some students understand very quickly while others struggle and it is helpful for the struggling students to see how their peers reason through the solutions.

One particularly successful example I used in Spring 2006 was designed to help students develop debugging skills. After discussing how to go about being a "Debugging Detective" (see HowToDebug.ppt) students were given a debugging worksheet and asked to work in pairs to hypothesis about the source of errors in a set loops.

Distributed exploration and sharing
Occasionally it is important for students to be exposed to a set of diverse topics that we don't have time to cover in depth. An example in CS1 is the coverage of breadth material. In such instances I will assign one or several topics to each group along with specific questions they should answer about those topics. They report back to the class, usually in the form of a short presentation or web page that they discuss in class. I tried this in CS1 during Spring 2005 and found that many of the students’ presentations just weren’t all that good. I removed this component in Fall 2005 and had students attend on campus talks and our capstone students’ ethics debates and answer homework questions about the presentations. I have found this technique to be more useful in my upper-level classes than in CS1. (Original group project handout -- did not work well: CS1 group presentations Spring 2005; new list of example breadth topics from Fall 2005 and Spring 2006)

Guided tutorials
When introducing a new language construct or technique I take students to the lab and guide them trough how to use the construct by having them enter and run the code as I do it on the projector. (Example: RationalNumber.java and RationalTester.java to introduce method overloading and static methods and variables.)

Collaborative programming exercises
In our new classroom students each have their own computer, which facilitates the guided tutorials and enables students to write programs in small groups while I am available to answer questions. Since spring 2005 I have used Pair Programming in my CS1 course. Pair programming requires two students to work closely together at one machine, taking turns typing and observing. Literature indicates that pair programming improves students' confidence and success and is particularly beneficial for women students because “The collaborative nature of pair-programming teaches women students that software development is not the competitive, socially isolating activity that they imagined." [2] (Example: WhilePractice.java)

Classroom Assessment Techniques (CATs) [1]
In recent years I have CATs to determine students' misunderstandings so they may be addressed promptly. Because CATs are anonymous students feel free to ask questions without fear of appearing “stupid”. This has been particularly helpful in CS1 where the CATs have revealed that the source of students' confusion may be quite different from what I had anticipated. For example, when I have used the Muddiest Point CAT, which simply asks “What was the muddiest point in today's lecture?”, early in the term in CS1 students’ responses have run the gamut from questions of syntax, to curiosity about what specific program statements do, to confusion about what programs can do in general, to lack of understanding about how programs are compiled and executed, to general anxiety about whether they would be able to learn to program. Using the Muddiest Point CAT allowed me to specifically address each of these concerns, revisiting topics that I would not have otherwise. Using CATs in CS1 has highlighted for me the fragility of novice programmers' knowledge; I cannot assume because we have covered a concept in class and the students have successfully implemented it in lab that they fully understand the concept.

Electronic "Lab CATs"
My colleague David Wolff and I conducted a research project that used an electronic implementation of the Minute Paper CAT in our introductory labs. The Minute Paper Lab CAT simply asks students two questions:

  1. What’s the most important thing you learned during today’s lab session?
  2. What question(s) remain uppermost in your mind?
The goal is to provide a feedback loop from the laboratory to the classroom. We have continued to use these in CS1 and CS2 and found them very useful because they help students formulate specific questions that are much better than the ones we’ve gotten in response to “Are there any questions about the lab?” the next day in class. They also allow us to review confusing concepts in class. (See MP student submission form and an analysis of example responses.)

Think-Pair-Share
I like to use think-pair-shares in CS1 because it helps less confident students feel more comfortable to share their answers. An example from CS1 would be to ask students to individually “Write down a set of test cases for this input.” Then ask them to share their answers with a neighbor. Then ask them to share several with the class, writing down their answers verbatim rather than judging or rewording them. Then going back over them and suggesting modifications as necessary.


[1] Thomas A. Angelo and K. Patricia Cross. Classroom Assessment Techniques: A Handbook for College Teachers. Jossey-Bass, 2nd edition, 1993

[2] Linda L. Werner, Brian Hanks, and Charlie McDowell. Pair-programming helps female computer science students. Journal on Educational Resources in Computing (JERIC), 4(1):4, 2004.


[TOC] | <-Content | Philosophy->

Last Modified: 06/02/2006