Skip to content

Commit 586331e

Browse files
author
Oskar Lundström
committed
Korrekturläsning
1 parent 99a1ac3 commit 586331e

File tree

5 files changed

+29
-27
lines changed

5 files changed

+29
-27
lines changed

Rapport/include/Diskussion.tex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ \section{Genomförandediskussion}
2626

2727
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.
2828

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.
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 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.
3030

3131
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.
3232

@@ -143,7 +143,7 @@ \subsection{Om läromaterialets fokus på matematik och Haskell snarare än
143143

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

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}.
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 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}.
147147

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

185185
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.
186186

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}
187+
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}
188188

189189
År 2016 genomfördes ett kandidatarbete på Chalmers liknande
190190
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: 21 additions & 21 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}

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)