Tcl/Tk Workshop `95 - Friday: Session 6

Panel: Tcl and Tk in the Classroom: Lessons Learned

Overview: The purpose of this discussion is to share perspectives on teaching with Tcl/Tk both in academia and industry. Examining case studies, what has succeeded and what has failed? Panel format chosen becase we view this as an interactive, controversial issue involving educators, researchers, and developers working within industry.

Position by Charles Crowley

Has used Scheme/Tk in introductory programming classes, Tcl/Tk in software engineering courses. Reasons: Tcl/Tk provides an enjoyable introduction, allowing students to see and accomplish results quickly. It can be used to accomplish diverse, useful functions. Finally, it provides a framework for teaching good CS and software engineering principles.

In addition to providing basic language introduction, data structures and a graphical interface, it allows students to work alone and discover satisfaction of accomplishment quickly on small-scale but complete projects.

In the past, LISP offered these benefits plus easy extensibility. What TclTk has been missing up to now is that it lacks a good framework for extension management. Extension modularity and megawidgets are also important because they facilitate teaching good software engineering.

Examining the use of Scheme/Tk for beginning course (coupled with a C++ course) --it offers closures, which have been traditionally "dear to the hearts of CS professors"--but are these really necessary? Tcl/Tk could be a very good teaching language with the addition of objects and easier extensions/megawidgets.

Position by Joseph A. Konstan

Has offered a 10-week course specifically on Uis, for both undergraduate and graduate students. Many already have backgrounds in CS (C, C++, Scheme), non-majors' experience has varied. New in 1995: offered a 3-day verson, where each day students saw the previous day's discussion realized in Tcl/Tk.

Presentation of a video of applications developed by juniors/seniors, developed to address specific engineering/visualization problems but also games: goal to find applications that are meaningful to the students.

Can teach Tcl/Tk in 75 minutes: overview, limitations, and illustrate capabilities. Teaches about UI toolkits, other resources available over the net for learning more. Finds that students continue using Tk after the class, and that books have simplified the teaching enormously. BUT--it cannot truly be learned quickly; issues such as quoting, interface to C, and scope still cause confusion, and there's a need for debugging and extensions.

Comparison to LISP--interpreters, list/string data structures, memory management make it similar, but much of its popularity results from differences--small size, no parentheses. However, the areas which make it hardest to learn are those in which it is not like LISP (for example, uplevel, quoting). What ultimately sells it is the ability to see results quickly (as per the video).

Position by Michael McLennan

Has taught a 3-day course on 'Building Apps with Tcl/Tk" at Bell Laboratories, as well as a 2-day course on "Object-Oriented Programming with [incr Tcl]"; comments drawn from outside courses as well.

Who takes these courses? Lots of the usual culprits (software developers and sysadmins), but also people with varied backgrounds including telecommunications, finance, aerospace, and physics. Differences in learning: the amount of detail each wants, desire for a comparison with other languages, richness of language, difficulties with quoting and case staements being ordinary commnds. Observation that the courses must be taught "with the students' hands on wish", and emphasizes that examples should be developed incrementally--and be visual, interactive, and fun--e.g. Star Trek rescue mission program.

What confuses people: quoting, again--teaching people to internalize how to do it takes a long time. Expand vs. Fill packer command options. Reuse of keywords (e.g. bind) as commands, subcommands, keywords--takes time and experience to have a feel for which is correct. Switch in paradigms between pass-by-name and pass-by-value. Command prefixing. To these issues, Tk 4.0 adds new complexity to bind: bind tags, break/continue semantics, and sometimes unexpected side-effects.

Panelist Questions:

Open Questions: