diff --git a/designpattern/lecture/Makefile b/designpattern/lecture/Makefile
new file mode 100644
index 0000000..d570705
--- /dev/null
+++ b/designpattern/lecture/Makefile
@@ -0,0 +1,29 @@
+BASENAME=designpattern
+
+PYFILES=$(wildcard *.py)
+PYPDFFILES=$(PYFILES:.py=.pdf)
+
+all : pdf 
+
+# script:
+pdf : $(BASENAME)-chapter.pdf
+
+$(BASENAME)-chapter.pdf : $(BASENAME)-chapter.tex $(BASENAME).tex $(PYPDFFILES)
+	pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true
+
+$(PYPDFFILES) : %.pdf : %.py
+	python $<
+
+clean :
+	rm -f *~ 
+	rm -f $(BASENAME).aux $(BASENAME).log
+	rm -f $(BASENAME)-chapter.aux $(BASENAME)-chapter.log $(BASENAME)-chapter.out
+	rm -f $(PYPDFFILES) $(GPTTEXFILES)
+
+cleanall : clean
+	rm -f $(BASENAME)-chapter.pdf
+
+watchpdf :
+	while true; do ! make -q pdf && make pdf; sleep 0.5; done
+
+
diff --git a/designpattern/lecture/designpattern-chapter.tex b/designpattern/lecture/designpattern-chapter.tex
new file mode 100644
index 0000000..08ff012
--- /dev/null
+++ b/designpattern/lecture/designpattern-chapter.tex
@@ -0,0 +1,225 @@
+\documentclass[12pt]{report}
+
+%%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{\tr{Introduction to Scientific Computing}{Einf\"uhrung in die wissenschaftliche Datenverarbeitung}}
+\author{Jan Grewe \& Jan Benda\\Abteilung Neuroethologie\\[2ex]\includegraphics[width=0.3\textwidth]{UT_WBMW_Rot_RGB}}
+\date{WS 15/16}
+
+%%%% language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \newcommand{\tr}[2]{#1}  % en
+% \usepackage[english]{babel}
+\newcommand{\tr}[2]{#2}  % de
+\usepackage[german]{babel}
+
+%%%%% packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{pslatex}   % nice font for pdf file
+\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
+
+%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage[left=25mm,right=25mm,top=20mm,bottom=30mm]{geometry}
+\setcounter{tocdepth}{1}
+
+%%%%% section style %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage[sf,bf,it,big,clearempty]{titlesec}
+\setcounter{secnumdepth}{1}
+
+
+%%%%% units %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage[mediumspace,mediumqspace,Gray]{SIunits}      % \ohm, \micro
+ 
+
+%%%%% figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{graphicx}
+\usepackage{xcolor}
+\pagecolor{white}
+
+\newcommand{\ruler}{\par\noindent\setlength{\unitlength}{1mm}\begin{picture}(0,6)%
+  \put(0,4){\line(1,0){170}}%
+  \multiput(0,2)(10,0){18}{\line(0,1){4}}%
+  \multiput(0,3)(1,0){170}{\line(0,1){2}}%
+  \put(0,0){\makebox(0,0){{\tiny 0}}}%
+  \put(10,0){\makebox(0,0){{\tiny 1}}}%
+  \put(20,0){\makebox(0,0){{\tiny 2}}}%
+  \put(30,0){\makebox(0,0){{\tiny 3}}}%
+  \put(40,0){\makebox(0,0){{\tiny 4}}}%
+  \put(50,0){\makebox(0,0){{\tiny 5}}}%
+  \put(60,0){\makebox(0,0){{\tiny 6}}}%
+  \put(70,0){\makebox(0,0){{\tiny 7}}}%
+  \put(80,0){\makebox(0,0){{\tiny 8}}}%
+  \put(90,0){\makebox(0,0){{\tiny 9}}}%
+  \put(100,0){\makebox(0,0){{\tiny 10}}}%
+  \put(110,0){\makebox(0,0){{\tiny 11}}}%
+  \put(120,0){\makebox(0,0){{\tiny 12}}}%
+  \put(130,0){\makebox(0,0){{\tiny 13}}}%
+  \put(140,0){\makebox(0,0){{\tiny 14}}}%
+  \put(150,0){\makebox(0,0){{\tiny 15}}}%
+  \put(160,0){\makebox(0,0){{\tiny 16}}}%
+  \put(170,0){\makebox(0,0){{\tiny 17}}}%
+  \end{picture}\par}
+
+% figures:
+\setlength{\fboxsep}{0pt}
+\newcommand{\texpicture}[1]{{\sffamily\footnotesize\input{#1.tex}}}
+%\newcommand{\texpicture}[1]{\fbox{\sffamily\footnotesize\input{#1.tex}}}
+%\newcommand{\texpicture}[1]{\setlength{\fboxsep}{2mm}\fbox{#1}}
+%\newcommand{\texpicture}[1]{}
+\newcommand{\figlabel}[1]{\textsf{\textbf{\large \uppercase{#1}}}}
+
+% maximum number of floats:
+\setcounter{topnumber}{2}
+\setcounter{bottomnumber}{0}
+\setcounter{totalnumber}{2}
+
+% float placement fractions:
+\renewcommand{\textfraction}{0.2}
+\renewcommand{\topfraction}{0.8}
+\renewcommand{\bottomfraction}{0.0}
+\renewcommand{\floatpagefraction}{0.5}
+
+% spacing for floats:
+\setlength{\floatsep}{12pt plus 2pt minus 2pt}
+\setlength{\textfloatsep}{20pt plus 4pt minus 2pt}
+\setlength{\intextsep}{12pt plus 2pt minus 2pt}
+
+% spacing for a floating page:
+\makeatletter
+  \setlength{\@fptop}{0pt}
+  \setlength{\@fpsep}{8pt plus 2.0fil}
+  \setlength{\@fpbot}{0pt plus 1.0fil}
+\makeatother
+
+% rules for floats:
+\newcommand{\topfigrule}{\vspace*{10pt}{\hrule height0.4pt}\vspace*{-10.4pt}}
+\newcommand{\bottomfigrule}{\vspace*{-10.4pt}{\hrule height0.4pt}\vspace*{10pt}}
+
+% captions:
+\usepackage[format=plain,singlelinecheck=off,labelfont=bf,font={small,sf}]{caption}
+
+% put caption on separate float:
+\newcommand{\breakfloat}{\end{figure}\begin{figure}[t]}
+
+% references to panels of a figure within the caption:
+\newcommand{\figitem}[1]{\textsf{\bfseries\uppercase{#1}}}
+% references to figures:
+\newcommand{\panel}[1]{\textsf{\uppercase{#1}}}
+\newcommand{\fref}[1]{\textup{\ref{#1}}}
+\newcommand{\subfref}[2]{\textup{\ref{#1}}\,\panel{#2}}
+% references to figures in normal text:
+\newcommand{\fig}{Fig.}
+\newcommand{\Fig}{Figure}
+\newcommand{\figs}{Figs.}
+\newcommand{\Figs}{Figures}
+\newcommand{\figref}[1]{\fig~\fref{#1}}
+\newcommand{\Figref}[1]{\Fig~\fref{#1}}
+\newcommand{\figsref}[1]{\figs~\fref{#1}}
+\newcommand{\Figsref}[1]{\Figs~\fref{#1}}
+\newcommand{\subfigref}[2]{\fig~\subfref{#1}{#2}}
+\newcommand{\Subfigref}[2]{\Fig~\subfref{#1}{#2}}
+\newcommand{\subfigsref}[2]{\figs~\subfref{#1}{#2}}
+\newcommand{\Subfigsref}[2]{\Figs~\subfref{#1}{#2}}
+% references to figures within bracketed text:
+\newcommand{\figb}{Fig.}
+\newcommand{\figsb}{Figs.}
+\newcommand{\figrefb}[1]{\figb~\fref{#1}}
+\newcommand{\figsrefb}[1]{\figsb~\fref{#1}}
+\newcommand{\subfigrefb}[2]{\figb~\subfref{#1}{#2}}
+\newcommand{\subfigsrefb}[2]{\figsb~\subfref{#1}{#2}}
+
+% references to tables:
+\newcommand{\tref}[1]{\textup{\ref{#1}}}
+% references to tables in normal text:
+\newcommand{\tab}{Tab.}
+\newcommand{\Tab}{Table}
+\newcommand{\tabs}{Tabs.}
+\newcommand{\Tabs}{Tables}
+\newcommand{\tabref}[1]{\tab~\tref{#1}}
+\newcommand{\Tabref}[1]{\Tab~\tref{#1}}
+\newcommand{\tabsref}[1]{\tabs~\tref{#1}}
+\newcommand{\Tabsref}[1]{\Tabs~\tref{#1}}
+% references to tables within bracketed text:
+\newcommand{\tabb}{Tab.}
+\newcommand{\tabsb}{Tab.}
+\newcommand{\tabrefb}[1]{\tabb~\tref{#1}}
+\newcommand{\tabsrefb}[1]{\tabsb~\tref{#1}}
+
+
+%%%%% equation references %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\newcommand{\eqref}[1]{(\ref{#1})}
+\newcommand{\eqn}{\tr{Eq}{Gl}.}
+\newcommand{\Eqn}{\tr{Eq}{Gl}.}
+\newcommand{\eqns}{\tr{Eqs}{Gln}.}
+\newcommand{\Eqns}{\tr{Eqs}{Gln}.}
+\newcommand{\eqnref}[1]{\eqn~\eqref{#1}}
+\newcommand{\Eqnref}[1]{\Eqn~\eqref{#1}}
+\newcommand{\eqnsref}[1]{\eqns~\eqref{#1}}
+\newcommand{\Eqnsref}[1]{\Eqns~\eqref{#1}}
+
+
+%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{listings}
+\lstset{
+  inputpath=../code,
+  basicstyle=\ttfamily\footnotesize,
+  numbers=left,
+  showstringspaces=false,
+  language=Matlab,
+  commentstyle=\itshape\color{darkgray},
+  keywordstyle=\color{blue},
+  stringstyle=\color{green},
+  backgroundcolor=\color{blue!10},
+  breaklines=true,
+  breakautoindent=true,
+  columns=flexible,
+  frame=single,
+  caption={\protect\filename@parse{\lstname}\protect\filename@base},
+  captionpos=t,
+  xleftmargin=1em,
+  xrightmargin=1em,
+  aboveskip=10pt
+}
+
+%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{amsmath}
+\usepackage{bm} 
+\usepackage{dsfont}
+\newcommand{\naZ}{\mathds{N}}
+\newcommand{\gaZ}{\mathds{Z}}
+\newcommand{\raZ}{\mathds{Q}}
+\newcommand{\reZ}{\mathds{R}}
+\newcommand{\reZp}{\mathds{R^+}}
+\newcommand{\reZpN}{\mathds{R^+_0}}
+\newcommand{\koZ}{\mathds{C}}
+
+
+%%%%% structure: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{ifthen}
+
+\newcommand{\code}[1]{\texttt{#1}}
+
+\newcommand{\source}[1]{    
+  \begin{flushright}
+    \color{gray}\scriptsize \url{#1}
+  \end{flushright}
+}
+
+\newenvironment{definition}[1][]{\medskip\noindent\textbf{Definition}\ifthenelse{\equal{#1}{}}{}{ #1}:\newline}%
+  {\medskip}
+
+\newcounter{maxexercise} 
+\setcounter{maxexercise}{9}  % show listings up to exercise maxexercise
+\newcounter{theexercise} 
+\setcounter{theexercise}{1}
+\newenvironment{exercise}[1][]{\medskip\noindent\textbf{\tr{Exercise}{\"Ubung}
+  \arabic{theexercise}:}\newline \newcommand{\exercisesource}{#1}}%
+  {\ifthenelse{\equal{\exercisesource}{}}{}{\ifthenelse{\value{theexercise}>\value{maxexercise}}{}{\medskip\lstinputlisting{\exercisesource}}}\medskip\stepcounter{theexercise}}
+
+\graphicspath{{figures/}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document} 
+
+\include{designpattern}
+
+\end{document}
diff --git a/designpattern/lecture/designpattern.tex b/designpattern/lecture/designpattern.tex
new file mode 100644
index 0000000..c581b9b
--- /dev/null
+++ b/designpattern/lecture/designpattern.tex
@@ -0,0 +1,166 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Design Pattern}
+
+Beim Programmieren sind sich viel Codes in ihrer Grundstruktur sehr
+\"ahnlich. Viele Konstrukte kommen in den verschiedensten Kontexten
+immer wieder in \"ahnlicher Weise vor. In diesem Kapitel stellen wir
+einige dieser ``Design pattern'' zusammen.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Plotten einer mathematischen Funktion}
+Eine mathematische Funktion ordnet einem beliebigen $x$-Wert einen
+$y$-Wert zu. Um eine solche Funktion zeichnen zu k\"onnen, m\"ussen
+wir uns eine Wertetabelle aus vielen $x$-Werten und den
+dazugeh\"origen Funktionswerten $y=f(x)$ erstellen. 
+
+Wir erstellen uns dazu einen Vektor mit geeigneten $x$-Werten, die von
+dem kleinsten bis zu dem gr\"o{\ss}ten $x$-Wert laufen, den wir
+plotten wollen. Die Schrittweite f\"ur die $x$-Werte w\"ahlen wir
+klein genug, um eine sch\"one glatte Kurve zu bekommen. F\"ur jeden
+Wert $x_i$ dieses Vektors berechnen wir den entsprechenden
+Funktionswert und erzeugen damit einen Vektor mit den $y$-Werten. Die
+Werte des $y$-Vektors k\"onnen dann gegen die Werte des $x$-Vektors
+geplottet werden.
+
+Folgende Programme berechnen und plotten die Funktion $f(x)=e^{-x^2}$:
+\begin{lstlisting}
+xmin = -1.0;
+xmax = 2.0;
+dx = 0.01;          % Schrittweite
+x = xmin:dx:xmax;   % Vektor mit x-Werten
+y = exp(-x.*x);     % keine for Schleife! '.*' fuer elementweises multiplizieren
+plot(x, y);
+\end{lstlisting}
+
+\begin{lstlisting}
+x = -1:0.01:2;      % Vektor mit x-Werten
+y = exp(-x.*x);     % keine for Schleife! '.*' fuer elementweises multiplizieren
+plot(x, y);
+\end{lstlisting}
+
+\begin{lstlisting}
+x = -1:0.01:2;      % Vektor mit x-Werten
+plot(x, exp(-x.*x));
+\end{lstlisting}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Skalieren und Verschieben nicht nur von Zufallszahlen}
+Zufallsgeneratoren geben oft nur Zufallszahlen mit festen Mittelwerten
+und Standardabweichungen (auch Skalierungen) zur\"uck. Multiplikation
+mit einem Faktor skaliert die Standardabweichung und Addition einer Zahl
+verschiebt den Mittelwert.
+
+\begin{lstlisting}
+% 100 random numbers draw from a Gaussian distribution with mean 0 and standard deviation 1.
+x = randn(100, 1);
+
+% 100 random numbers drawn from a Gaussian distribution with mean 4.8 and standard deviation 2.3.
+mu = 4.8;
+sigma = 2.3;
+y = randn(100, 1)*sigma + mu;
+\end{lstlisting}
+
+Das ist manchmal auch sinnvoll f\"ur \code{zeros} oder \code{ones}:
+\begin{lstlisting}
+x = -1:0.01:2;      % Vektor mit x-Werten
+plot(x, exp(-x.*x));
+% Plotte f\"ur die gleichen x-Werte eine Linie mit y=0.8:
+plot(x, zeros(size(x))+0.8);
+% ... Linie mit y=0.5:
+plot(x, ones(size(x))*0.5);
+\end{lstlisting}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{for Schleifen \"uber Vektoren}
+Manchmal m\"ochte man doch mit einer for-Schleife \"uber einen Vektor iterieren:
+\begin{lstlisting}
+x = [2:3:20];   % irgendein Vektor
+for i=1:length(x)
+  % Benutze den Wert des Vektors x an der Stelle des Indexes i:
+  do_something( x(i) );
+end
+\end{lstlisting}
+
+Wenn in der Schleife das Ergebnis in einen Vektor gespeichert werden soll,
+sollten wir uns vor der Schleife schon einen Vektor f\"ur die Ergebnisse
+erstellen:
+\begin{lstlisting}
+x = [2:3:20];        % irgendein Vektor
+y = zeros(size(x));  % Platz fuer die Ergebnisse
+for i=1:length(x)
+  % Schreibe den Rueckgabewert der Funktion get_something an die i-te
+  % Stelle von y:
+  y(i) = get_something( x(i) );
+end
+% jetzt koennen wir den Ergebnisvektor weiter bearbeiten:
+mean(y)
+\end{lstlisting}
+
+Die Berechnungen in der Schleife k\"onnen statt einer Zahl auch einen Vektor
+zur\"uckgeben. Wenn die L\"ange diese Vektors bekannt ist, dann kann vorher
+eine entsprechend gro{\ss}e Matrix angelegt werden:
+\begin{lstlisting}
+x = [2:3:20];        % irgendein Vektor
+y = zeros(length(x),10);  % Platz fuer die Ergebnisse
+for i=1:length(x)
+  % Schreibe den Rueckgabewert der Funktion get_something - jetzt ein
+  % Vektor mit 10 Elementen - in die i-te
+  % Zeile von y:
+  y(i,:) = get_something( x(i) );
+end
+% jetzt koennen wir die Ergebnismatrix weiter bearbeiten:
+mean(y, 1)
+\end{lstlisting}
+
+
+Alternativ k\"onnen die in der Schleife erzeugten Vektoren zu einem
+einzigen, durchgehenden Vektor zusammengestellt werden:
+\begin{lstlisting}
+x = [2:3:20];        % irgendein Vektor
+y = [];  % Leerer Vektor fuer die Ergebnisse
+for i=1:length(x)
+  % Die Funktion get_something gibt uns einen Vektor zurueck:
+  z = get_something( x(i) );
+  % dessen Inhalt h\"angen wir an unseren Ergebnissvektor an:
+  y = [y z(:)];
+end
+% jetzt koennen wir dem Ergebnisvektor weiter bearbeiten:
+mean(y)
+\end{lstlisting}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Normierung von Histogrammen}
+Meistens sollten Histogramme normiert werden, damit sie vergleichbar
+mit anderen Histogrammen oder mit theoretischen
+Wahrscheinlichkeitsverteilungen werden.
+
+Die \code{histogram} Funktion macht das mit den entsprechenden Parametern automatisch:
+\begin{lstlisting}
+x = randn(100, 1);    % irgendwelche reellwertige Daten
+histogram(x, 'Normalization', 'pdf');
+\end{lstlisting}
+
+\begin{lstlisting}
+x = randi(6, 100, 1);    % irgendwelche integer Daten
+histogram(x, 'Normalization', 'probability');
+\end{lstlisting}
+
+So geht es aber auch:
+\begin{lstlisting}
+x = randn(100, 1);         % irgendwelche reellwertige Daten
+[h, b] = hist(x);          % Histogram berechnen
+h = h/sum(h)/(b(2)-b(1));  % normieren zu einer Wahrscheinlichkeitsdichte
+bar(b, h);                 % und plotten.
+\end{lstlisting}
+
+\begin{lstlisting}
+x = randi(6, 100, 1);    % irgendwelche integer Daten
+[h, b] = hist(x);        % Histogram berechnen
+h = h/sum(h);            % normieren zu Wahrscheinlichkeiten
+bar(b, h);               % und plotten.
+\end{lstlisting}
diff --git a/pointprocesses/exercises/hompoissonspikes.m b/pointprocesses/exercises/hompoissonspikes.m
index 12af153..43b4e5c 100644
--- a/pointprocesses/exercises/hompoissonspikes.m
+++ b/pointprocesses/exercises/hompoissonspikes.m
@@ -14,6 +14,6 @@ function spikes = hompoissonspikes( trials, rate, tmax )
     x = rand( trials, ceil(tmax/dt) );
     spikes = cell( trials, 1 );
     for k=1:trials
-        spikes{k} = find( x(k,:) >= 1.0-p ) * dt;
+        spikes{k} = find( x(k,:) < p ) * dt;
     end
 end
diff --git a/pointprocesses/exercises/pointprocesses02.tex b/pointprocesses/exercises/pointprocesses02.tex
index 0e849e3..c943457 100644
--- a/pointprocesses/exercises/pointprocesses02.tex
+++ b/pointprocesses/exercises/pointprocesses02.tex
@@ -93,7 +93,7 @@ jan.benda@uni-tuebingen.de}
 Wir wollen den homogenen Poisson Prozess benutzen um Spikes zu generieren,
 mit denen wir die Analysfunktionen des vorherigen \"Ubungszettel \"uberpr\"ufen k\"onnen.
 
-Ein homogener Poisson Prozess mit der Rate $\lambda$ (measured in Hertz) ist ein Punktprozess,
+Ein homogener Poisson Prozess mit der Rate $\lambda$ (gemessen in Hertz) ist ein Punktprozess,
 bei dem die Wahrschienlichkeit eines Ereignisses unabh\"angig von der Zeit $t$ und
 unabh\"angig von vorherigen Ereignissen ist.
 Die Wahrscheinlichkeit $P$ eines Ereignisses innerhalb eines Bins der Breite $\Delta t$ ist
@@ -102,7 +102,7 @@ f\"ur gen\"ugend kleine $\Delta t$.
 \begin{parts}
   
   \part Schreibe eine Funktion die $n$ homogene Poisson Spiketrains
-  einer gegebenen Dauer $T_{max}$ mit rate $\lambda$ erzeugt.
+  einer gegebenen Dauer $T_{max}$ mit Rate $\lambda$ erzeugt.
   \begin{solution}
     \lstinputlisting{hompoissonspikes.m}
   \end{solution}
@@ -122,8 +122,8 @@ f\"ur gen\"ugend kleine $\Delta t$.
   Poisson Spiketrains mit der Rate $\lambda=100$\,Hz. Ver\"andere
   \"uber die Dauer $T_{max}$ der Spiketrains und die Anzahl $n$ der
   Trials die Anzahl der Intervalle und ver\"andere auch die Binbreite
-  des Histograms (fange mit 1\,ms an). Wieviele Interspikeintervalle
-  werden ben\"otigt um ein ``sch\"ones'' Histogramm zu erhalten? Wie
+  des Histograms (fang mit 1\,ms an). Wieviele Interspikeintervalle
+  werden ben\"otigt, um ein ``sch\"ones'' Histogramm zu erhalten? Wie
   lange m\"usste man also von dem Neuron ableiten?
   \begin{solution}
     About 5000 intervals for 25 bins. This corresponds to a $5000 /
@@ -131,56 +131,62 @@ f\"ur gen\"ugend kleine $\Delta t$.
     100\,\hertz.
   \end{solution}
   
-  \part Vergleiche das Histogramm mit der zu erwartenden Verteilung
+  \part Vergleiche Interspike-Intervall Histogramme von Poisson-Spikes
+  verschiedener Raten $\lambda$ mit der theoretisch zu erwartenden Verteilung
   der Intervalle $T$ des Poisson Prozesses
-  \[ p(T) = \lambda e^{-\lambda T} \]
-  mit rate $\lambda$.
+  \[ p(T) = \lambda e^{-\lambda T} \; .\]
   \begin{solution}
     \lstinputlisting{hompoissonisih.m}
     \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih100hz}}
     \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissonisih20hz}}
   \end{solution}
   
-  \part \extra Was pasiert mit den Histogrammen, wenn die Binbreite der Histogramme kleiner
-  als das bei der Erzeugung der $\Delta t$ der 
-  used for generating the Poisson spikes?
+  \part \extra Was pasiert mit den Histogrammen, wenn die Binbreite
+  der Histogramme kleiner als das bei der Erzeugung der Poisson
+  Spiketrains verwendete $\Delta t$ ist?
   \begin{solution}
-    The bins between the discretization have zero entries. Therefore
-    the other ones become higher than they should be.
+    Die Bins zwischen der durch $\Delta t$ vorgegebenen
+    Diskretisierung haben den Wert 0. Dadurch werden aber die anderen
+    durch die Normierung h\"oher als sie sein sollten.
   \end{solution}
   
-  \part Plot the mean interspike interval, the corresponding standard deviation, and the CV
-  as a function of the rate $\lambda$ of the Poisson process.
-  Compare the ../code with the theoretical expectations for the dependence on $\lambda$.
+  \part Plotte den Mittelwert der Interspikeintervalle, die
+  dazugeh\"orige Standardabweichung und den Variationskoeffizienten
+  als Funktion der Rate $\lambda$ des Poisson Prozesses. Vergleiche
+  die Ergebnisse mit den theoretischen Erwartungen (siehe Vorlesungsskript).
   \begin{solution}
     \lstinputlisting{hompoissonisistats.m}
     \colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonisistats}}
   \end{solution}
   
-  \part Write a function that computes serial correlations for the interspike intervals
-  for a range of lags.
-  The serial correlations $\rho_k$ at lag $k$ are defined as
-  \[ \rho_k = \frac{\langle (T_{i+k} - \langle T \rangle)(T_i - \langle T \rangle) \rangle}{\langle (T_i - \langle T \rangle)^2\rangle} = \frac{{\rm cov}(T_{i+k}, T_i)}{{\rm var}(T_i)} \]
-  Use this function to show that interspike intervals of Poisson spikes are independent.
+  \part Plotte die seriellen Korrelationen von Poisson-Spiketrains und
+  erkl\"are kurz das Ergebniss.
   \begin{solution}
-    \lstinputlisting{../code/isiserialcorr.m}
-    \colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonserial100hz}}
+    \mbox{}\\[-2ex]\hspace*{2cm}
+    \colorbox{white}{\includegraphics[width=0.8\textwidth]{poissonserial100hz}}\\
+    Alle Korrelationen zwischen Interspikeintervallen sind Null, da
+    beim Poisson Prozess das Auftreten jedes Spikes unabh\"angig von
+    den vorherigen Spikes ist.
   \end{solution}
   
-  \part Write a function that generates from spike times 
-  a histogram of spike counts in a count window of given duration $W$.
-  The function should also plot the Poisson distribution
-  \[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \]
-  for the rate $\lambda$ determined from the spike trains.
+  \part Vergleiche Histogramme von Spikecounts gez\"ahlt in Fenstern
+  der Breite $W$ mit der Poisson Verteilung
+  \[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \; , \] 
+  wobei die Rate $\lambda$ aus den Daten bestimmt werden
+  soll. Hinweis: es gibt eine \code{matlab} Funktion, die die
+  Fakult\"at $n!$ berechnet.
   \begin{solution}
     \lstinputlisting{../code/counthist.m}
     \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz10ms}}
     \colorbox{white}{\includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz100ms}}
   \end{solution}
   
-  \part Write a function that computes mean count, variance of count and the corresponding Fano factor
-  for a range of count window durations. The function should generate tow plots: one plotting
-  the count variance against the mean, the other one the Fano factor as a function of the window duration.
+  \part Schreibe eine Funktion, die die mittlere Anzahl, die Varianz
+  und den Fano-Faktor der Anzahl der Spikes in einem Fenster der
+  Breite $W$ bestimmt. Benutze die Funktion, um diese Parameter f\"ur
+  verschiedene Fensterbreiten $W$ zu bestimmen. Zwei Plots sollen aus
+  den Ergebnissen angefertigt werden: (i) Varianz gegen Mittelwert der counts.
+  (ii) Fano Faktor als Funktion der Fensterbreite.
   \begin{solution}
     \lstinputlisting{../code/fano.m}
     \colorbox{white}{\includegraphics[width=0.98\textwidth]{poissonfano100hz}}
@@ -191,11 +197,3 @@ f\"ur gen\"ugend kleine $\Delta t$.
 \end{questions}
 
 \end{document}
-
-
- Zus\"atzlich soll die Funktion
-    die Poisson-Verteilung
-    \[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \] mit der Rate
-    $\lambda$, die aus den Daten bestimmt werden kann, mit zu dem
-    Histogramm hineinzeichen. Hinweis: es gibt eine \code{matlab} Funktion,
-    die die Fakult\"at $n!$ berechnet.
\ No newline at end of file
diff --git a/pointprocesses/lecture/pointprocesses-chapter.tex b/pointprocesses/lecture/pointprocesses-chapter.tex
index 8ecbb10..44af27e 100644
--- a/pointprocesses/lecture/pointprocesses-chapter.tex
+++ b/pointprocesses/lecture/pointprocesses-chapter.tex
@@ -224,48 +224,3 @@
 
 \end{document}
 
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{\tr{Homogeneous Poisson process}{Homogener Poisson Prozess}}
-
-\begin{figure}[t]
-  \includegraphics[width=1\textwidth]{poissonraster100hz}
-  \caption{\label{hompoissonfig}Rasterplot von Poisson-Spikes.}
-\end{figure}
-
-The probability $p(t)\delta t$ of an event occuring at time $t$
-is independent of $t$ and independent of any previous event
-(independent of event history).
-
-The probability $P$ for an event occuring within a time bin of width $\Delta t$
-is
-\[ P=\lambda \cdot \Delta t \]
-for a Poisson process with rate $\lambda$.
-
-\subsection{Statistics of homogeneous Poisson process}
-
-\begin{figure}[t]
-  \includegraphics[width=0.45\textwidth]{poissonisihexp20hz}\hfill
-  \includegraphics[width=0.45\textwidth]{poissonisihexp100hz}
-  \caption{\label{hompoissonisihfig}Interspike interval histograms of poisson spike train.}
-\end{figure}
-
-\begin{itemize}
-\item Exponential distribution of intervals $T$: $p(T) = \lambda e^{-\lambda T}$
-\item Mean interval $\mu_{ISI} = \frac{1}{\lambda}$
-\item Variance of intervals $\sigma_{ISI}^2 = \frac{1}{\lambda^2}$
-\item Coefficient of variation $CV_{ISI} = 1$
-\item Serial correlation $\rho_k =0$ for $k>0$ (renewal process!)   
-\item Fano factor $F=1$
-\end{itemize}
-
-\subsection{Count statistics of Poisson process}
-
-\begin{figure}[t]
-  \includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz10ms}\hfill
-  \includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz100ms}
-  \caption{\label{hompoissoncountfig}Count statistics of poisson spike train.}
-\end{figure}
-
-Poisson distribution:
-\[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \]
\ No newline at end of file
diff --git a/pointprocesses/lecture/pointprocesses.tex b/pointprocesses/lecture/pointprocesses.tex
index 135ba4f..4777719 100644
--- a/pointprocesses/lecture/pointprocesses.tex
+++ b/pointprocesses/lecture/pointprocesses.tex
@@ -113,3 +113,52 @@ Insbesondere ist die mittlere Rate der Ereignisse $r$ (``Spikes pro Zeit'', Feue
 % \end{figure}
 
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Homogener Poisson Prozess}
+F\"ur kontinuierliche Me{\ss}gr\"o{\ss}en ist die Normalverteilung
+u.a. wegem dem Zentralen Grenzwertsatz die Standardverteilung. Eine
+\"ahnliche Rolle spilet bei Punktprozessen der ``Poisson Prozess''.
+
+Beim homogenen Poisson Prozess treten Ereignisse mit einer festen Rate
+$\lambda=\text{const.}$ auf und sind unabh\"angig von der Zeit $t$ und
+unabh\"angig von den Zeitpunkten fr\"uherer Ereignisse. Die
+Wahrscheinlichkeit zu irgendeiner Zeit ein Ereigniss in einem kleinen
+Zeitfenster der Breite $\Delta t$ zu bekommen ist
+\[ P = \lambda \cdot \Delta t \; . \]
+
+\begin{figure}[t]
+  \includegraphics[width=1\textwidth]{poissonraster100hz}
+  \caption{\label{hompoissonfig}Rasterplot von Spikes eine homogenen
+    Poisson Prozesse mit $\lambda=100$\,Hz.}
+\end{figure}
+
+Beim inhomogenen Poisson Prozess h\"angt die Rate $\lambda$ von der
+Zeit ab: $\lambda = \lambda(t)$.
+
+\begin{figure}[t]
+  \includegraphics[width=0.45\textwidth]{poissonisihexp20hz}\hfill
+  \includegraphics[width=0.45\textwidth]{poissonisihexp100hz}
+  \caption{\label{hompoissonisihfig}Interspikeintervallverteilungen
+    zweier Poissonprozesse.}
+\end{figure}
+
+Der homogne Poissonprozess hat folgende Eigenschaften:
+\begin{itemize}
+\item Die Intervalle $T$ sind exponentiell verteilt: $p(T) = \lambda e^{-\lambda T}$ .
+\item Das mittlere Intervall ist $\mu_{ISI} = \frac{1}{\lambda}$ .
+\item Die Varianz der Intervalle ist $\sigma_{ISI}^2 = \frac{1}{\lambda^2}$ .
+\item Der Variationskoeffizient ist also immer $CV_{ISI} = 1$ .
+\item Die seriellen Korrelationen $\rho_k =0$ for $k>0$, da das
+  Auftreten der Ereignisse unabh\"angig von der Vorgeschichte ist. Ein
+  solcher Prozess wird auch Erneuerungsprozess genannt (``renewal
+  process'').
+\item Die Anzahl der Ereignisse $k$ innerhalb eines Fensters der L\"ange W ist Poissonverteilt:
+\[ P(k) = \frac{(\lambda W)^ke^{\lambda W}}{k!} \]
+\item Der Fano Faktor ist immer $F=1$ .
+\end{itemize}
+
+\begin{figure}[t]
+  \includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz10ms}\hfill
+  \includegraphics[width=0.48\textwidth]{poissoncounthistdist100hz100ms}
+  \caption{\label{hompoissoncountfig}Z\"ahlstatistik von Poisson Spikes.}
+\end{figure}
diff --git a/scientificcomputing-script.tex b/scientificcomputing-script.tex
index 99be84d..65e8b2b 100644
--- a/scientificcomputing-script.tex
+++ b/scientificcomputing-script.tex
@@ -239,4 +239,7 @@
 \renewcommand{\texinputpath}{pointprocesses/lecture/}
 \include{pointprocesses/lecture/pointprocesses}
 
+\renewcommand{\codepath}{designpattern/code/}
+\include{designpattern/lecture/designpattern}
+
 \end{document}