Don't put a separate titlesheet in front of the introduction.
[matthijs/master-project/final-presentation.git] / matthijs / introduction.lhs
1 %include talk.fmt
2 \section{Presentation Matthijs}
3 \subsection{Functions}
4 \frame
5 {
6   \frametitle{Functions}
7
8   \begin{block}{Applying the $sqrt$ function to 4}<1>
9   $ sqrt(4) = 2$
10   \end{block}
11   \begin{block}{A mathematical square function}<2->
12   $ f(x) = x * x$
13   \end{block}
14   
15   \begin{block}{A square function in Haskell}<3->
16   \texttt{square x = x * x}
17   \end{block}
18 }
19
20 \note[itemize]
21 {
22   \item Functionele taal -$>$ Wiskunde-achtig
23   \item Functies staan centraal
24   \item Next sheet: sqrt example
25   \item Van buitenaf:
26     \begin{itemize}
27       \item Stop er argumenten in (toepassen)
28       \item Krijg een resultaat terug
29     \end{itemize}
30   \item Next sheet: f(x) = x*x example
31   \item Van binnenaf:
32     \begin{itemize}
33       \item \emph{Hoe} werkt de functie (definitie)
34     \end{itemize}
35   \item Next sheet: square in Haskell
36   \item Geen haakjes
37 }
38
39 \frame
40 {
41   \begin{columns}
42     \begin{column}{8cm}
43       \begin{block}{Pythagoras' theorem}
44       $ a^2 + b^2 = c^2 $
45
46       or
47
48       $ c = \sqrt{a^2 + b^2} $
49       \end{block}
50     \end{column}
51     \begin{column}{3cm}
52       \includegraphics[width=3cm]{figures/Pythagoras}
53     \end{column}
54   \end{columns}
55
56   \pause
57   % TODO: Alignment is weird due to mixing columns and non-columns
58   \begin{block}{Calculating $c$ in Haskell}
59     \texttt{pyth a b = sqrt ((square a) + (square b))}
60   \end{block}
61 }
62
63 \note[itemize]
64 {
65   \item Functies kunnen door andere functies gebruikt worden
66   \item Next sheet: Pyth function
67   \item Complexere functie
68   \item Next sheet: Pyth in Haskell
69 }
70
71 \frame
72 {
73   \begin{block}{}
74     \texttt{pyth a b = sqrt ((square a) + (square b))}
75   \end{block}
76
77   \begin{figure}
78     \includegraphics[width=9.5cm]{figures/archs/Pyth}
79   \end{figure}
80 }
81
82 \note[itemize]
83 {
84   \item Next sheet: Pyth hardware
85   \item Argumenten -$>$ input poorten
86   \item Toepassing -$>$ component
87   \item Resultaat -$>$ output poort
88   \item (Combinatorische) hardware is continu
89 }
90
91 \frame
92 {
93   \frametitle{Purity}
94
95   \begin{block}{Pure functions}
96     sqrt, pyth
97   \end{block}
98   \begin{block}{Impure functions}
99     random, delete\_file
100   \end{block}
101 }
102
103 \note[itemize]
104 {
105   \item Next sheet: Purity
106   \item Wiskundige en functionele functies zijn (meestal) puur.
107   \item Zelfde argumenten -$>$ zelfde resultaten
108   \item Geen bijwerkingen.
109 }
110
111 \subsection{State}
112
113 \frame
114 {
115   TODO: Impure (stateful) example.
116 }
117
118 \note[itemize]
119 {
120   \item TODO
121 }
122
123 \subsection{\clash}
124
125 \frame{
126   \begin{center}
127   {\Huge \clash}
128
129   \bigskip
130   CAES Language for Synchronous Hardware
131   \end{center}
132 }
133
134 \note[itemize]
135 {
136   \item Next sheet: \clash
137   \item Hardware beschrijven in Haskell: \clash
138   \item Nog niet gezien: keuzes, pattern matching, polymorfisme, hogere orde
139   functies....
140   \item Dit was de taal -$>$ compiler nodig
141 }
142
143 \frame
144 {
145   \begin{block}{Compiler pipeline}
146   $\xrightarrow{Haskell}{GHC frontend}
147   \xrightarrow{Core}{Normalization}
148   \xrightarrow{Core}{Backend}
149   \xrightarrow{VHDL}$
150   \end{block}
151 }
152
153 \note[itemize]
154 {
155   \item Next sheet: \clash\ pipeline
156   \item GHC: bestaande compiler
157   \item Core: simpele functionale taal, niet minder expressief (vergelijk:
158   taal zonder synoniemen)
159   \item VHDL: Complexe HDL, gebruiken alleen netlist onderdelen.
160   \item Normalisatie: Nog simpeler maken.
161 }
162
163 \subsection{Normalization}
164 \frame
165 {
166   \frametitle{Netlists}
167
168   \bigskip
169   \bigskip
170   \begin{figure}
171     \includegraphics[width=9.5cm]{figures/archs/Square}
172   \end{figure}
173
174   \begin{block}{Remember \texttt{square}}
175     square x = x * x
176   \end{block}
177  
178 }
179
180 \note[itemize]
181 {
182   \item Next sheet: Square netlist
183   \item Core hetzelfde als Haskell -$>$ gebruik Haskell syntax voor Core
184   \item Netlist is componenten (vierkantjes) en verbindingen (lijntjes)
185   \item Component heeft poorten, poorten moeten een naam hebben
186   \item Resultaat van square heeft geen naam -$>$ geen normaalvorm
187 }
188
189 \frame
190 {
191   \frametitle{Transformation}
192   \begin{columns}
193     \begin{column}{5cm}
194       func = E
195       
196       \smallskip
197       \hrule
198
199       \smallskip
200       func = let res = E in res
201     \end{column}
202     \begin{column}{5cm}
203       E has no name
204     \end{column}
205   \end{columns}
206
207   \pause
208   \bigskip
209   \begin{block}{Apply to square}
210     square x = x * x
211
212     \smallskip
213     \hrule
214
215     \smallskip
216     square x = let res = x * x in res
217   \end{block}
218 }
219
220 \note[itemize]
221 {
222   \item Next sheet: transformation example
223   \item Transformatie nodig om output poort een naam te geven
224   \item Next sheet: Apply to square
225   \item Toepassen op square, res heeft nu een naam.
226 }
227
228 \frame
229 {
230   \frametitle{Normalization system}
231   
232   \begin{figure}
233     \includegraphics[width=9.5cm]{figures/norm/Normalizing}
234   \end{figure}
235 }
236
237 \note[itemize]
238 {
239   \item Systeem van transformaties
240   \item Volgorde ongedefinieerd: Doe maar wat, tot het net meer kan.
241   \item Next sheet: Graafnotatie
242   \item Lijnen zijn transformaties
243   \item Keuzes (meerdere uitgaande lijnen)
244   \item Alles komt onderin uit
245 }
246
247 \frame
248 {
249   \frametitle{Normalization system}
250   
251   \begin{figure}
252     \includegraphics[width=8cm]{figures/norm/Incorrect}
253   \end{figure}
254 }
255
256 \note[itemize]
257 {
258   \item Meerdere normaalvormen
259   \item Cykel
260   \item Systeem werkt nu \emph{meestal}
261   \item verbeteringen en bewijzen nodig
262 }
263
264 \frame
265 {
266   \frametitle{Normalization system}
267
268   \begin{itemize}
269     \item Easy to work with
270     \item Allows analysis
271     \item Still complex
272   \end{itemize}
273 }
274
275 \note[itemize]
276 {
277   \item Goede scheiding
278   \item Makkelijk implementeren
279   \item Wiskundige beschrijving -$>$ bewijzen
280   \item Huidige systeem is nog incompleet
281   \item De goede weg
282 }
283
284 \subsection{Summary}
285
286 \frame
287 {
288   \frametitle{But now?}
289   \begin{itemize}
290     \item \clash\ has a solid base
291     \item Lots of work left
292     \item Needs testing!
293   \end{itemize}
294 }
295
296 \note[itemize]
297 {
298   \item \clash\ is helemaal nieuw werk
299   \item Tekortkomingen: Haskell is niet ideaal, state beschrijvingen zijn
300   niet compact, transformaties zijn nog niet (bewezen compleet).
301   \item Meer testen nodig, 
302 }
303
304 \subsection{Thanks}
305 \frame
306 {
307   {\Huge Thanks!}
308
309 }
310     
311 % vim: set filetype=tex sw=2 sts=2 expandtab: