https://github.com/DSLsofMath/DSLsofMath Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code + Explore + All features + Documentation + GitHub Skills + Blog * Solutions + For + Enterprise + Teams + Startups + Education + By Solution + CI/CD & Automation + DevOps + DevSecOps + Case Studies + Customer Stories + Resources * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles + Repositories + Topics + Trending + Collections * Pricing [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} DSLsofMath / DSLsofMath Public * Notifications * Fork 45 * Star 289 Domain-Specific Languages of Mathematics License BSD-3-Clause license 289 stars 45 forks Star Notifications * Code * Issues 5 * Pull requests 0 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights DSLsofMath/DSLsofMath This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 7 branches 2 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/D] Use Git or checkout with SVN using the web URL. [gh repo clone DSLsof] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @patrikja patrikja Exam 2023-03: just formatting fixes. ... 1ca530e Mar 22, 2023 Exam 2023-03: just formatting fixes. 1ca530e Git stats * 1,801 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time 2016 Clean-up: moving more old files to earlier years archives. January 18, 2022 09:52 2017 Spelling correction January 14, 2020 15:30 2018 Renaming old live-coding file + Jamboards. January 15, 2022 21:37 2019 Clean-up: moving more old files to earlier years archives. January 18, 2022 09:52 2020/L Clean-up: moving more old files to earlier years archives. January 18, 2022 09:52 2021 Partial translation videos<->lectures for 2021. January 25, 2022 12:07 2022/L L8.1 plan. March 6, 2023 22:10 Assignments Removed A2 (which is now in Canvas + the book). January 11, 2022 21:01 Exam Exam 2023-03: just formatting fixes. March 22, 2023 18:04 L Added minor forgotten notes from lexture 8.2 March 22, 2023 14:53 PedProj Spelling correction January 14, 2020 15:30 admin Minor course-plan updates (spelling, clarification). January 26, 2023 11:10 .gitignore Detail. February 20, 2023 21:12 DSL_def.txt Added informal definition of DSL January 14, 2020 14:16 LICENSE More cleaning January 15, 2018 11:20 README.md README updates for 2023 course instance. January 17, 2023 21:57 View code [ ] Domain-Specific Languages of Mathematics News Contributors Course material Objectives Course setup Lectures Exercises Exams References Functional programming DSLs The computer science perspective Mathematics License: CC-BY-NC-SA 4.0 README.md Domain-Specific Languages of Mathematics GitHub repository for open source material related the book "Domain-Specific Languages of Mathematics" published in 2022 by College Publications (available from Adlibris.se, Amazon UK, Amazon.com. The book and the repository are used in a BSc-level course at Chalmers and GU. The main course homepage is in the Canvas LMS: * Main course page Course codes: DAT326 / DIT983 News * Tuesday 2023-01-17: First lecture of the 2023 course instance. * 2022: Course book available from Amazon and from other sources. Bibtex entry. * Lecture note snapshots with drafts of the full course book * YouTube playlist collecting the 2022 lectures (all in English) + Also available: the recorded lectures from the 2021 course instance (most in Swedish, some in English). with Contributors * Main author, examiner, lecturer: Patrik Jansson (patrikj AT) * First version (and continued support): Cezar Ionescu (cezar AT) * Book co-author: Jean-Philippe Bernardy * Teaching assistants: + 2023: David Warn (warnd AT), Felix Cherubini (felixche AT), Sikai Lu (sikai AT), + 2022: Solrun Einarsdottir (slrn AT), David Warn (warnd AT), and Felix Cherubini (felixche AT) + 2021: Maximilian Algehed (algehed AT) and Victor Lopez Juan (lopezv AT) + 2020: Solrun Einarsdottir (slrn AT) and Victor Lopez Juan (lopezv AT) + 2019: Maximilian Algehed (algehed AT) and Abhiroop Sarkar (sarkara AT) + 2018: Daniel Schoepe (schoepe AT) + 2017: Frederik Hanghoj Iversen (hanghj AT student) and Daniel Schoepe (schoepe AT) + 2016: Irene Lobo Valbuena (lobo AT) * Project assistants: Daniel Heurlin, Solrun Einarsdottir, Adam Sandberg Ericsson (saadam AT) where AT = @chalmers.se Course material This repository is mainly the home of the DSLsofMath book (originating from the course lecture notes), also available in print from Amazon. Comments and contributions are always welcome - especially in the form of pull requests. The main references are listed below. Objectives The course presents 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 as in the course 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 The course is elective for both computer science and mathematics students at both Chalmers and GU. Course setup * 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, ... o 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 * Weekly exercise sessions + Half time helping students solve problems in small groups + Half time joint problem solving at the whiteboard Lectures The latest PDF snapshot of the book can be found in L/snapshots but please also consider buying the "real thing". The "source code" for the chapters are in subdirectories of L/: L/01/ , L/02/, etc. where chapter N is approximately course week N. Exercises Most chapters end with weekly exercises. In L/RecEx.md you will find a list of recommended exercises for each chapter of the lecture notes. Exams The exams + solutions are available under the Exam/ subdirectory: for example 2016-Practice/, 2016-03/, 2016-08/, 2017-03/, 2017-08/, 2018-03/, 2018-08/, 2019-03/, 2019-08/, 2020-03/, 2020-08/, 2021-03/, 2021-08/. 2022-03/, 2022-06/, 2022-08/. References Some important references: Functional programming * Thinking Functionally with Haskell, Richard Bird, Cambridge University Press, 2014 URL * Introduction to Functional Programming Using Haskell, Richard Bird, Prentice Hall, 1998. A previous (but clearly different) version of the above. * An Introduction to Functional Programming, Richard Bird and Phil Wadler, Prentice Hall, 1988. A previous (but clearly different) version of both of the above. DSLs * Functional Programming for Domain-Specific Languages, Jeremy Gibbons. In Central European Functional Programming School 2015, LNCS 8606, 2015. URL This is currently the standard reference to DSLs for the functional programmer. * Folding Domain-Specific Languages: Deep and Shallow Embeddings, Jeremy Gibbons and Nicolas Wu, ICFP 2014. URL Available at the same link: a highly recommended short version and the two videos of Jeremy presenting the most important ideas of DSLs in a very accessible way. * Programming Languages, Mike Spivey. Lecture notes of a course given at the CS Department in Oxford. Useful material for understanding the design and implementation of embedded DSLs. URL * Domain-Specific Languages, Martin Fowler, 2011. URL The view from the object-oriented programming perspective. The computer science perspective * Communicating Mathematics: Useful Ideas from Computer Science, Charles Wells, American Mathematical Monthly, May 1995. URL This article was one of the main triggers of this course. Short summary of the recommendations Mathematics * The Language of First-Order Logic, 3rd Edition, Jon Barwise and John Etchemendy, 1993. Out of print, but you can get it for one penny from Amazon UK. A vast improvement over its successors (as Tony Hoare said about Algol 60). * Mathematics: Form and Function, Saunders Mac Lane, Springer 1986. An overview of the relationships between the many mathematical domains. Entertaining, challenging, rewarding. Fulltext from the library * Functional Differential Geometry, Gerald Jay Sussman and Jack Wisdom, 2013, MIT. A book about using programming as a means of understanding differential geometry. Similar in spirit to the course, but more advanced and very different in form. An earlier version appeared as an AIM report. License: CC-BY-NC-SA 4.0 Creative Commons License This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. About Domain-Specific Languages of Mathematics Topics language computer-science course functional-programming mathematics Resources Readme License BSD-3-Clause license Stars 289 stars Watchers 14 watching Forks 45 forks Report repository Releases 1 Domain-Specific Languages of Mathematics book release Latest Jan 14, 2022 Packages 0 No packages published Contributors 25 * @patrikja * @jyp * @adamse * @ionescu * @dheurlin * @Airini * @dschoepe * @bafain * @MaximilianAlgehed * @Enayaaa * @Jassob + 14 contributors Languages * Haskell 85.7% * TeX 12.2% * HTML 0.8% * Isabelle 0.6% * Agda 0.3% * Makefile 0.3% * Other 0.1% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.