Course syllabus


DAT326 / DIT982 Domain-Specific Languages of Mathematics, Spring 2021 (7,5hp) at the CSE Department, Chalmers & UGOT.

Course purpose

The course will present classical mathematical topics from a computing science perspective: giving specifications of the concepts introduced, paying attention to syntax and types, and ultimately constructing DSLs of some mathematical areas mentioned below.

Learning outcomes: see below.


Usually lectures on Tuesdays and Thursdays at 13.15 in Zoom. See TimeEdit for the details. 

Contact details

Examiner and main lecturer: Patrik Jansson, email:

Teaching Assistants:

Course literature

Lecture notes (available in Canvas, sources on GitHub) + references therein cover the course but there is no printed course textbook. The main references are listed on the GitHub page.

Course design

  • Lectures
    • Introduction: Haskell, complex numbers, syntax, semantics, evaluation, approximation
    • Basic concepts of analysis: sequences, limits, convergence, ...
    • Types and mathematics: logic, quantifiers, proofs and programs, Curry-Howard, ...
    • Type classes, derivatives, differentiation, calculational proofs
    • Domain-Specific Languages and algebraic structures, algebras, homomorphisms
    • Polynomials, series, power series
    • Power series and differential equations, exp, sin, log, Taylor series, ...
    • Linear algebra: vectors, matrices, functions, bases, dynamical systems as matrices and graphs
    • Laplace transform: exp, powers series cont., solving PDEs with Laplace
  • Course material
    • Please read and make sure you understand the Lecture notes
  • Weekly exercise sessions (scheduled): 
  • More exercises (not scheduled)
    • Make sure to work through the exercises in the lecture notes
    • This is important to prepare for both the labs and the written exam
    • ... and you can get bonus points.
  • Assignments (labs)
    • Two assignments done in groups of three
    • Hand-in as text + code ...
    • ... and a short oral Q&A session to make sure you have all contributed.
    • Feedback will be given both during the Q&A-session and in writing  
  • Written exam (at the end of the course)
    • 2021-03: The exam is organised in a separate Canvas room 
  • Digital tools
    • Canvas is used for the third time for this course
      • rapid feedback is appreciated to make sure we can improve the site
    • GitHub is where all the lecture notes ("the book") and associated code is hosted.
      • please post issues if you find problems
      • and use pull-requests if you have suggestions for fixes / additions

Changes made since the last occasion

Based on student feedback from the 2020 instance we have made a few changes:

Fully online teaching (zoom-based).

A complete review of the lecture notes:

  • General book change: larger margins to improve readability on small screens; replaced Num hierarchy with Additive, Ring, etc. 
  • Ch 0 = Intro chapter: cut some old text, added "Common pitfalls" from Ch.1
  • Ch 1 = Types&functions: clean-up + moved ArithExpr to later chapter
  • Ch 2 = Logic&proofs: serious content upgrade and clarification
  • Ch 3 = Type in maths: better introduction of expressions and 1-arg. functions
  • Ch 4 = Compositionality&Alegbras: added initial and free structures; reordering and clarification
  • Ch 5 = Polynomials&Power Series: general clean-up
  • Ch 6 = Higher-order derivatives: added comparison of Maclaurin and Stream
  • Ch 7 = Linear Algebra: algebraic clean-up; added Fourier and Quantum connections
  • Ch 8 = Laplace: minor edits
  • Ch 9 = Probability: new chapter (extra material)

Examination form

There are two compulsory course elements:

  • A = Assignments (written + oral examination in groups of three students)
    • two compulsory hand-in assignments
    • Grading: Pass or Fail
    • The assignments are to be handed in via Canvas
  • E = Exam (individual written exam at the end of the course)
    • Grading: Chalmers: U, 3, 4, 5; GU: U, G, VG
    • Note: a minimum of 5p on each question is required to pass.
    • Date: 2021-03-16, afternoon, online
    • Aids: One textbook of your choice

To pass the course you need to pass both course elements.

Weekly Exercises

Most weeks you can gain 1-2 bonus point for the exam by solving exercises from the lecture notes.
To get the point(s) you should (i) hand in a written solution before the Friday exercise session starts (usually at 13.15), and (ii) sign up to briefly present the solution to somebody in the teaching team on Zoom during that exercise session.
Sign up at the latest one hour after the start of the exercise session (i.e. before 14:15). You sign up by adding your name and Zoom link to the Exercise assistance thread.
Points are awarded to both those who present a correct solution and to all those who signed up but  in but not picked for presentation. The first weekly exercise is DSLM Week 1 but you probably want to start with a few other exercises to warm up.

Learning objectives and syllabus

Knowledge and understanding

  • design and implement a DSL (Domain-Specific Language) for a new domain
  • organize areas of mathematics in DSL terms
  • explain main concepts of elementary real and complex analysis, algebra, and linear algebra

Skills and abilities

  • develop adequate notation for mathematical concepts
  • perform calculational proofs
  • use power series for solving differential equations
  • use Laplace transforms for solving differential equations

Judgement and approach

  • discuss and compare different software implementations of mathematical concepts

Course plans:


Course summary:

Date Details Due