All Projects → DSLsofMath → Dslsofmath

DSLsofMath / Dslsofmath

Licence: other
Domain Specific Languages of Mathematics

Programming Languages

haskell
3896 projects
language
365 projects

Projects that are alternatives of or similar to Dslsofmath

ML-University
Machine Learning Open Source University
Stars: ✭ 423 (+166.04%)
Mutual labels:  computer-science, course, mathematics
Rekcarc Tsc Uht
清华大学计算机系课程攻略 Guidance for courses in Department of Computer Science and Technology, Tsinghua University
Stars: ✭ 20,401 (+12730.82%)
Mutual labels:  computer-science, course
Algorithms
Free hands-on course with the implementation (in Python) and description of several computational, mathematical and statistical algorithms.
Stars: ✭ 117 (-26.42%)
Mutual labels:  computer-science, mathematics
Teaching
Teaching Materials for Dr. Waleed A. Yousef
Stars: ✭ 435 (+173.58%)
Mutual labels:  computer-science, mathematics
My NoteBook
サイエンス、テクノロジー、エンジニアリング関連の情報を記載したノート(忘備録)です。
Stars: ✭ 104 (-34.59%)
Mutual labels:  computer-science, mathematics
alchemy
Generate any a-by-( b + c ) finite rectangle SVG containing potentially Infinitely many a-by-( 2 * b ) finite rectangles animated along a number line of ( ( c - b ) / a )^n scale symmetry.
Stars: ✭ 29 (-81.76%)
Mutual labels:  computer-science, mathematics
Learn Something Every Day
📝 A compilation of everything that I learn; Computer Science, Software Development, Engineering, Math, and Coding in General. Read the rendered results here ->
Stars: ✭ 362 (+127.67%)
Mutual labels:  computer-science, mathematics
cmc-csci046
CMC's Data Structures and Algorithms Course Materials
Stars: ✭ 31 (-80.5%)
Mutual labels:  computer-science, course
Axelrod
A research tool for the Iterated Prisoner's Dilemma
Stars: ✭ 516 (+224.53%)
Mutual labels:  computer-science, mathematics
Learn Fp
learn-by-doing course/tutorial for functional programming on scala
Stars: ✭ 548 (+244.65%)
Mutual labels:  course, functional-programming
Analysissummary
Vorlesung Analysis für Informatiker WS16/17 an der TUM
Stars: ✭ 10 (-93.71%)
Mutual labels:  computer-science, mathematics
matematicaelementar
Matemática Elementar para Computação
Stars: ✭ 29 (-81.76%)
Mutual labels:  computer-science, mathematics
ml-formulas
機械学習・統計学・理論計算科学などに出てくる等式・不等式を集めていきます
Stars: ✭ 55 (-65.41%)
Mutual labels:  computer-science, mathematics
Ustc Course
❤️中国科学技术大学课程资源
Stars: ✭ 11,274 (+6990.57%)
Mutual labels:  computer-science, course
Cheatsheets
Quick reference material for techies
Stars: ✭ 66 (-58.49%)
Mutual labels:  computer-science, mathematics
Lambda Talk
A Flock of Functions: Combinators, Lambda Calculus, & Church Encodings in JS
Stars: ✭ 315 (+98.11%)
Mutual labels:  mathematics, functional-programming
Data Science Masters
Self-study plan to achieve mastery in data science
Stars: ✭ 179 (+12.58%)
Mutual labels:  computer-science, mathematics
Cs Roadmap
My Computer Science Curriculum
Stars: ✭ 239 (+50.31%)
Mutual labels:  computer-science, mathematics
Category Theory Programmers
Category theory in the context of (functional) programming
Stars: ✭ 465 (+192.45%)
Mutual labels:  mathematics, functional-programming
C
Collection of various algorithms in mathematics, machine learning, computer science, physics, etc implemented in C for educational purposes.
Stars: ✭ 11,897 (+7382.39%)
Mutual labels:  computer-science, mathematics

Domain-Specific Languages of Mathematics

GitHub repository for open source material related to a BSc course at Chalmers and GU.

The main course homepage is in the Canvas LMS: (https://chalmers.instructure.com/courses/12458)

Course codes: DAT326 / DIT982

News

  • Lecture note snapshots with the full course book
  • YouTube playlist with the recorded lectures (most in Swedish, some in English)
  • Tuesday 2020-01-21: First lecture of the 2020 course instance

Contributors

  • Main author, examiner, lecturer: Patrik Jansson (patrikj AT)
  • First version (and continued support): Cezar Ionescu (cezar AT)
  • Teaching assistants:
    • 2021: Maximilian Algehed (algehed AT) and Víctor López Juan (lopezv AT)
    • 2020: Sólrún Einarsdóttir (slrn AT) and Víctor López Juan (lopezv AT)
    • 2019: Maximilian Algehed (algehed AT) and Abhiroop Sarkar (sarkara AT)
    • 2018: Daniel Schoepe (schoepe AT)
    • 2017: Frederik Hanghøj Iversen (hanghj AT student) and Daniel Schoepe (schoepe AT)
    • 2016: Irene Lobo Valbuena (lobo AT)
  • Project assistants: Daniel Heurlin, Sólrún Einarsdóttir, Adam Sandberg Ericsson (saadam AT)

where AT = @chalmers.se

Course material

This repository is mainly the home of the DSLsofMath "book" (lecture notes).

Lecture notes + references therein cover the course but there is no printed course textbook.

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, ...
      • 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 full lecture notes can be found in L/snapshots.

The "source code" for the lecture notes are in subdirectories of L/: L/01/, L/02/, etc.

Exercises

Chapter 1–8 of the Lecture Notes end with weekly exercises for weeks 1–8.

In L/RecEx.md you will find a list of recommended exercises for each chapter of the lecture notes.

Using the DSLsofMath source code

In order to do some of the exercises, you may need/want to have access to the DSLs introduced during the lectures and in the lecture notes.

To do this, first make sure you have installed stack. Next, download this tarball and extract it in a desired location (on Linux and Mac, you can do this by running tar -zxf DSLsofMath-x.x.x.x.tar.gz in the terminal. In Windows, you might have to use a tool like 7-Zip).

If you are downloading the tar file from the CLI, download and extract using the following:

$ curl -OL https://github.com/DSLsofMath/DSLsofMath/raw/master/L/DSLsofMath-x.x.x.x.tar.gz
$ tar -xzf DSLsofMath-x.x.x.x.tar.gz

Now go into the extracted folder DSLsofMath-x.x.x.x/ and run stack init. You can now interact with the code from the lectures by typing stack ghci, which puts you in GHCi with all DSLs loaded. You can also place your own Haskell files inside this folder and import the DSLs you want by typing the following at the start of your file:

import DSLsofMath.W0X

where X is the chapter that contains the code you want to use. You should be able to load your own Haskell files in normal GHCi.

Installing stack on the Chalmers Linux machines

On the Linux remote machines you have a number of options to get stack to work. Regardless of how you do it the goal is to have a local stack executable in the directory ~/.local/bin. One way to do this is to follow these steps:

  • Run stack upgrade, optionally download the right executable from the stack website.
  • Make sure you add export PATH="/chalmers/home/<<<Your CID here>>>/.local/bin/:$PATH" to your .bashrc.
  • Restart the terminal
  • Make sure that which stack prints /chalmers/home/<<<Your CID here>>>/.local/bin/stack

Evaluation

DSLsofMath course evaluation student representatives 2019: TBD

Email (@student) Name

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 very different) version of the above.
  • An Introduction to Functional Programming, Richard Bird and Phil Wadler, Prentice Hall, 1988. A previous (but very 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].