# HG changeset patch # User Christian Urban # Date 1541748602 0 # Node ID 018b9c12ee1f8a3086e35ac0f8667cc75f32da49 # Parent 01ee4b576eb2c2f5d43d77d9560dabcc2bf1d1be updated diff -r 01ee4b576eb2 -r 018b9c12ee1f cws/cw01.pdf Binary file cws/cw01.pdf has changed diff -r 01ee4b576eb2 -r 018b9c12ee1f cws/cw01.tex --- a/cws/cw01.tex Fri Nov 09 01:08:43 2018 +0000 +++ b/cws/cw01.tex Fri Nov 09 07:30:02 2018 +0000 @@ -13,7 +13,7 @@ \noindent -This assignemnt is about Scala and worth 10\%. The first and second +This assignment is about Scala and worth 10\%. The first and second part are due on 16 November at 11pm, and the third part on 21 December at 11pm. You are asked to implement two programs about list processing and recursion. The third part is more advanced and might @@ -28,7 +28,7 @@ \DISCLAIMER{} -\subsubsection*{Reference Implementation} +\subsection*{Reference Implementation} Like the C++ assignments, the Scala assignments will work like this: you push your files to GitHub and receive (after sometimes a long delay) some @@ -55,6 +55,33 @@ ... \end{lstlisting}%$ +\subsection*{Hints} + +\noindent +\textbf{For Part 1:} useful math operators: \texttt{\%} for modulo; useful +functions: \mbox{\texttt{(1\,to\,10)}} for ranges, \texttt{.toInt}, +\texttt{.toList} for conversions, \texttt{List(...).max} for the +maximum of a list, \texttt{List(...).indexOf(...)} for the first index of +a value in a list.\bigskip + +\noindent +\textbf{For Part 2 + 3:} useful string functions: \texttt{.startsWith(...)} for +checking whether a string has a given prefix, \texttt{\_ ++ \_} for +concatenating two strings; useful option functions: \texttt{.flatten} +flattens a list of options such that it filters way all +\texttt{None}'s, \texttt{Try(...).getOrElse ...} runs some code that +might raise an exception---if yes, then a default value can be given; +useful list functions: \texttt{.head} for obtaining the first element +in a non-empty list, \texttt{.length} for the length of a +list; \texttt{.filter(...)} for filtering out elements in a list; \texttt{.getLines.toList} for obtaining a list of lines from +a file; \texttt{.split(",").toList} for splitting strings according to +a comma.\bigskip + +\noindent +Fortunately Scala supports operator overloading. But make sure you understand the difference between \texttt{100 / 3} and +\texttt{100.0 / 3}! + +\newpage \subsection*{Part 1 (3 Marks, file collatz.scala)} This part is about recursion. You are asked to implement a Scala @@ -134,12 +161,7 @@ %% \item[$\bullet$] $1 - 10$ million where $8,400,511$ takes 685 steps \end{itemize} -\noindent -\textbf{Hints:} useful math operators: \texttt{\%} for modulo; useful -functions: \mbox{\texttt{(1\,to\,10)}} for ranges, \texttt{.toInt}, -\texttt{.toList} for conversions, \texttt{List(...).max} for the -maximum of a list, \texttt{List(...).indexOf(...)} for the first index of -a value in a list. + @@ -174,15 +196,16 @@ \end{itemize} \noindent -Until Yahoo was bought by Altaba this summer, historical stock market +Until Yahoo was bought by Altaba last year, historical stock market data for such back-of-the-envelope calculations was freely available -online. Unfortuantely nowadays this kind of data is difficult to +online. Unfortunately nowadays this kind of data is more difficult to obtain, unless you are prepared to pay extortionate prices or be -severely rate-limited. Therefore this coursework comes with a number +severely rate-limited. Therefore this assignment comes with a number of files containing CSV-lists with the historical stock prices for the companies in our portfolios. Use these files for the following tasks.\bigskip +\newpage \noindent \textbf{Tasks} @@ -222,7 +245,7 @@ List(List(Some(311.349976), Some(20.544939)), List(Some(300.222351), Some(31.638695)), List(Some(330.555054), Some(39.478039))) -\end{verbatim}\hfill[1 Marks] +\end{verbatim}\hfill[1 Mark] \end{itemize} \subsection*{Advanced Part 3 (4 Marks, continue in file drumb.scala)} @@ -297,17 +320,6 @@ own calculations: there might be some small rounding errors, which when compounded lead to moderately different values.\bigskip -\noindent -\textbf{Hints:} useful string functions: \texttt{.startsWith(...)} for -checking whether a string has a given prefix, \texttt{\_ ++ \_} for -concatenating two strings; useful option functions: \texttt{.flatten} -flattens a list of options such that it filters way all -\texttt{None}'s, \texttt{Try(...) getOrElse ...} runs some code that -might raise an exception---if yes, then a default value can be given; -useful list functions: \texttt{.head} for obtaining the first element -in a non-empty list, \texttt{.length} for the length of a -list.\bigskip - \noindent \textbf{Moral:} Reflecting on our assumptions, we are over-estimating @@ -348,7 +360,7 @@ \noindent Write another function that can read the file \texttt{population.csv} -from disk (the file is distributed with the coursework). This +from disk (the file is distributed with the assignment). This function should take a string as argument, the file name, and again return a list of strings corresponding to each entry in the CSV-list. For \texttt{population.csv}, this list should contain 216