Skip to content

Commit ee8701f

Browse files
committed
2 parents 796180a + ec2cd2a commit ee8701f

File tree

8 files changed

+33
-37
lines changed

8 files changed

+33
-37
lines changed

Rapport/include/Diskussion.tex

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11

22
\chapter{Diskussion}\label{cha:disk}
3-
\textbf{Nånstans}
4-
Implementationen kan kompileras och testas och ska då visa på att
5-
implementationerna av de grundläggande områdena är både rigorösa och korrekta.
6-
Det visar dessutom att det går att använda materialet som presenteras tidigare
7-
till att implementera och lösa mer komplexa problem.
83

94
I detta kapitel diskuteras projektets genomförande, resultat,
105
vidareutvecklingsmöjligheter och etiska aspekter.
@@ -26,7 +21,7 @@ \section{Genomförandediskussion}
2621

2722
Under projektets genomförande har det gjorts flera val av teorier och metoder att använda. Självklart behöver inte dessa val vi gjorde vara de bästa. Därför kommer vi här att kritisera dem och föreslå andra möjligheter. Närmare bestämt kommer mötet med testgruppen, urvalet och Literate Haskell att diskuteras.
2823

29-
Det sätt återkopplingen gjordes under projektet kan kritiseras på flera sätt. För det första bestod testgruppen av enbart tre personer. För det andra hölls mötet under en ytterst kort tid, ungefär en timme. Mötet hade behövt vara längre för att låta testgruppen i lugn och ro arbeta igenom ett par kapitel, inklusive att följa med i programmeringen som gjordes i läromaterialet. För det tredje var vi inte tydliga med målet med återkopplingen, nämligen om de tyckte det var meningsfullt att lära ut fysik med hjälp av domänspecifika språk. Det gjorde att de heller inte kunda tänka på dessa frågor. Med tanke på dessa tre brister i återkopplingens genomförande är alla slutsatser dragna med den som stöd ytterst osäkra.
24+
Det sätt återkopplingen gjordes under projektet kan kritiseras på flera sätt. För det första bestod testgruppen av enbart tre personer. För det andra hölls mötet under en ytterst kort tid, ungefär en timme. Mötet hade behövt vara längre för att låta testgruppen i lugn och ro arbeta igenom ett par kapitel, inklusive att följa med i programmeringen som gjordes i läromaterialet. För det tredje var vi inte tydliga med målet med återkopplingen, nämligen om de tyckte det var meningsfullt att lära ut fysik med hjälp av domänspecifika språk. Det gjorde att de heller inte kunde tänka på dessa frågor. Med tanke på dessa tre brister i återkopplingens genomförande är alla slutsatser dragna med den som stöd ytterst osäkra.
3025

3126
Det går även att kritisera hur urvalet av områden gick till under projektet. Dels kan det ha lett till att enbart två domänspecifika språk för fysik implementerades (dimensioner och partikelmekanik). Dels skedde urvalet ur implementatörens perspektiv (det vill säga vårt) och inte ur användarens perspektiv (studenten som ska nyttja läromaterialet). Med det menar vi att områden valdes utifrån hur det implementationsmässigt hängde ihop, till exempel att matematisk analys är grunden till flera tillämpningar. Istället hade områden kunnat väljas utifrån de fysikaliska problem studenter ska lösa i Fysik för ingenjörer, till exempel block och talja eller momentjämvikt, och utifrån det utforma domänspecifika språk.
3227

@@ -47,8 +42,6 @@ \section{Resultatdiskussion}\label{sec:res_disk}
4742
övergå till en mer generell diskussion kring kombinationen av domänspecifika
4843
språk och fysik.
4944

50-
\textbf{Skriv om}
51-
5245
I projektets mål och avgränsningar stod det att vi skulle börja med klassisk
5346
mekanik, för att i mån av tid även behandla termodynamik och vågrörelselära. I avsnitt~\ref{sec:res_laromaterial} nämns att de tre grundläggande
5447
områdena dimensioner, matematisk analys och vektorer är färdiga, samt de
@@ -143,7 +136,7 @@ \subsection{Om läromaterialets fokus på matematik och Haskell snarare än
143136

144137
\subsection{Lämpliga områden för domänspecifika språk}\label{sec:lampligt}
145138

146-
När domänspecifika språk implementerades visade det sig att vissa områden lämpade sig bättre än andra. Exempel på ett lämpligt och et mindre lämpligt område är vektorer respektive lutande plan\footnote{Läromaterialet behandlar fortfarande lutande plan, men inte som ett \textit{eget} domänspecifikt språk. Istället \textit{tillämpas} det domänspecifika språket för vektorer.}. Vad som skiljer dem åt är enligt oss att lämpliga områden består av tydliga \textit{data och operationer} medan mindre lämpliga områden består av \textit{egenskaper och samband}.
139+
När domänspecifika språk implementerades visade det sig att vissa områden lämpade sig bättre än andra. Exempel på ett lämpligt och ett mindre lämpligt område är vektorer respektive lutande plan\footnote{Läromaterialet behandlar fortfarande lutande plan, men inte som ett \textit{eget} domänspecifikt språk. Istället \textit{tillämpas} det domänspecifika språket för vektorer.}. Vad som skiljer dem åt är enligt oss att lämpliga områden består av tydliga \textit{data och operationer} medan mindre lämpliga områden består av \textit{egenskaper och samband}.
147140

148141
Inom området vektorer är vektorer data och till exempel vektoraddition en operation. I matematik defineras (en tvådimensionell) vektor som
149142
\begin{align*}
@@ -184,7 +177,7 @@ \subsection{Domänspecifika språk, fysik och pedagogiska aspekter}\label{sec:ba
184177

185178
En del av projektets mål är att diskutera huruvida det finns en pedagogisk nytta i att kombinera fysik och domänspecifika språk. Denna fråga diskuteras nedan.
186179

187-
I samband med fysik finns några fördelar med att integrera domänspecifika språk. Domänspecifika språk kan betraktas som ``tools for thinking''\footnote{Uttryckt i Patrik Janssons egna ord, föreläsare i kursen DSLsofMath.} och ger ett nytt perspektiv på fysik och ger den \textit{struktur}. Dimensioner är ett exempel på detta, se avsnitt~\ref{sec:res_dim}. Där konstateras att en godtycklig dimension kan skrivas som de sju basdimensionerna med tillhörande exponenter, vilket kanske inte är så man brukar se på dimensioner, men som ger dem en väldefinierad struktur. Domänspecifika språk bidrar även med \textit{rigorösitet} till fysik. Enbart de definierade operationerna går att använda, vilket leder till att genvägar i fysikaliska beräkningar inte går att göra på det sätt som är möjligt vid räkning med papper och penna. Detta tyckte även Åke Fäldt var en bra aspekt, se avsnitt~\ref{sec:res_test}. Med hjälp av domänspecifika språk är det dessutom möjlighet att väcka \textit{intresse} för fysik. En student som inte är intresserad av fysik kanske skulle bli det om fysik presenteras i samband med Haskell och domänspecifika språk, där paralleller mellan dem visas. Denna tanke stöds även av testgruppen\footnote{Eftersom mötet med testgruppen var väldigt kort är det dock svårt att dra några säkra slutsatser.}, se avsnitt~\ref{sec:res_test}
180+
I samband med fysik finns det några fördelar med att integrera domänspecifika språk. Domänspecifika språk kan betraktas som ``tools for thinking''\footnote{Uttryckt i Patrik Janssons egna ord, föreläsare i kursen DSLsofMath.} och ger ett nytt perspektiv på fysik och ger den \textit{struktur}. Dimensioner är ett exempel på detta, se avsnitt~\ref{sec:res_dim}. Där konstateras att en godtycklig dimension kan skrivas som de sju basdimensionerna med tillhörande exponenter, vilket kanske inte är så man brukar se på dimensioner, men som ger dem en väldefinierad struktur. Domänspecifika språk bidrar även med \textit{rigorösitet} till fysik. Enbart de definierade operationerna går att använda, vilket leder till att genvägar i fysikaliska beräkningar inte går att göra på det sätt som är möjligt vid räkning med papper och penna. Detta tyckte även Åke Fäldt var en bra aspekt, se avsnitt~\ref{sec:res_test}. Med hjälp av domänspecifika språk är det dessutom möjlighet att väcka \textit{intresse} för fysik. En student som inte är intresserad av fysik kanske skulle bli det om fysik presenteras i samband med Haskell och domänspecifika språk, där paralleller mellan dem visas. Denna tanke stöds även av testgruppen\footnote{Eftersom mötet med testgruppen var väldigt kort är det dock svårt att dra några säkra slutsatser.}, se avsnitt~\ref{sec:res_test}
188181

189182
År 2016 genomfördes ett kandidatarbete på Chalmers liknande
190183
detta~\cite{kandidat2016}. Det kandidatarbetet resulterade också i ett

Rapport/include/Introduktion.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ \section{Projektets mål}
100100
enklare. Detta liknar premissen bakom kursen DSLsofMath och kandidatarbetet
101101
från 2016, som istället för fysik behandlade matematik respektive signallära.
102102

103-
Mer konkret ska målet ovanstående uppnås genom att skapa ett läromaterial.
103+
Mer konkret ska det ovanstående målet uppnås genom att skapa ett läromaterial.
104104
Läromaterialet ska bestå av
105105
domänspecifika språk som modellerar fysik, skrivna
106106
%programkod skriven
@@ -125,7 +125,7 @@ \section{Avgränsningar}\label{sec:avgransningar}
125125
Kursen behandlar grunderna inom klassisk mekanik, termodynamik och
126126
vågrörelselära samt en stor mängd tillämpad matematik, exempelvis
127127
differentialkalkyl. I första hand behandlas mekaniken, för att sedan i mån
128-
av tid även behandla termodynamik och vågrörelselära. Fokuset läggs även
128+
av tid även behandla termodynamik och vågrörelselära eftersom det är i den ordningen kursen behandlar områdena. Fokuset läggs även
129129
på de områden datastudenter haft svårt för.
130130

131131
För att pröva den pedagogiska nyttan kommer enbart en informell testning

Rapport/include/Resultat.tex

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -215,28 +215,28 @@ \subsection{Matematisk analys}
215215
I läromaterialet analyseras derivering utförligt med gränsvärden, kvoter och approximativa metoder. Dessutom motiveras och implementeras symbolisk derivering. Den görs med en funktion \texttt{derive} som har ett fall för vardera av konstruktorerna i \texttt{FunExpr}. Några av fallen är
216216

217217
\begin{lstlisting}
218-
derive (f :* g) = derive f :* g :+ f :* derive g
219-
derive (f :+ g) = derive f :+ derive g
220-
derive Exp = Exp
218+
derive (f :* g) = derive f :* g :+ f :* derive g
219+
derive (f :+ g) = derive f :+ derive g
220+
derive Exp = Exp
221221
\end{lstlisting}
222222

223223
\subsection{Vektorer}
224224

225225
Kapitlet om vektorer inleds med en genomgång av vektorer och operationer på dem parallellt med att en första implementation till dem skrivs. Implementation ser ut som följer
226226

227227
\begin{lstlisting}
228-
data Vector2 n = V2 n n
229-
type Scalar = Double
230-
type VectorTwo = Vector2 Scalar
231-
232-
magnitude :: VectorTwo -> Scalar
233-
magnitude (V2 x y) = sqrt (x^2 + y^2)
234-
235-
add :: VectorTwo -> VectorTwo -> VectorTwo
236-
add (V2 x1 y1) (V2 x2 y2) = V2 (x1 + x2) (y1 + y2)
237-
238-
dotProd :: VectorTwo -> VectorTwo -> Scalar
239-
dotProd (V2 ax ay) (V2 bx by) = ax * bx + ay * by
228+
data Vector2 n = V2 n n
229+
type Scalar = Double
230+
type VectorTwo = Vector2 Scalar
231+
232+
magnitude :: VectorTwo -> Scalar
233+
magnitude (V2 x y) = sqrt (x^2 + y^2)
234+
235+
add :: VectorTwo -> VectorTwo -> VectorTwo
236+
add (V2 x1 y1) (V2 x2 y2) = V2 (x1 + x2) (y1 + y2)
237+
238+
dotProd :: VectorTwo -> VectorTwo -> Scalar
239+
dotProd (V2 ax ay) (V2 bx by) = ax * bx + ay * by
240240
\end{lstlisting}
241241

242242
Eftersom vektorer i tre dimensioner ser snarlik ut leder det till väldigt mycket duplicerad kod. En andra implementation görs därför som är mer generell. Grunden är den nedanstående typklassen
@@ -252,14 +252,14 @@ \subsection{Vektorer}
252252
som innehåller de tre funktioner som behövs för att genomföra vektoroperationerna \texttt{magnitude}, \texttt{add} och \texttt{dotProd}. De kan nämligen skrivas om enbart med hjälp av de funktioner som finns i typklassen \texttt{Vector} på följande sätt
253253

254254
\begin{lstlisting}
255-
magnitude :: (Floating n, Vector vec) => vec n -> n
256-
magnitude = sqrt . vfold (+) . vmap (**2)
255+
magnitude :: (Floating n, Vector vec) => vec n -> n
256+
magnitude = sqrt . vfold (+) . vmap (**2)
257257

258-
add :: (Num n, Vector vec) => vec n -> vec n -> vec n
259-
add = vzipWith (+)
258+
add :: (Num n, Vector vec) => vec n -> vec n -> vec n
259+
add = vzipWith (+)
260260

261-
dotProd :: (Num n, Vector vec) => vec n -> vec n -> n
262-
dotProd v1 v2 = vfold (+) $ vzipWith (*) v1 v2
261+
dotProd :: (Num n, Vector vec) => vec n -> vec n -> n
262+
dotProd v1 v2 = vfold (+) $ vzipWith (*) v1 v2
263263
\end{lstlisting}
264264

265265
Allt som behöver göras för vardera datatyp för vektorer av olika längd är därmed att göra den en \texttt{Vector}-instans. Så här ser det ut för \texttt{Vector2}
@@ -331,8 +331,7 @@ \subsection{Partikelmekanik}
331331

332332
\section{Möten och återkoppling}\label{sec:res_test}
333333

334-
Återkopplingen med testgruppen (som hade klarat fysikkursen och
335-
introduktionskursen till Haskell) var till övervägande del positivt.
334+
Återkopplingen från testgruppen var till övervägande del positiv.
336335
Testgruppen tyckte läromaterialet var ett intressant och roligt sätt att
337336
presentera fysik på. De tyckte att bilderna tjänade sitt syfte i att muntra upp
338337
läsaren. Mötet var dock för kort för att det skulle framgå huruvida läsaren lärde

Rapport/include/backmatter/Utdrag.tex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ \chapter{Läromaterialet}
2424
\includepdf[pages={-}]{include/backmatter/pdf_per_kapitel/16.pdf}
2525
\includepdf[pages={-}]{include/backmatter/pdf_per_kapitel/17.pdf}
2626
\includepdf[pages={-}]{include/backmatter/pdf_per_kapitel/18.pdf}
27-
\includepdf[pages={-}]{include/backmatter/pdf_per_kapitel/19.pdf}
27+
\includepdf[pages={-}]{include/backmatter/pdf_per_kapitel/19.pdf}
28+
\includepdf[pages={-}]{include/backmatter/pdf_per_kapitel/20.pdf}
29+
\includepdf[pages={-}]{include/backmatter/pdf_per_kapitel/21.pdf}
392 KB
Binary file not shown.
408 KB
Binary file not shown.

Rapport/include/frontmatter/Ordlista.tex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ \chapter*{Ordlista}
88

99
\textbf{DSL} Förkortning av \textit{Domain Specific Language}, engelska för domänspecifikt språk.
1010

11+
\textbf{DSLsofMath} Förkortning av \textit{Domain Specific Languages of Mathematics}, vilket är en valbar kurs i årskurs 2 på Chalmers tekniska högskola.
12+
1113
\textbf{Fysik för ingenjörer} En fysikkurs som är obligatorisk för studenter på civilingenjörsprogrammet Datateknik på Chalmers. Den ges i årskurs 2 och innehåller grunderna i klassisk mekanik, termodynamik och vågrörelselära.
1214

1315
\textbf{Literate Haskell} Litterat programmering i Haskell. Se avsnitt \ref{sec:lhs}

Rapport/include/settings/Settings.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
\lstset{breaklines=true}
6262
\lstset{basicstyle=\ttfamily}
6363
\lstset{commentstyle=\ttfamily}
64-
\lstset{deletekeywords={length}}
64+
\lstset{deletekeywords={length,magnitude}}
6565
\lstset{frame=none}
6666
\lstset{belowskip=-0.5\baselineskip}
6767
\lstset{xleftmargin=.25in}

0 commit comments

Comments
 (0)