~~~~~~~~ COURSE PORTFOLIO ~~~~~~~~
Introduction to Computer Science: A Course Portfolio for CSCE 144
Laurie Murphy (Pacific Lutheran University)
METHODS
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:
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.
[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.
Last Modified: 06/02/2006