-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDSLsofMath_andra_kurser.tex
More file actions
145 lines (120 loc) · 5.1 KB
/
DSLsofMath_andra_kurser.tex
File metadata and controls
145 lines (120 loc) · 5.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass{article}
\usepackage{geometry}
\geometry{a4paper}
\usepackage{amsmath,amssymb}
\usepackage{lmodern}
\usepackage{iftex}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
hidelinks,
pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
\ifLuaTeX
\usepackage{selnolig} % disable illegal ligatures
\fi
\author{}
\date{}
\title{Matematikens domänspecifika språk för andra kurser}
\author{Patrik Jansson}
\begin{document}
\maketitle
\begin{abstract}
\input{abstract.txt}
\end{abstract}
\subsection{Bakgrund:}\label{bakgrund}
DSLsofMath {[}1,2,3{]} är namnet på ett pedagogiskt projekt som lett
till en valfri kurs i årskurs 2-3 riktad till datavetare och matematiker
på Chalmers och GU. Kursen presenterar klassiska matematiska ämnen från
ett datavetenskapligt perspektiv: genom att specificera de introducerade
begreppen, vara uppmärksam på syntax och typer, och slutligen genom att
bygga domänspecifika språk for vissa matematiska områden. (Exempelvis
linjär algebra, Laplace-transform, potensserier, derivator.)
Inspirerat av detta har flera studentgrupper genomfört
kandidatarbetesprojekt under de senaste åren med följande resultat:
\begin{itemize}
\tightlist
\item
2016: Programmering som undervisningsverktyg för Transformer, signaler
och system - Utvecklingen av läromaterialet TSS med DSL
\item
2018: Ett komplementerande läromaterial för datastudenter som lär sig
fysik - Läromaterialet Learn You a Physics for Great Good!
\item
2020: A Computer Science Approach to Teaching Control Theory -
Developing Learning Material Using Domain-Specific Languages
\item
2022: HasLin - ett DSL för linjär algebra - Utvecklandet av ett
matematiskt domänspecifikt språk för linjär algebra i Haskell
\end{itemize}
\subsection{Projektbeskriving:}\label{projektbeskriving}
Det här kandidatprojektet går ut på att ta fram DSLsofMath-inspirerat
kompletterande material för andra närliggande kurser som exempelvis
\begin{itemize}
\tightlist
\item
Matematisk statistik och diskret matematik, eller
\item
Flervariabelanalys, eller
\item
Data Science \& AI, eller
\item
andra kurser som ni känner skulle må bra av mer fokus på syntax, typer
och funktioner.
\end{itemize}
Implementationsspråk är Haskell och Agda och målet är dels att fördjupa projektmedlemmarnas förståelse av den valda kursen / ämnet, dels att skapa öppet tillgängligt material som framtida studenter kan ha nytta av. Efter några års fokus på lärmaterial (tutorials/lecture notes) ligger tyngdpunkten nu på korrekthet: DSL, typer, specifikation, test och bevis.
Arbetssättet liknar det som används vid utveckling av ``high assurance software'' – programvara där tillförlitlighet och formella garantier är avgörande, till exempel inom flyg, medicinteknik eller kryptografi. Genom projektet får ni alltså erfarenhet av tekniker som används professionellt för att bygga mycket pålitliga system.
Att göra (``produkt''):
\begin{itemize}
\tightlist
\item
Designa och implementera (ett par) DSL för det valda området
\item
Specificera lagar som bör gälla i Haskell eller Agda
\item
Testa de lagar som kan testas med QuickCheck
\item
Bevisa någon eller några lagar i Agda
\item
\ldots{} samt dokumentation i form av kandidatarbetesrapport mm.
\end{itemize}
\subsection{Länkar:}\label{luxe4nkar}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item \href{https://github.com/DSLsofMath/DSLsofMath}{github.com/DSLsofMath/DSLsofMath}
\item \href{https://www.cse.chalmers.se/~patrikj/papers/Ionescu_Jansson_DSLsofMath_TFPIE_2015_paper_preprint.pdf}{DSLsofMath\_TFPIE\_2015\_paper\_preprint.pdf}
\item \href{https://www.cse.chalmers.se/~patrikj/papers/Janssonetal_DSLsofMathCourseExamplesResults_preprint_2018-08-17.pdf}{DSLsofMathCourseExamplesResults\_preprint\_2018-08-17.pdf}
\end{enumerate}
\subsection{Målgrupp:}\label{muxe5lgrupp}
DV, D, IT, TM
\subsection{Särskilda förkunskaper:}\label{suxe4rskilda-fuxf6rkunskaper}
Funktionell programmering (Haskell) och kursen DSLsofMath eller gott om
matematik (TM-programmet eller liknande).
(Det kan gå att ta kursen DSLsofMath parallellt med projektet, men det
blir svårare.)
\subsection{Handledare:}\label{handledare}
Patrik Jansson eller annan person inom FP-gruppen.
\end{document}