cws/cw02.tex
changeset 276 52faee6d0be2
parent 268 e43f7e92ba26
child 284 9a04eb6a2291
equal deleted inserted replaced
275:eb1b4ad23941 276:52faee6d0be2
     9 
     9 
    10 \section*{Coursework 7 (Scala)}
    10 \section*{Coursework 7 (Scala)}
    11 
    11 
    12 \mbox{}\hfill\textit{``What one programmer can do in one month,}\\
    12 \mbox{}\hfill\textit{``What one programmer can do in one month,}\\
    13 \mbox{}\hfill\textit{two programmers can do in two months.''}\smallskip\\
    13 \mbox{}\hfill\textit{two programmers can do in two months.''}\smallskip\\
    14 \mbox{}\hfill\textit{ --- Frederick P.~Brooks (author of The Mythical Man-Month)}\bigskip
    14 \mbox{}\hfill\textit{ --- Frederick P.~Brooks (author of The Mythical Man-Month)}\bigskip\medskip
    15 
    15 
    16 \noindent
    16 \noindent
    17 This coursework is worth 10\%. The basic part is due
    17 This coursework is worth 10\%. The basic part is due
    18 on 22 November at 11pm; the main part is due on 20
    18 on 22 November at 11pm; the main part is due on 20
    19 December at 11pm. You are asked to implement Scala programs for
    19 December at 11pm. You are asked to implement Scala programs for
    69 elements in a list that satisfy some condition, \texttt{.toMap}
    69 elements in a list that satisfy some condition, \texttt{.toMap}
    70 transfers a list of pairs into a Map, \texttt{.sum} adds up a list of
    70 transfers a list of pairs into a Map, \texttt{.sum} adds up a list of
    71 integers, \texttt{.max} calculates the maximum of a list.\bigskip
    71 integers, \texttt{.max} calculates the maximum of a list.\bigskip
    72 
    72 
    73 \noindent
    73 \noindent
    74 \textbf{For Part 2 + 3:} use \texttt{.split(",").toList} for splitting
    74 \textbf{For Part 2:} use \texttt{.split(",").toList} for splitting
    75 strings according to commas (similarly $\backslash$\texttt{n}),
    75 strings according to commas (similarly $\backslash$\texttt{n}),
    76 \texttt{.getOrElse(..,..)} allows to querry a Map, but also gives a
    76 \texttt{.getOrElse(..,..)} allows to querry a Map, but also gives a
    77 default value if the Map is not defined, a Map can be `updated' by
    77 default value if the Map is not defined, a Map can be `updated' by
    78 using \texttt{+}, \texttt{.contains} and \texttt{.filter} can test whether
    78 using \texttt{+}, \texttt{.contains} and \texttt{.filter} can test whether
    79 an element is included in a list, and respectively filter out elements in a list,
    79 an element is included in a list, and respectively filter out elements in a list,
   100 \subsection*{Tasks}
   100 \subsection*{Tasks}
   101 
   101 
   102 \begin{itemize}
   102 \begin{itemize}
   103 \item[(1)] Implement a function that `cleans' a string by finding all
   103 \item[(1)] Implement a function that `cleans' a string by finding all
   104   (proper) words in this string. For this use the regular expression
   104   (proper) words in this string. For this use the regular expression
   105   \texttt{$\backslash$w+} for recognising word characters and the
   105   \texttt{\textbackslash{}w+} for recognising words and the library function
   106   library function \texttt{findAllIn}. The function should return a
   106   \texttt{findAllIn}. The function should return a document (a list of
   107   document (a list of
       
   108   strings).\\
   107   strings).\\
   109   \mbox{}\hfill [1 Mark]
   108   \mbox{}\hfill [1 Mark]
   110 
   109 
   111 \item[(2)] In order to compute the overlap between two documents, we
   110 \item[(2)] In order to compute the overlap between two documents, we
   112   associate each document with a \texttt{Map}. This Map represents the
   111   associate each document with a \texttt{Map}. This Map represents the