Programming in Clojure

Module Code
CS5338
Module Coordinators
Burkhardt Renz
Teachers
Burkhardt Renz
Short Description
The course focuses on the basic concepts of Clojure with respect to functional programming, concurrency, and interoperability with Java.
Learning Objectives

The students are familiar with the basic concepts of Clojure, know how to do functional programming, concurrency in Clojure. They know how to use Clojure in larger projects and know the most important Clojure functions and libraries. They inde-pendently solve problems using the functional paradigm and recognize its suitability and limitations.

Contents
  • Read-Eval-Print-Loop: reader, evaluator, syntax, homoiconicity
  • Functions: definition, values and functions, higher order functions, pure functions, side effects
  • Recursive functions: recursion and iteration, tail recursion, alternating recursion
  • Values und Data structures: simple types, complex types, destructuring
  • Abstractions: collection, sequence, associative, indexed, stack, set, sorted
  • Data types and Polymorphism: multimethods, records, protocols
  • Identity, State & Concurrency: concept, vars, atoms, refs, agents, STM
  • Macros: syntax, idioms and patterns
  • Java Interoperability: using Java, exceptions, type hints, arrays, classes and interfaces
  • Logic Programming: core.logic
  • Parser Combinator
  • Software Engineering with Clojure: namespaces, metadata, testing, assertions, performance
  • Real World Clojure: GUI, Web,database access
  • Interesting Libraries: quil, Incanter, Cascalog, ...
Duration in Semester
1
Instruction Language
German
Total Effort
6 CrP; an estimated 180 hours, of which approximately 60 are spent in class.
Weekly School Hours
4
Method of Instruction
Lecture 2 sppw Practical Course 2 sppw
Requirements for the awarding of Credit Points
Written exam or project (The form of the examination will be announced to the students in a timely and appropriate manner)
Evaluation Standard
according to examination regulations (§ 9)
Availability
As Needed
References
  • C. Emerick, B. Carper, Chr. Grand: Clojure Programming O'Reilly
  • D. Herzberg: Funktionale Programmierung mit Clojure http://denkspuren.blogspot.de/2013/04/freies-clojure-buchfunktionale.html
  • S. Halloway, A. Bedra: Programming Clojure, Second Edition The Pragmatic Programmers