Skip to content

Commit f55a520

Browse files
author
Oskar Lundström
committed
Mindre språkändringar i genomförade-kapitlet
1 parent c78259b commit f55a520

File tree

2 files changed

+63
-71
lines changed

2 files changed

+63
-71
lines changed

Rapport/include/Metod.tex

Lines changed: 60 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ \chapter{Genomförande}
2626

2727
\section{Konstruktion av läromaterialet}\label{sec:konstruktion}
2828

29-
\textbf{TODO: Sätt ett värde på X}
29+
\textbf{TODO: Rätt värde?}
3030

31-
Läromaterialet består av X kapitel som vardera behandlar separata
31+
Läromaterialet består av 6 kapitel som vardera behandlar separata
3232
områden. Skapandet av varje kapitel skedde därför till största delen fristående
3333
från andra kapitel. Skapandet av kapitlena bestod i sin tur av tre faser,
3434
som såg likadana ut för alla kapitel. Dessa faser var sökande efter område,
@@ -59,8 +59,8 @@ \section{Konstruktion av läromaterialet}\label{sec:konstruktion}
5959
är en del som arbetats med och är gråmarkerad.}
6060
\end{figure}
6161

62-
Även om detta sätt att dela upp processen är översiktlig är den inte helt
63-
verklighetstrogen. I praktiken fanns det överlapp mellan de olika delarna, både
62+
Även om detta sätt att dela upp processen är översiktligt är det inte helt
63+
verklighetstroget. I praktiken fanns det överlapp mellan de olika delarna, både
6464
med avseende på kapitel och fas. Det här illustereras i
6565
figur~\ref{fig:oversiktB}. Där ser man att sökandet av områden skedde för flera
6666
kapitel samtidigt. Detta då arbetet med att hitta ett område ofta gav flera
@@ -69,7 +69,7 @@ \section{Konstruktion av läromaterialet}\label{sec:konstruktion}
6969
sammanvävda var det också högst naturligt att processerna med att skapa dem
7070
även de var sammanvävda.
7171

72-
De tre följande avsnitten beskriver i detalj hur de tre faserna, val,
72+
De tre följande avsnitten beskriver i detalj hur de tre faserna, sökande,
7373
implementation och skrivande, såg ut. Det är viktigt att minnas att det, som
7474
nämndes ovan, fanns överlapp mellan både faserna och kapitlena.
7575

@@ -78,8 +78,8 @@ \subsection{Sökande efter områden att behandla}\label{sec:valet}
7878
Ett domänspecifikt språk modellerar ett specifikt och avgränsat område. Därför
7979
var det naturligt att söka och tänka i termer av avgränsade områden inom
8080
fysiken. För att rent praktiskt hitta områden att behandla kontaktades Åke
81-
Fäldt, examinator för Fysik för ingenjörer\cite{tif085} och kursens bok (University
82-
Physics\cite{UP}) och övrig material studerades.
81+
Fäldt, examinator för Fysik för ingenjörer~\cite{tif085} och kursens bok (University
82+
Physics~\cite{UP}) och övrigt material studerades.
8383

8484
Denna sökandeprocess innefattade inte bara att \textit{hitta} fysikaliska
8585
områden utan även \textit{organisera} dem i relation till varandra. Som framgår
@@ -95,15 +95,15 @@ \subsubsection*{Kontakt med fysikläraren}
9595
studenterna, problematiska områdena. Enligt Fäldt är ett allmänt problem att
9696
egna mentala modeller för problem är felaktiga eftersom studenter ofta tar
9797
genvägar som inte bygger på saker de är säkra gäller. En annan erfarenhet
98-
från honom är att så länge första raden i en uppgiftslösning är rätt, är
98+
från honom är att så länge första raden i en uppgiftslösning är rätt, är
9999
resten också rätt. Med andra ord, har studenten väl identifierat vilken typ av
100100
problem det rör sig om brukar det inte vara några svårigheter att lösa
101101
uppgiften.
102102

103103
Med hjälp av insikterna från Fäldt drogs två slutsatser. Den första slutsatsen
104104
var att matematisk analys var ett område värt att behandla i detalj. Den andra
105105
slutsatsen var att genom att ge struktur till olika typer av problem skulle det
106-
förhoppningsvis kunna underlätta för studenter att lära sig att identifiera vilken
106+
förhoppningsvis kunna underlätta för studenter att lära sig identifiera vilken
107107
typ av uppgift de handskas med.
108108

109109
\subsubsection*{Studerande av kursbok och kursmaterial}
@@ -126,8 +126,8 @@ \subsubsection*{Studerande av kursbok och kursmaterial}
126126
sagt var enbart områden med tydlig data och tydliga operationer lämpade. Detta
127127
diskuteras utförligare i avsnitt~\ref{sec:lampligt}. Det framgick också att det
128128
blev överlapp mellan olika domänspecika språk trots att områdena var fristående.
129-
Ett exempel var det domänspecifika språk för partiklar som till stor del
130-
tillämpade de domänspecifika språken för matematisk analys och vektorer.
129+
Ett exempel var det domänspecifika språk för partikelmekanik som till stor del
130+
liknade de domänspecifika språken för matematisk analys och vektorer.
131131

132132
Det blev av dessa skäl nödvändigt att göra en distinktion mellan två typer av
133133
områden: \textit{grundläggande} och \textit{komposita}. Grundläggande områden är
@@ -139,8 +139,7 @@ \subsubsection*{Områden som valdes ut}
139139

140140
När kunskap inhämtats om olika områden kunde ett urval göras. De områden som
141141
identifierades som grundläggande och hade en väl lämpad struktur (se
142-
avsnitt~\ref{sec:valdes lampligt}) ut. Med detta som grund blev följande de
143-
områden som valdes ut.
142+
avsnitt~\ref{sec:lampligt}) valdes ut. Med detta som grund blev det de följande områdena som valdes.
144143

145144
\textit{Dimensioner} eftersom det är viktigt för studenter att förstå sig på
146145
hur dimensioner påverkas av algebraiska operationer. Det kan också vara
@@ -164,28 +163,21 @@ \subsubsection*{Områden som valdes ut}
164163
implementerade grundläggande områdena. Det komposita områdena som valdes ut
165164
blev:
166165

167-
\textit{Punktpartikelsmekanik}. Här gås mycket av den gymnasiala fysiken igenom.
168-
Lägesenergi, rörelseenergi, gravitation o.s.v. Den modelleras med vektorer vars
166+
\textit{Exempelproblem} för att visa hur ett par typuppgifter i klassisk mekanik kan modelleras i läromaterialets domänspecifika språk. Närmare bestämt tillämpas de domänspecifika språken på \textit{krafter på lådor} och \textit{gungbräda}.
167+
168+
\textit{Partikelsmekanik}. Här gås mycket av den gymnasiala fysiken igenom.
169+
Lägesenergi, rörelseenergi, gravitation och så vidare. Den modelleras med vektorer vars
169170
komponenter består av matematiska uttryck tagna från kapitlet om matematisk
170171
analys. Förhoppningen är att detta område inte ska presentera någon ny fysik för
171-
läsaren utan istället visar hur redan känd fysik direkt går att översätta till
172-
domänspecifika våra domänspecifika språk.
173-
174-
\end{draft}
172+
läsaren utan istället visa hur redan känd fysik direkt går att översätta till läromaterialets domänspecifika språk.
175173

176-
\begin{binge}
177-
\textbf{TODO:~OCH FLER?}
178-
\end{binge}
174+
\subsection{Implementation av domänspecifika språk för områdena}
179175

180-
\begin{draft}
181-
182-
\subsection{Implementation av DSL för områdena}
183-
184-
Implementationen av ett domänspecifikt språk till ett område inleddes med att
176+
Implementationen var en av domänspecifka språk var en iterativ process.
177+
Implementationen av område inleddes med att
185178
bygga vidare på den experimentering som gjorts under urvalsfsen. Det finns inte
186179
ett rätt sätt att skriva ett domänspecifikt språk på, därav gjordes försök med
187-
flera olika varianter för att se vad som fungerade bäst. Implementationen var en
188-
iterativ process. I flera fall har implementationer gjorts om från grunden om
180+
flera olika varianter för att se vad som fungerade bäst. I flera fall har implementationer gjorts om från grunden om
189181
det visat sig först en bit in att implementationen kunde gjorts bättre eller
190182
hade brister. Dessutom gjordes, i varierande mån, inläsning av domänspecifika
191183
språk, fysik och Haskell för att kunna implementera på bästa sätt.
@@ -202,9 +194,9 @@ \subsection{Implementation av DSL för områdena}
202194

203195
Efter att ett domänspecifikt språk implementerats skrevs tester till det. Det
204196
som var intressant att testa var olika lagar som skulle gälla. Eftersom de
205-
domänspecifika språk vi skrev modellerade matematik var det matematiska lagar
197+
domänspecifika språken i läromaterialet modellerade matematik var det matematiska lagar
206198
som skulle gälla. Ett exempel var att vektoraddition skulle vara kommutativ.
207-
Testerna gjordes med hjälp av \textit{QuickCheck}. QuickCheck är ett
199+
Testerna gjordes med hjälp av \textit{QuickCheck}~\cite{QC}. QuickCheck är ett
208200
testningsverktyg i Haskell som genererar många och slumpmässiga testfall. Att
209201
lagarna gällde för de domänspecifika språken verifierades med andra ord genom
210202
testa för många exempelvärden. Inga bevis av att lagarna gällde gjordes.
@@ -217,15 +209,13 @@ \subsubsection*{Implementation av grundläggande områden}
217209
läromaterialet och implementerar fysikaliska dimensioner i Haskell.
218210

219211
I fysiken finns det dimensioner \cite{dimensioner_ne}. Några exempel är \textit{längd},
220-
\textit{hastighet} och \textit{massa}. Dimensionerna kan läggas i en av två
212+
\textit{massa} och \textit{hastighet}. Dimensionerna kan läggas i en av två
221213
kategorier: basdimensioner eller sammansatta dimensioner. Det finns enbart sju
222214
basdimensioner (längd, massa, tid, elektrisk ström, temperatur, substansmängd och
223215
ljusstyrka) medan det finns oändligt många sammansatta. Sammansatta
224-
dimensioner fås genom att multiplicera eller dividera två andra dimensioner. Av
225-
dessa tre exempel är den första och sista basdimensioner, medan den andra är
226-
sammansatt.
216+
dimensioner fås genom att multiplicera eller dividera två andra dimensioner. Av längd, massa och hastighet är längd och massa basdimensioner medan hastighet är sammansatt.
227217

228-
En första ansats till implementation skulle därför kunna se ut som
218+
En första ansats till en implementation skulle därför kunna se ut som
229219

230220
% Dessa inställningar ska bara användas vid "inline" kod som ej är separat figur.
231221
\begin{lstlisting}[frame=none, belowskip=-0.5\baselineskip, xleftmargin=0.5in]
@@ -244,8 +234,10 @@ \subsubsection*{Implementation av grundläggande områden}
244234

245235
\begin{lstlisting}[frame=none, belowskip=-0.5\baselineskip, xleftmargin=0.5in]
246236
data Dim = BaseDim BD -- `Löv med grundläggande dimension'
247-
| Mul Dim Dim -- `Förgrening med multiplikation mellan två andra dimensioner'
248-
| Div Dim Dim -- `Förgrening med division mellan två andra dimensioner'
237+
| Mul Dim Dim -- `Förgrening med multiplikation'
238+
-- `mellan två andra dimensioner'
239+
| Div Dim Dim -- `Förgrening med division mellan två'
240+
-- `andra dimensioner'
249241
\end{lstlisting}
250242

251243
Några exempelvärden blir då
@@ -320,43 +312,47 @@ \subsubsection*{Implementation av grundläggande områden}
320312

321313
\begin{lstlisting}[frame=none, belowskip=-0.5\baselineskip, xleftmargin=0.5in]
322314
mulDim :: Dim -> Dim -> Dim
323-
mulDim (Dim le1 ma1 ti1 cu1 te1 su1 lu1) (Dim le2 ma2 ti2 cu2 te2 su2 lu2) =
324-
Dim (le1+le2) (ma1+ma2) (ti1+ti2) (cu1+cu2) (te1+t2) (su1+su2) (lu1+lu2)
315+
mulDim (Dim le1 ma1 ti1 cu1 te1 su1 lu1)
316+
(Dim le2 ma2 ti2 cu2 te2 su2 lu2) =
317+
Dim (le1+le2) (ma1+ma2) (ti1+ti2) (cu1+cu2)
318+
(te1+te2) (su1+su2) (lu1+lu2)
325319
\end{lstlisting}
326320

327321
Expontenterna hos de två dimensionerna som multipliceras adderas i enlighet med
328322
potensregeln.
329323

330324
För att se alla implementationer hänvisas läsaren till läromaterialet i sig. Ett
331325
utdrag finns i bilaga~\ref{cha:utdrag} och det fullständiga finns tillgängligt
332-
på internet\cite{LYAP}.
326+
på internet~\cite{LYAP}.
333327

334328
\subsubsection*{Implementation av komposita områden}
335329

336330
Implementationen av komposita områden var en vidareutveckling på de redan
337331
implementerade grundläggande områdena. Detta utfördes genom att kombinera
338-
element från två eller flera områden för att på så sätt tillsammans skapa ett
339-
helt nytt område. Denna kombination växte fram organiskt genom att studera de
332+
element från två eller fler områden för att på så sätt tillsammans skapa ett nytt område. Denna kombination växte fram organiskt genom att studera de
340333
områden som skulle implementeras och se vilka av de grundläggande områdena som
341-
låg till grund. Efter en sådan studie växte den faktiska implementationen fram
334+
låg till grund för det. Efter en sådan studie växte den faktiska implementationen fram
342335
genom experimentering och diskussion inom gruppen.
343336

344-
Ett exempel på ett komposit område är implementationen av fysik för partiklar
345-
där det grundläggande området vektorer och området om matematisk analys
337+
Ett exempel på ett komposit område är implementationen av partikelmekanik
338+
där de grundläggande områdena vektorer och matematisk analys
346339
kombinerades. Anledningen till detta var att partiklars position, hastighet och
347340
acceleration modelleras med vektorer, dessutom är de krafter som påverkar
348-
partiklar även modellerade som vektorer. Sen används matematisk analys för att
349-
göra dessa beräkningar. Därför var det naturligt att modellera klassisk mekanik
341+
partiklar även modellerade som vektorer. Sedan används matematisk analys för att
342+
göra dessa beräkningar. Därför var det naturligt att modellera partikelmekanik
350343
med hjälp av vektorer vars komponenter var datatypen för uttryck som
351344
implementerades av matematisk analys.
352345

353-
Exempel från läromaterialet:
346+
Exempel från läromaterialet
354347
\begin{lstlisting}[frame=none, belowskip=-0.5\baselineskip, xleftmargin=0.5in]
355348
type Mass = FunExpr
356-
type VectorE = Vector3 FunExpr -- Vector of functional expressions
349+
type VectorE = Vector3 FunExpr -- Vector of functional
350+
-- expressions
357351

358-
data Particle = P { pos :: VectorE -- Position as a function of time, unit m
359-
, mass :: Mass -- Mass, unit kg
352+
data Particle = P { pos :: VectorE -- Position as a
353+
-- function of time
354+
-- , unit m
355+
, mass :: Mass -- Mass, unit kg
360356
}
361357
\end{lstlisting}
362358

@@ -391,15 +387,13 @@ \subsection{Skriva lärotext}
391387
övergripande likadana. Skillnaden låg i balansen mellan Haskell och fysik. För
392388
de grundläggande områdena fokuserade lärotexten mer på Haskell eftersom det var
393389
ett helt nytt domänspecifikt språk som skulle konstrueras. Hur det fungerade var
394-
därför viktigt att förklara. Dessutom var de fysikaliska och matematiska
395-
inslagen inte alltför stora. I kontrast står lärotexten för det komposita
390+
därför viktigt att förklara. I kontrast står lärotexten för det komposita
396391
områdena, där ett större fokus låg på fysik. För dessa områden visades hur de
397392
domänspecifika språken var praktiskt användbara och då förklarades fysik, för
398393
att sedan kunna visa hur den fysiken kunde represententeras i de domänspecifika
399394
språken.
400395

401-
Ett exempel på ovanstående är kapitlet kring det komposita området om fysik för
402-
partiklar. Dess implementation var en sammanslagning av området vektorer och
396+
Ett exempel på ovanstående är kapitlet kring det komposita området partikelmekanik. Dess implementation var en sammanslagning av området vektorer och
403397
matematisk analys, där istället för att visa och förklara hur områdena kunde
404398
implementeras i Haskell visade hur det direkt gick att översätta de
405399
fysikaliska formlerna som beskriver partiklars rörelse och energier till
@@ -424,25 +418,23 @@ \section{Skapande av och publicering på hemsidan}
424418

425419
Läromaterialet kompilerades med hjälp av ett bygg-script och
426420
publicerades på en internethemsida. Bygg-scriptet anropar
427-
\textit{Pandoc} för att konvertera från källkod och text i Literate
428-
Haskell format till HTML, redo att visas på en hemsida. Pandoc
421+
Pandoc för att konvertera från källkod och text i Literate
422+
Haskell-formatet till HTML, redo att visas på en hemsida. Pandoc
429423
packeterar även med \textit{MathJax} som använder JavaScript för att
430-
rendera matematiska formler i LaTeX format på fint och läsbart
424+
rendera matematiska formler i LaTeX-format på fint och läsbart
431425
vis. Utan stöd för JavaScript skrivs matematik ut som omodifierad
432-
LaTeX kod, vilket är mer svårläst, men fortfarande tolkningsbart. Det
433-
skrevs även \textit{CSS} manuellt för att modifiera utseendet av
434-
hemsidan sådant att den blev mer fin och läsbar enligt
435-
projektmedlemmarna.
426+
LaTeX-kod, vilket är mer svårläst, men fortfarande tolkningsbart. Det
427+
skrevs även CSS-kod manuellt för att modifiera utseendet av
428+
hemsidan så att den skulle bli prydligare och mer lättläst.
436429

437430
Varje källfil betraktades som ett kapitel och publicerades som
438431
separata undersidor. Med hjälp av ett index beskrivet i bygg-scriptet
439432
konstruerades navigationselement mellan kapitel på varje undersida
440433
och en innehållsförteckning.
441434

442-
För publicering lades all data producerad av bygg-scriptet i en ny git
443-
branch med namnet \texttt{gh-pages}. Att alla branches synkroniseras
444-
mot GitHub medför att alla filer på \texttt{gh-pages} branchen
445-
serveras som en hemsida med hjälp av \textit{GitHub
435+
För publicering lades all data producerad av bygg-scriptet i en ny git-gren (engelska \textit{git branch}) med namnet \texttt{gh-pages}. Att alla grenar synkroniseras
436+
mot GitHub medför att alla filer på \texttt{gh-pages} grenen
437+
visas som en hemsida med hjälp av \textit{GitHub
446438
Pages}. Publiceringen skedde inte kontinuerligt eller automatiskt,
447439
utan krävde en manuell synkronisering vid varje önskad uppdatering av
448440
hemsidan.
@@ -485,10 +477,7 @@ \section{Möten med fysikläraren}
485477
Under mötena presenterades läromaterialet i sig och tanken med det, nämligen att
486478
presentera fysik på ur ett annat perspektiv, ett funktionellt
487479
programmeringsperspektiv. Det diskuterades också svåra områden i Fysik för
488-
ingenjörer, vad läromaterialet skulle kunna bidra med för kunskaper till
480+
ingenjörer (se avsnitt \ref{sec:kontakt_faldt}), vad läromaterialet skulle kunna bidra med för kunskaper till
489481
studenter samt dess eventuella roll i relation till fysikkursen i övrigt.
490482

491-
Fäldt befrågades även på vilka fysikaliska områden datastudenter haft svårt för
492-
i Fysik för ingenjörer. Detta finns beskrivit i avsnitt~\ref{sec:kontakt_faldt}.
493-
494483
\end{draft}

Rapport/include/backmatter/referenser.bib

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ @misc{DPD
7474
@misc{LSB_kap5,
7575
note = "U. P. Lundgren, R. Säljö, C. Liberg (Red.), ``Lärande Skola Bildning'', 2 uppl.,ss. 139-197, Stockholm, Natur \& Kultur, 2012."
7676
}
77+
@misc{QC,
78+
note = "Hackage, ``QuickCheck: Automatic testing of Haskell programs'', 2018. [Online]. Tillgänglig: \url{https://hackage.haskell.org/package/QuickCheck}, hämtad: 2018-04-26."
79+
}
7780
@article{MD,
7881
Author = {William R. Saunders och James Grant och Eike H. Müller},
7982
Title = {A Domain Specific Language for Performance Portable Molecular Dynamics Algorithms},

0 commit comments

Comments
 (0)