The course is focused mainly to the Common Lisp language upon which the other dynamic languages are based, but offers more general information applicable to other languages as well. The goal of the course is to teach students to use Common Lisp for solving simple practical tasks and for creating more complex applications on the one hand, and to extend their knowledge in the field of programming languages (mainly dynamic) and programming in general, describe various programming methods and techniques, including less usual ones, on the other. Basic knowledge of Common Lisp programming is assumed. The course is not intended for beginners. Course should interest mainly students who plan to use Common Lisp for their larger (semestral, bachelor) projects.1. Lisp, the past and the present: Origins and evolution of Lisp, relations to other programming languages, survey of available implementations, development environments, and libraries, problems and shortcomings. 2. Basic features of CL: CL as a programmable, pragmatic, multi-paradigm language. CL as a dynamic and dynamically typed language. Code as data. Synergy Principle. 3. CL basics: Functions, macros, special operators, the eval function, environments, scope and extent. Data types and operations. Generalized variables, the setf operator and its programming. 4. Advanced non-OO features of CL: Input, output, and compiler programming, data serialization. Ensuring program modularity by means of packages, modules. Working with exceptions, invoking and handling exceptions, restarts. 5. Advanced features of object system: multiple inheritance, multimethods, method combinations, metaobject protocol. 6. Software development methods: Software development and maintenance in dynamic and dynamically typed languages, bottom-up programming, agile methods. Changing language to fit problem domain. Programming culture and style, idioms, documentation.
|
-
Barski. (2010). Land of Lisp: Learn to Program in Lisp, One Game at a Time! No Starch Press.
-
Graham, P. (1995). ANSI Common LISP. Prentice Hall.
-
H. Abelson, G. J. Sussman. (1996). Structure and Implemantation of Computer Programs. Cambridge, Massachusetts.
-
Seibel P. (2005). Practical Common Lisp. Apress, Berkeley, CA.
-
Touretzky D.S. (2013). Common LISP: A Gentle Introduction to Symbolic Computation. Dover Publications.
-
Weitz, E. (2015). Common Lisp Recipes: A Problem-Solution Approach. Apress.
|