Henning Christiansen
Roskilde University, Computer Science Dept., Denmark
Ladda ner artikelIngår i: Proceedings of the First International Workshop on Teaching Logic Programming: TeachLP 2004
Linköping Electronic Conference Proceedings 12:4, s. 43-54
Publicerad: 2004-10-04
ISBN:
ISSN: 1650-3686 (tryckt), 1650-3740 (online)
Prolog is a powerful pedagogical instrument for theoretical elements of computer science when used as combined description language and experimentation tool. A teaching methodology based on this principle has been developed and successfully applied in a context with a heterogeneous student population with uneven mathematical backgrounds. Definitional interpreters; compilers; and other models of computation are defined in a systematic way as Prolog programs; and as a result; formal descriptions become running prototypes that can be tested and modified by the students. These programs can be extended in straightforward ways into tools such as analyzers; tracers and debuggers. Experience shows a high learning curve; especially when the principles are complemented with a learning-by-doing approach having the students to develop such descriptions themselves from an informal introduction.
[1] Henning Christiansen. Sprog og abstrakte maskiner; 3. rev. udgave [in Danish; eqv. “Languages and abstract machines”]. Datalogiske noter 18; Roskilde University; Roskilde; Denmark; 2000.
[2] Henning Christiansen. Teaching computer languages and elementary theory for mixed audiences at university level. Computer Science Education Journal; 14; 2004. To appear.
[3] Henning Christiansen. CHR Grammars. Int’l Journal on Theory and Practice of Logic Programming; 2005. To appear.
[4] Thom Frühwirth. Theory and Practice of Constraint Handling Rules; Special Issue on Constraint Logic Programming. Journal of Logic Programming; 37(1– 3):95–138; October 1998.
[5] Donald Knuth. Semantics for Context-Free Languages. Mathematical Systems Theory; 2:127–145; 1968.
[6] F. C. N. Pereira and D. H. D. Warren. Definite clause grammars for language analysis — a survey of the formalism and a comparison with augmented transition networks. Artificial Intelligence; 13:231–278; 1980.