Fill most of the presentation.
authorMatthijs Kooijman <matthijs@stdin.nl>
Sun, 13 Dec 2009 19:42:25 +0000 (20:42 +0100)
committerMatthijs Kooijman <matthijs@stdin.nl>
Sun, 13 Dec 2009 19:48:02 +0000 (20:48 +0100)
figures/archs/Pyth.dia [new file with mode: 0644]
figures/archs/Pyth.pdf [new file with mode: 0644]
figures/archs/Square.dia [new file with mode: 0644]
figures/archs/Square.pdf [new file with mode: 0644]
figures/norm/Incorrect.dia [new file with mode: 0644]
figures/norm/Incorrect.pdf [new file with mode: 0644]
figures/norm/Normalizing.dia [new file with mode: 0644]
figures/norm/Normalizing.pdf [new file with mode: 0644]
matthijs/introduction.lhs

diff --git a/figures/archs/Pyth.dia b/figures/archs/Pyth.dia
new file mode 100644 (file)
index 0000000..251c274
Binary files /dev/null and b/figures/archs/Pyth.dia differ
diff --git a/figures/archs/Pyth.pdf b/figures/archs/Pyth.pdf
new file mode 100644 (file)
index 0000000..7d9e94e
Binary files /dev/null and b/figures/archs/Pyth.pdf differ
diff --git a/figures/archs/Square.dia b/figures/archs/Square.dia
new file mode 100644 (file)
index 0000000..dcf77eb
Binary files /dev/null and b/figures/archs/Square.dia differ
diff --git a/figures/archs/Square.pdf b/figures/archs/Square.pdf
new file mode 100644 (file)
index 0000000..36ebe54
Binary files /dev/null and b/figures/archs/Square.pdf differ
diff --git a/figures/norm/Incorrect.dia b/figures/norm/Incorrect.dia
new file mode 100644 (file)
index 0000000..9b77e83
Binary files /dev/null and b/figures/norm/Incorrect.dia differ
diff --git a/figures/norm/Incorrect.pdf b/figures/norm/Incorrect.pdf
new file mode 100644 (file)
index 0000000..c54e23c
Binary files /dev/null and b/figures/norm/Incorrect.pdf differ
diff --git a/figures/norm/Normalizing.dia b/figures/norm/Normalizing.dia
new file mode 100644 (file)
index 0000000..77e774e
Binary files /dev/null and b/figures/norm/Normalizing.dia differ
diff --git a/figures/norm/Normalizing.pdf b/figures/norm/Normalizing.pdf
new file mode 100644 (file)
index 0000000..0fe07e9
Binary files /dev/null and b/figures/norm/Normalizing.pdf differ
index 22f0f0a650a0223f5d6a583c4e848635b2c99d7a..e8b93304a8b10d2e2d1e8ee1dbd4dd2bc4a2b678 100644 (file)
@@ -8,47 +8,37 @@
 
 \frame
 {
-  \begin{block}{Applying the $sqrt$ function to 4}
+  \frametitle{Functions}
+
+  \begin{block}{Applying the $sqrt$ function to 4}<1>
   $ sqrt(4) = 2$
   \end{block}
-}
-
-\note[itemize]
-{
-  \item Functional language - Math like
-  \item Central: Functions
-  \item Outside:
-    \begin{itemize}
-      \item Put arguments in (application)
-      \item get result out
-    \end{itemize}
-  \item Inside:
-    \begin{itemize}
-      \item \emph{How} does the function work? (definition)
-    \end{itemize}
-
-  \item Next sheet: sqrt example
-}
-
-\frame
-{
-  \begin{block}{A mathematical square function}
+  \begin{block}{A mathematical square function}<2->
   $ f(x) = x * x$
   \end{block}
   
-  \pause
-  \begin{block}{A square function in Haskell}
+  \begin{block}{A square function in Haskell}<3->
   \texttt{square x = x * x}
   \end{block}
 }
 
 \note[itemize]
 {
+  \item Functionele taal -$>$ Wiskunde-achtig
+  \item Functies staan centraal
+  \item Next sheet: sqrt example
+  \item Van buitenaf:
+    \begin{itemize}
+      \item Stop er argumenten in (toepassen)
+      \item Krijg een resultaat terug
+    \end{itemize}
   \item Next sheet: f(x) = x*x example
+  \item Van binnenaf:
+    \begin{itemize}
+      \item \emph{Hoe} werkt de functie (definitie)
+    \end{itemize}
   \item Next sheet: square in Haskell
-  \item No braces
-  \item Next sheet: pyth in Haskell
-  \item Functions can be used by other functions
+  \item Geen haakjes
 }
 
 \frame
@@ -67,6 +57,7 @@
       \includegraphics[width=3cm]{figures/Pythagoras}
     \end{column}
   \end{columns}
+
   \pause
   % TODO: Alignment is weird due to mixing columns and non-columns
   \begin{block}{Calculating $c$ in Haskell}
   \end{block}
 }
 
+\note[itemize]
+{
+  \item Functies kunnen door andere functies gebruikt worden
+  \item Next sheet: Pyth function
+  \item Complexere functie
+  \item Next sheet: Pyth in Haskell
+}
+
+\frame
+{
+  \begin{block}{}
+    \texttt{pyth a b = sqrt ((square a) + (square b))}
+  \end{block}
+
+  \begin{figure}
+    \includegraphics[width=9.5cm]{figures/archs/Pyth}
+  \end{figure}
+}
+
+\note[itemize]
+{
+  \item Next sheet: Pyth hardware
+  \item Argumenten -$>$ input poorten
+  \item Toepassing -$>$ component
+  \item Resultaat -$>$ output poort
+  \item (Combinatorische) hardware is continu
+}
+
+\frame
+{
+  \frametitle{Purity}
+
+  \begin{block}{Pure functions}
+    sqrt, pyth
+  \end{block}
+  \begin{block}{Impure functions}
+    random, delete\_file
+  \end{block}
+}
+
+\note[itemize]
+{
+  \item Next sheet: Purity
+  \item Wiskundige en functionele functies zijn (meestal) puur.
+  \item Zelfde argumenten -$>$ zelfde resultaten
+  \item Geen bijwerkingen.
+}
+
+\frame
+{
+  TODO: Impure (stateful) example.
+}
+
+\note[itemize]
+{
+  \item TODO
+}
+
+\frame{
+  \begin{center}
+  {\Huge \clash}
+
+  \bigskip
+  CAES language for hardware descriptions
+  \end{center}
+}
+
+\note[itemize]
+{
+  \item Next sheet: \clash
+  \item Hardware beschrijven in Haskell: \clash
+  \item Nog niet gezien: keuzes, pattern matching, polymorfisme, hogere orde
+  functies....
+  \item Dit was de taal -$>$ compiler nodig
+}
+
+\frame
+{
+  \begin{block}{Compiler pipeline}
+  $\xrightarrow{Haskell}{GHC frontend}
+  \xrightarrow{Core}{Normalization}
+  \xrightarrow{Core}{Backend}
+  \xrightarrow{VHDL}$
+  \end{block}
+}
+
+\note[itemize]
+{
+  \item Next sheet: \clash\ pipeline
+  \item GHC: bestaande compiler
+  \item Core: simpele functionale taal, niet minder expressief (vergelijk:
+  taal zonder synoniemen)
+  \item VHDL: Complexe HDL, gebruiken alleen netlist onderdelen.
+  \item Normalisatie: Nog simpeler maken.
+}
+
+\frame
+{
+  \frametitle{Netlists}
+
+  \bigskip
+  \bigskip
+  \begin{figure}
+    \includegraphics[width=9.5cm]{figures/archs/Square}
+  \end{figure}
+
+  \begin{block}{Remember \texttt{square}}
+    square x = x * x
+  \end{block}
+}
+
+\note[itemize]
+{
+  \item Next sheet: Square netlist
+  \item Core hetzelfde als Haskell -$>$ gebruik Haskell syntax voor Core
+  \item Netlist is componenten (vierkantjes) en verbindingen (lijntjes)
+  \item Component heeft poorten, poorten moeten een naam hebben
+  \item Resultaat van square heeft geen naam -$>$ geen normaalvorm
+}
+
+\frame
+{
+  \frametitle{Transformation}
+  \begin{columns}
+    \begin{column}{5cm}
+      func = E
+      
+      \smallskip
+      \hrule
+
+      \smallskip
+      func = let res = E in res
+    \end{column}
+    \begin{column}{5cm}
+      E has no name
+    \end{column}
+  \end{columns}
+
+  \pause
+  \bigskip
+  \begin{block}{Apply to square}
+    square x = x * x
+
+    \smallskip
+    \hrule
+
+    \smallskip
+    square x = let res = x * x in res
+  \end{block}
+}
+
+\note[itemize]
+{
+  \item Next sheet: transformation example
+  \item Transformatie nodig om output poort een naam te geven
+  \item Next sheet: Apply to square
+  \item Toepassen op square, res heeft nu een naam.
+}
+
+\frame
+{
+  \frametitle{Normalization system}
+  
+  \begin{figure}
+    \includegraphics[width=9.5cm]{figures/norm/Normalizing}
+  \end{figure}
+}
+
+\note[itemize]
+{
+  \item Systeem van transformaties
+  \item Volgorde ongedefinieerd: Doe maar wat, tot het net meer kan.
+  \item Next sheet: Graafnotatie
+  \item Lijnen zijn transformaties
+  \item Keuzes (meerdere uitgaande lijnen)
+  \item Alles komt onderin uit
+}
+
+\frame
+{
+  \frametitle{Normalization system}
+  
+  \begin{figure}
+    \includegraphics[width=8cm]{figures/norm/Incorrect}
+  \end{figure}
+}
+
+\note[itemize]
+{
+  \item Meerdere normaalvormen
+  \item Cykel
+  \item Systeem werkt nu \emph{meestal}
+  \item verbeteringen en bewijzen nodig
+}
+
+\frame
+{
+  \frametitle{Normalization system}
+
+  \begin{itemize}
+    \item Easy to work with
+    \item Allows analysis
+    \item Still complex
+  \end{itemize}
+}
+
+\note[itemize]
+{
+  \item Goede scheiding
+  \item Makkelijk implementeren
+  \item Wiskundige beschrijving -$>$ bewijzen
+  \item Huidige systeem is nog incompleet
+  \item De goede weg
+}
+
+\frame
+{
+  \frametitle{But now?}
+  \begin{itemize}
+    \item \clash\ has a solid base
+    \item Lots of work left
+    \item Needs testing!
+  \end{itemize}
+}
+
+\note[itemize]
+{
+  \item \clash\ is helemaal nieuw werk
+  \item Tekortkomingen: Haskell is niet ideaal, state beschrijvingen zijn
+  niet compact, transformaties zijn nog niet (bewezen compleet).
+  \item Meer testen nodig, 
+}
+
+\frame
+{
+  {\Huge Thanks!}
+
+}
+    
 % vim: set filetype=tex sw=2 sts=2 expandtab: