Thursday, August 9, 2007

Final Thoughts Part 1 / 3

One of the questions that I have been asking since the beginning of this course is: What is the role of technology in teaching science and math? My interest is mainly in teaching computer science and since computer science is already deeply immersed in digital technologies, I have been curious how else computers can be used in the process of learning computer science other than using computers to learn how to program. Are computers suitable to help computer science students to learning programming? The most effective tool I have used in teaching students how to program is not using computers. I have used Karel, an imaginary robot to teach programming with much success … all without the use of computers. Other tools are merely development environments which help students debug program faster, avoid typing mistakes, or to document the program better. Surely, there are design tools that can take graphic representation of a program, like UML, ER diagrams, and convert them into code, or program verification tool to “prove” that a program is supposed to behave according to its specification (which is so complicated to even write down that no practical programmer really takes this seriously!), but they don’t really help students learn or to design software better.

Technologies such as del.ciou.us, RSS, citeulike.org, google docs, etc. are great in organizing the knowledge base of any subject or discipline, but for technical topics, technologies seem to be best used in visualization of abstract concepts. In math, calculators, visual graphical programs like Maple, and other animation software allows students to have yet another view of mathematical formulas. In science, visual representations and experiments allow students to conduct virtual labs without expensive equipment and dangerous material. Digital technologies also allow students to learn by trial and error. Computers and calculators can hide the tedium of manual computations and afford the students to “test-and-see”. Although some may see that this is not really “learning” in the sense that the basic foundations have been understood, and new theories are built on top, a “test-and-see” learning model may be suitable for the new generation of students who are more at home with digital technologies than previous generations. One question that should be investigated is whether “test-and-see” leaning in a collaborative environment is as effective as other traditional learning environment.

Blogs and Computer Science

The use of blogs to capture our thoughts has been very useful. But I wonder if such technology can be used for a technical course. In the case of computer programming, what can a student write in a blog? In the WorldWatcher program, students use a Progress Portfolio to capture their thoughts and their investigations as part of the reflective inquiry. A similar use for designing software can be applied to computing students using blog. Here are some possibilities of its use:

- given a problem, what was the thought process like?
- what were the possible solutions that turned out to be not workable?
- Reflection on the design / solution, could it be better, what went well in the design / management / development of the program?
- Have students read each other’s blogs and ask each other or try to explain to each other the thought process that has transpired? This may allow each student to learn how they learn, and how they think. This may provide insights on the students as they attempt another programming exercise.

Here are further questions for consideration of using blogs in teaching computer programming?

- can blog be used as a design tool to guide programmers in the design and development (much like a saying that says an essay writes the writer rather than the writer writes the essay!)
- blog is different than traditional program documentation which the programmer usually writes after the entire program is developed and is usually put together just to satisfy some higher up management. Blog can be a day to day, or moment by moment design history and may be more useful in capturing the development of thoughts.
- What will be the best medium for recording in the blogs? English is often used in blogs but is it the best language to capture program design? Diagrams / pseudo code / etc. or a combination of these may be more appropriate.

No comments: