September 13, 2003

Bulk view

Nifty Assignments

http://nifty.stanford.edu/

I should develop things like this, and maybe see about using some of
these assignments in my class.

Naive tools for studying compilation history

Full text available at http://www.cs.kent.ac.uk/pubs/2003/1588/index.html

First paragraph:

We are interested in assessing the impact of pedagogic programming
environments in the teaching of programming to novices. As part of
this work, we are interested in studying student compilation
histories—a sequence of snapshots of a student’s program taken each
time they compile. Much like a sequence of moving pictures imply
motion, we believe there is merit in studying the evolution of a
student’s program. A compilation history represents one aspect of a
solution trajectory, a sequence of observable (external) and mental
(internal) states that define a student’s path from problem start to
completion.

The 14-page paper raises the question about the delta between compiles
- what students change in between compilations. They use source
substitution to ignore minor changes in variable naming, and they try
to look at structural and type changes. They hope to be able to use
this to analyze how students rewrite programs.

Some questions:

- How can one measure the growing complexity of a program solution?

- How can one record the kind of bugs students encounter?

- Maybe it would be nice to record not only compilation bugs but also

logical ones…

CS education dissertations

At the University of Texas at Austin, Roger Louis Priebe earned a doctorate in Science Education in 1997 with a dissertation on The effects of cooperative learning on content comprehension and logical reasoning in a second-semester university computer science course. This is the abstract:

Attrition rates in the computer science major are quite
high. Many students who struggle through the first few courses
ultimately drop out of the major when the coursework becomes too
complex, mostly because of the increased amount of logic and
abstraction that the coursework requires.

This study compared content comprehension, logical reasoning ability,
and attendance in two groups of second-semester university computer
science students. In a quasi-experimental, pretest/posttest,
control-group design, the control group (n=25) received instruction in
a traditional lecture/discussion learning environment three days a
week for nine weeks. The treatment group (n=24) met in a cooperative
learning environment for the same number of hours as the control
group. Each group was given the pretest and posttest for the Burton
Comprehension Instrument (BCI) and a pretest and posttest for the
Propositional Logic Test (PLT) to measure levels of content
comprehension and logical reasoning ability. A head-count was taken
daily to determine if the cooperative learning environment might
promote better attendance.

The null hypotheses investigated in this study were. (1) There will be
no difference between the cooperative learning and control groups in
concept comprehension. (2) There will be no difference between the
cooperative learning and control groups in the improvement of logical
thinking skills. (3) There will be no difference between the
cooperative learning and control groups in attendance. The collected
data were analyzed by the use of Analysis of Covariance (ANCOVA),
Multivariate Analysis of Variance (MANOVA) with Repeated Measures, and
one-way ANOVA.

The results of the analysis revealed no difference between the
cooperative learning and lecture groups in the areas of content
comprehension or logical reasoning ability. However, the cooperative
learning group did have significantly better attendance (p<.03).

Further research is recommended in the use of cooperative learning in
university-level computer science courses. Of special interest is the
use of cooperative learning tactics in large lecture-based courses and
the effect of cooperative learning on gender equity in computer
science.

Copyright (c) 1997 by Roger Louis Priebe. Presentation of this
material by the Department of Computer Sciences at the University of
Texas at Austin was made possible under a limited license grant from
the author, who has retained all copyrights in the works.

I should look into doing research like this even now.

Blogging as an educator

From http://www.cs-ed.org/blogs/mjadud/archives/000137.html#137:

I haven’t ever blogged as an educator, I must admit. This
is, I think, a failing in my blogging practice. In particular, I
really like the idea of weblogging about my practice in a place where
my students can see what I’m thinking. This is because I (Matt)
personally think there are too many guessing games between me as an
instructor and my students. If they can see where I think the
educational process is breaking down, and why, they can actually take
part in the solution. Or, what might be even cooler, would
be…

I find that I blog a lot as an educator. I write for myself because I
need to reflect on each day – to note what worked and what I can
improve on. I write for other teachers so that they can check out
resources I’ve come across, avoid whatever mistakes I made, learn from
whatever insights I had, and maybe even share their own thoughts. I
write for my students so that they know I value their feedback and
that I’m looking for ways to make learning more fun, interesting and
effective. They can see my thoughts on what worked and what didn’t.

I’ve received a lot of positive feedback. Some people have suggested
websites to visit. Other people have asked questions that spawned new
blog entries. Yet others have shared what they learned. I have learned
so much from the people who’ve written in with their comments, and I
look forward to learning from you.

CS education weblog

http://www.cs-ed.org/blogs/mjadud/ proposed an interesting question -
how do you compile? I notice that students tend to write lots of
(buggy) code and then get frustrated by the number of errors that crop
up, but that’s because javac is awfully slow. Personally, I use jikes
- it feels a lot more responsive.

By the way, the blog has some nice diagrams. I wonder how…

mount –bind

Whoa, funky. mount —bind olddir newdir allows us to make contents available elsewhere.