Skip to content

Commit 1aed1c7

Browse files
committed
Merge branch 'master' of github.com:DSLsofMath/BScProj2018 into johan
2 parents 4f4c044 + f0fcb46 commit 1aed1c7

File tree

9 files changed

+109
-67
lines changed

9 files changed

+109
-67
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Gör en överstrykning på saker när de är klara.
2828
- Titel och framsidebild
2929
- **O** Formalia
3030
- **J** Sammandrag
31-
- Översätt sammandrag till abstract
31+
- **E** Översätt sammandrag till abstract
3232
- **B** Att böra på slutsatser
3333
- Slutsatser
3434
- Introduktion

Rapport/figure/Framsida.png

64.8 KB
Loading

Rapport/include/Slutsatser.tex

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,37 @@
1-
%TODO: Perhaps remove or add clarification
2-
% CREATED BY DAVID FRISK, 2016
31

42
\chapter{Slutsatser}
53

6-
\begin{binge}
7-
Beskriv vad vi kom fram till i diskussionen.
8-
Varför är det svårt med vissa områden. Tips till dem som vill testa något
9-
liknande.
10-
\end{binge}
4+
\begin{draft}
5+
6+
Projektets mål var att konstruera ett läromaterial som modellerar fysik med
7+
hjälp av domänspecifika språk samt diskutera hur det går och om det finns en
8+
pedagogisk nytta i det. Bakgrunden låg i att projektgruppen ville väcka intresse
9+
för fysik hos datastudenter genom att presentera det ur ett funktionellt
10+
programmeringsperspektiv. Det skulle förhoppningsvis kunna förbättra den mindre
11+
bra tentastatistiken i kursen Fysik för ingenjörer.
12+
13+
Resultatet blev ett läromaterial bestående av domänspecifika språk i Haskell
14+
sammanvävt med en lärotext som förklarar dem. Det innehåller kapitel för
15+
dimensioner, matematisk analys, partikelmekanik, vektorer och tillämpningar av
16+
dem på fysikaliska problem. Det ingår även programmeringsövningar.
17+
Läromaterialet publicerades på en hemsida som är fritt tilgänglig för alla att
18+
besöka.
19+
20+
För att undersöka den pedagogiska nyttan hölls en ytterst kort utvärdering med
21+
en testgrupp samt två möten med Åke Fäldt, föreläsare och examinator för Fysik
22+
för ingenjörer. Det framgick från mötena med Fäldt att det fanns en klar
23+
pedagogisk nytta med det tillvägagångssätt som vi använt för att beskriva fysik.
24+
Den rigorösa struktur som Haskell tvingar en att använda ger inte utrymme för en
25+
student att hoppa över delar av förståelsen för ett fysikproblem, istället
26+
tvingas studenten att implementera hela lösningen från grunden och detta kan
27+
ge en djupare förståelse för problemet och fysiken i stort.
28+
29+
Det faktiska resultatet från detta tillvägagångssätt, läromaterialet,
30+
testades av en testgrupp. Från denna grupp fick vi mycket positiv kritik och de
31+
tyckte att läromaterialet var pedagogiskt, roligt och intressant. Men för att
32+
verkligen kunna dra några slutsatser från detta krävs en mycket mer nogrann
33+
undersökning huruvida studenter blir bättre på fysik med hjälp av ett
34+
läromaterial av detta slag. Det är detta som är den stora frågan och som
35+
definitivt behöver undersökas närmare.
36+
37+
\end{draft}

Rapport/include/Teori.tex

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ \chapter{Teori}
44
\begin{draft}
55

66
I detta kapitel beskrivs fyra områden av central betydelse för projektet. Dessa
7-
områden är domänspecifika språk, begreppen syntax, semantik och syntaxträd,
7+
områden är domänspecifika språk, begreppen syntax, syntaxträd och semantik,
88
literat progammering samt ARCS-modellen och annan didaktik.
99

1010
\section{Domänspecifika språk}
@@ -26,19 +26,19 @@ \section{Domänspecifika språk}
2626
Domänspecifika språk är vanligt förekommande i programmeringssammanhang. HTML är
2727
ett domänspecifikt språk för textformatering, SQL för databashantering och
2828
CSV för tabeller. Precis som domänspecifika språk i vardagen passar
29-
domänspecifika språk inom programmering bäst för sitt egna domän. SQL är bra för
29+
domänspecifika språk inom programmering bäst för sin egen domän. SQL är bra för
3030
databaser men inte att göra ett spel i.
3131

3232
Motsatsen till ett domänspecifikt språk är ett generellt språk. I vardagen är
3333
naturliga språk som svenska och engelska generella medan ryttar-begreppen ovan
3434
är domänspecifika. Precis som i vardagen finns det i datavärlden generella
35-
programmeringsspråk som C++ och Java. Dessa är turingkompletta, vilket betyder
35+
programmeringsspråk, till exempel C++ och Java. Dessa är turingkompletta, vilket betyder
3636
att det går att uttrycka alla beräkningsbara problem i dem och även lösa dem
3737
givet tillräckligt med tid och
3838
minnestillgångar\cite{turing_ne}\cite{turing_book}. Begränsningen med dessa
39-
generella språk är just deras egen generaliserbarhet, eftersom de har stöd för
39+
generella språk är att de är just generella. Eftersom de har stöd för
4040
alla typer av beräkningar så blir både läsbarheten och användarvänligheten
41-
lidande. Ett exempel på ett domänspecifikt språk i datavärlden är \textit{syntaxträd}. Syntaxträd har
41+
lidande. Ett exempel på en form av domänspecifika språk i datavärlden är \textit{syntaxträd}. Syntaxträd har
4242
använts mycket i projektet och beskrivs mer utförligt i
4343
avsnitt~\ref{sec:syntax}.
4444

@@ -47,7 +47,7 @@ \section{Domänspecifika språk}
4747
utvecklats inom detta projekt är inbäddade i programmeringsspråket
4848
\textit{Haskell}. Haskell är ett lämpligt val eftersom det är enkelt att skapa
4949
datatyper som bygger upp det domänspecifika språket. Att Haskell är ett
50-
högnivå-språk är också en fördel då man slipper programerings-tekniska detaljer,
50+
högnivå-språk är också en fördel då man slipper programeringstekniska detaljer,
5151
till exempel minneshantering, och istället kan fokusera på programmets innehåll
5252
och betydelse. Slutligen gör dess mönstermatchning att de datatyper som utgör
5353
det domänspecifika språket enkelt kan brytas isär och manipuleras.
@@ -86,7 +86,7 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
8686
\textit{löv} (ändpunkter) och \textit{förgreningar}. I detta exempel är
8787
\texttt{:+:} och \texttt{:*:} förgreningar. Med hjälp av dem kan man uttrycka
8888
summan respektive produkten av två andra uttryck. Löven representeras av
89-
\texttt{Const}, det är en konstant som man ej kan bygga vidare på.
89+
\texttt{Const}. Det är en konstant som man ej kan bygga vidare på.
9090

9191
Med datakonstruktorerna kan man konstruera uttryck i språket. Ett exempeluttryck
9292
från den tidigare datatypen visas i figur~\ref{fig:syntax_exempel_varde}.
@@ -95,15 +95,15 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
9595
\begin{lstlisting}
9696
expr = Const 7 :*: (Const 3 :+: Const 10)
9797
\end{lstlisting}
98-
\caption{Ett exempelvärde ur det tidigare syntaxträdet. Detta modellerar det
98+
\caption{Ett exempeluttryck ur det tidigare syntaxträdet. Detta modellerar det
9999
matematiska uttrycket $7 * (3 + 10)$}\label{fig:syntax_exempel_varde}
100100
\end{figure}
101101

102102
Figur~\ref{fig:syntax_exempel_varde} visar hur det aritmetiska uttrycket $7 * (3
103103
+ 10)$ modelleras. Konstruktorn \texttt{:*:} får som sina två argument uttrycken
104104
\texttt{Const 7} och \texttt{Const 3 :+: Const 10}. Det är alltså en produkt av
105-
två deluttryck. Syntaxträd brukar illusteras med just träddiagram. Detta
106-
exempelvärde illustreras i figur \ref{fig:syntax_exempel_bild}.
105+
två deluttryck. Syntaxträd brukar illusteras med träddiagram. Detta
106+
exempeluttryck illustreras i figur \ref{fig:syntax_exempel_bild}.
107107

108108
\begin{figure}[tph]
109109
\centering
@@ -131,12 +131,12 @@ \section{Syntax, syntaxträd och semantik}\label{sec:syntax}
131131
Det finns tre saker som är speciellt värda att notera i
132132
figur~\ref{fig:eval_tree}. Den första är att eftersom syntaxen innehåller tre olika
133133
typer av element, här motsvarat av de tre datakonstruktorerna, krävs tre fall i
134-
beräkningsfunktionen som beräknar vardera av dem. \textit{evaluate} har
134+
beräkningsfunktionen som beräknar vardera av dem. \texttt{evaluate} har
135135
därför ett fall för \texttt{:+:}, ett för \texttt{:*:} och ett för
136136
\texttt{Const}.
137137

138138
Den andra saken att notera ur figur~\ref{fig:eval_tree} är hur ett fall
139-
beräknas. Hur beräkningen ska ses ut får man genom att ta hänsyn till
139+
beräknas. Hur beräkningen ska se ut får man genom att ta hänsyn till
140140
semantiken hos det syntaktiska elementet. \texttt{e1 :+: e2} är syntax för
141141
addition av de två uttrycken \texttt{e1} och \texttt{e2}. Därför blir
142142
semantiken, värdet, av \texttt{e1 :+: e2} lika med värdet hos \texttt{e1} och
@@ -159,8 +159,8 @@ \section{Litterat programmering och Literate Haskell}\label{sec:lhs}
159159

160160
Det ena sättet är att jämfört med traditionella program får dokumentationen en
161161
ökad betydelse. I traditionella program är programkoden den viktiga delen. I
162-
litterata program däremot är dokumentationen minst lika viktig. Den används till
163-
att förklara koden, sätta den i relationen till andra delar och så vidare.
162+
litterata program är däremot dokumentationen minst lika viktig. Den används till
163+
att förklara koden, sätta den i relationen till andra delar, med mera.
164164
Detta jämnbördiga förhållande syns konkret genom att titta på hur källkoden är
165165
skriven i ett literat program. Det kan till exempel se ut som i
166166
figur~\ref{fig:litterate_haskell_exempel} där man ser att källkoden och
@@ -178,20 +178,20 @@ \section{Litterat programmering och Literate Haskell}\label{sec:lhs}
178178
> exampleValue :: ExampleType
179179
> exampleValue = Quantity V.length 5.3
180180

181-
Note that the Quantity data type has both value-level and type-level dimensions.
182-
As previosuly mentioned, value-level in order to pretty print and type-level to only permit legal operations.
181+
Note that the Quantity data type has both value-level and type-level dimensions. As previosuly mentioned, value-level in order to pretty print and type-level to only permit legal operations.
183182
\end{lstlisting}
184183
\caption{Ett exempel på hur en källfil till litterat programmering kan se ut.
185184
Exemplet är Litterate Haskell. Rader som börjar med \texttt{>}
186185
markerar att det är progamkod, medan rader utan markerar att det är
187186
dokumentation.}\label{fig:litterate_haskell_exempel}
188187
\end{figure}
188+
% OBS! Raden med "note that the quantity..." måste vara en lång rad. Annars blir det fel i PDF:en
189189

190190
Det andra sättet ett litterat program skiljer sig åt är ordningen programkoden
191191
står i. Traditionell programmering börjar oftast med att definiera små funktioner
192-
och metoder med snäva användningsområden och använder sen dessa för att senare
192+
och metoder med snäva användningsområden och använder sedan dessa för att senare
193193
bygga ihop mer komplexa strukturer. Med literat programmering börjar man hellre
194-
med den komplexa strukturer först och skriver text som förklarar den generella
194+
med komplexa strukturer först och skriver text som förklarar den generella
195195
struktureren utan att gå in på detaljerna, för att sedan presentera de små
196196
delarna var för sig med tillhörande förklarande text.
197197

@@ -203,8 +203,8 @@ \section{Litterat programmering och Literate Haskell}\label{sec:lhs}
203203
ignoreras och programkoden behandlas som om den var en vanlig
204204
Haskell-fil. \texttt{.lhs}-filen kan också kompileras till material avsett för
205205
mäniskor. Det finns flera verktyg som gör det men det som används i detta
206-
projekt är \textit{Pandoc}\cite{pandoc}. Med \textit{Pandoc} kan texten märkas
207-
up med både \texttt{markdown} (används i projektet) och \texttt{Latex}. Det går
206+
projekt är \textit{Pandoc}\cite{pandoc}. Med Pandoc kan texten märkas
207+
up med både \textit{Markdown} (används i projektet) och \textit{Latex}. Det går
208208
att exportera till bland annat HTML och PDF.
209209
\end{draft}
210210

@@ -217,10 +217,10 @@ \section{Att skapa motiverande läromaterial}\label{sec:arcs}
217217
av tillfredsställelsen att få att högt betyg.
218218

219219
\textit{Motiverande design} innebär att systematiskt utforma undervisningen på
220-
ett sådant sätt att studenten blir motiverad till att lära sig. Det handlar om
220+
ett sådant sätt att studenten blir motiverad till att vilja lära sig. Det handlar om
221221
att använda olika tekniker för att väcka och behålla motivation. Det finns ett
222222
flertal olika modeller för detta men i detta projekt används enbart den så
223-
kallade \textit{ARCS}-modellen.\cite{arcs_book}
223+
kallade \textit{ARCS-modellen}~\cite{arcs_book}.
224224

225225
\textit{ARCS} är en förkortning av ``Attention, Relevance, Confidence and
226226
Satisfaction'', på svenska ``uppmärksamhet, relevans, självförtroende och
@@ -234,9 +234,8 @@ \section{Att skapa motiverande läromaterial}\label{sec:arcs}
234234
sig. Det finns strategier för hur man genomför de olika delarna i praktiken och
235235
här följer en översikt för \textit{Attention}.\footnote{Eftersom projektet har
236236
ett begränsat fokus på de pedagogiska aspekterna, se
237-
avsnitt~\ref{sec:avgransningar}, har enbart \textit{Attention} och
238-
\textit{Confidence} tagits hänsyn till. Av det skälet är det enbart de två
239-
delarna beskrivna här.}
237+
avsnitt~\ref{sec:avgransningar}, har enbart \textit{Attention} tagits hänsyn till. Av detta skäl är det enbart denna
238+
del beskriven här.}
240239

241240
För att fånga studentens uppmärksamhet och intresse finns tre allmäna
242241
strategier. Den första är varselblivning, att något plötsligt händer som man
@@ -248,36 +247,36 @@ \section{Att skapa motiverande läromaterial}\label{sec:arcs}
248247
utforma en lektion som föreläsning, demonstration och sedan övning, utan variera
249248
det med andra inslag, exempelvis ett filmklipp.
250249

251-
252-
Utifrån det sociokulturella perspektivet som Vygotskij utvecklade\cite{LSB_kap5}
253-
så lär sig elever av varandra. Eleverna befinner sig vid sin proximala
250+
Utifrån det sociokulturella perspektivet som Vygotskij utvecklade~\cite{LSB_kap5}
251+
lär sig elever av varandra. Eleverna befinner sig vid sin proximala
254252
utvecklingszon, där eleverna kan hjälpa varandra att förstå innebörden av
255253
definitioner och uttryck genom att sätta ord på det de vill kommunicera. Denna
256-
typen av kommunikation skulle kunna tänkas hjälpa elever sätta fingret på det de
254+
typ av kommunikation skulle kunna tänkas hjälpa elever sätta fingret på det de
257255
inte förstår. Med denna bakgrunden skulle parprogrammering kunna vara
258-
fördelaktigt. Dels för att eleverna kan lära sig av varandra, att de genom att
256+
fördelaktigt. Dels för att eleverna kan lära sig av varandra, dels att de genom att
259257
kommunicera sin förståelse internaliserar ämnet och bygger en djupare
260258
förståelse. Parprogrammering lämpar sig antagligen även för att begränsa
261259
flyktförsök, där elever medvetet eller mindre medvetet börjar göra något annat.
262260

263261
%Jean Piaget - Kognitivismen (lära sig A, B, A + B -> C, alternativt att eleven utmanas med något den trodde var sant, och tvingas omformulera en lösning som stödjer den presenterade situationen). s157
264262

265263
Då internetplattformars interaktion med eleven är begränsad, i jämförelse med då
266-
eleven är i skolan och har tillgång till lärare, brukar internetbaserade
264+
eleven är i skolan och har tillgång till lärare, brukar internetbaserade
267265
läroplattformar förlita sig på behavioristiska element i form av rätt eller fel
268-
svar\cite{LSB_und}. Vårat läromaterial har visserligen ingen interaktiv sida,
266+
svar~\cite{LSB_und}. Projketets läromaterial har visserligen ingen interaktiv sida,
269267
men typsystemet i Haskell skulle ändå tänkas kunna fungera som en fingervisare
270-
när en gör rätt eller fel. Det går exempelvis inte att addera olika dimensioner
271-
på ett olämpligt sätt, och funktionskomposition fungerar endast om funktionens
272-
typdefinitioner (typer på argument och returvärde) stämmer överrens.
273-
274-
Evolutionärt sett har snabba belöningar varit fördelaktigt framför långsiktiga
275-
som kräver långsiktigt engagemang (ex.v öva inför en tenta) vilket beskrivs i
276-
boken ``Dansa på deadline: Uppskjutandets psykolog''\cite{DPD}. Detta är ännu en
277-
orsak till varför det är bra med belöning exempelvis i formen av glädje då en
268+
när studenten gör rätt eller fel. Det går exempelvis inte att addera olika fysikaliska dimensioner, och funktionskomposition fungerar endast om funktionens
269+
typdefinitioner (typer på argument och returvärde) stämmer överrens.
270+
271+
Evolutionärt sett har snabba belöningar varit fördelaktiga gentemot långsiktiga
272+
som kräver långsiktigt engagemang (exempelvis öva inför en tenta) vilket beskrivs i
273+
boken \textit{Dansa på deadline: Uppskjutandets psykolog}~\cite{DPD}. Detta är ännu en
274+
orsak till varför det är bra med belöning, exempelvis i formen av glädje då studenten
278275
ser att koden kompilerar. Läromaterialet innefattar även sporadiskt placerade
279276
roliga bilder, för att ge sporadiska reaktioner av glädje. Sporadiska belöningar
280277
är något som enligt författarna påverkar oss människor extra mycket, och som de
281-
menar även används inom ex.v. spelbranchen.
278+
menar även används inom exempelvis spelbranchen.
279+
280+
TODO: Flytta en del till genomförande.
282281

283282
\end{draft}
Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,35 @@
1-
%TODO: Perhaps remove or add clarification
2-
% CREATED BY DAVID FRISK, 2016
31
\thispagestyle{plain} % Supress header
4-
\section*{Acknowledgements}
5-
TODO: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
2+
\section*{Förord}
63

7-
Nämna LYAH som get oss inspiration till titeln och utformning i övrigt
4+
\begin{draft}
5+
6+
Denna rapport behandlar kandidatarbetet ``Matematikens domänspecifika språk'',
7+
som genomfördes på Chalmers tekniska högskola under vårterminen 2018. Vi som har
8+
utfört detta kandidatarbete är tre studenter från civilingengörsprogrammet
9+
Datateknik vid Chalmers tekniska högskola och en student från det
10+
datavetenskapliga programmet vid Göteborgs Universitet.
11+
12+
Vi vill tacka Patrik Jansson, vår handledare, som med sina kloka tankar och goda
13+
råd agerat som ett fyrtorn när vi seglat på okända domänspecifika hav. Vi vill
14+
tacka Åke Fäldt som tagit sig tiden att diskutera sin egen kurs, vårt
15+
läromaterial och gett oss tips och råd under utvecklingen. Vi vill tacka de
16+
testare, både individer och grupper, som tagit sig tiden att studera och läsa
17+
igenom vårt, ibland halvfärdiga, material och gett oss den kritik vi behövde för
18+
att sporras till vidareutveckling. Vi vill tacka Jeff Chen vars tankar och idéer
19+
om potentiella vidareutvecklingar för projektet gav oss ett helt nytt perspektiv
20+
under arbetets gång.
21+
22+
Slutgiltligen vill vi tacka Miran Lipovača vars hemsida ``Learn You a
23+
Haskell for Great Good!'' har både inspirerat utformningen av vår hemsida och
24+
agerat som ett läromaterial för våra egna inledande studier av det fantastiska
25+
programmeringsspråket Haskell.
26+
27+
\end{draft}
828

929
\vspace{1.5cm}
1030
\hfill
11-
TODO: Name Familyname, Gothenburg, Month Year
31+
Författarna, Göteborg, Maj 2018.
1232

1333
\newpage % Create empty back of side
1434
\thispagestyle{empty}
15-
\mbox{}
35+
\mbox{}

0 commit comments

Comments
 (0)