Course: Programming in Common Lisp

» List of faculties » PRF » KMI
Course title Programming in Common Lisp
Course code KMI/PRCL
Organizational form of instruction Seminar
Level of course Bachelor
Year of study not specified
Semester Summer
Number of ECTS credits 2
Language of instruction Czech
Status of course unspecified
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
Lecturer(s)
  • Tříska Jan, Mgr. Ph.D.
  • Krupka Michal, doc. RNDr. Ph.D.
Course content
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.

Learning activities and teaching methods
Demonstration
Learning outcomes
The students become familiar with advanced concepts of programming in Lommon Lisp.
3. Application Show how to use Common Lisp to develop programs
Prerequisites
Basic knowledge of Common Lisp programming. The course is not intended for beginners.

Assessment methods and criteria
Written exam, Student performance

Active participation in class. Completion of assigned homeworks. Passing the written exam.
Recommended literature
  • 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.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester