updated
authorChristian Urban <christian.urban@kcl.ac.uk>
Thu, 02 Nov 2023 13:53:37 +0000
changeset 474 b528d1d3d3c3
parent 473 ac79c2e534bd
child 475 59e005dcf163
updated
core_testing1/collatz_test.sh
core_testing3/postfix_test.sh
core_testing3/postfix_test1.scala
core_testing3/postfix_test2.scala
core_testing3/postfix_test3.scala
core_testing3/postfix_test7.scala
core_testing3/postfix_test8.scala
core_testing3/postfix_test9.scala
cws/core_cw01.pdf
cws/core_cw01.tex
cws/core_cw02.pdf
cws/core_cw02.tex
cws/disclaimer.sty
--- a/core_testing1/collatz_test.sh	Thu Nov 02 12:37:58 2023 +0000
+++ b/core_testing1/collatz_test.sh	Thu Nov 02 13:53:37 2023 +0000
@@ -15,13 +15,13 @@
 # compilation tests
 
 function scala_compile {
-  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala-cli compile "$1" ) #2> c$out 1> c$out)
+  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala-cli compile "$1" 2> c$out 1> c$out)
 }
 
 # functional tests
 
 function scala_assert {
-  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala-cli -i "$1" "$2" -e "urbanmain()" ) #2> /dev/null 1> /dev/null)
+  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala-cli -i "$1" "$2" -e "urbanmain()" 2> /dev/null 1> /dev/null)
 }
 
 # purity test
@@ -42,6 +42,7 @@
     tsts=$(( 0 ))
 else
     echo -e "  --> SCALA DID NOT RUN collatz.scala\n" >> $out
+    echo -e "  --> try running scala-cli compile collatz.scala on your own computer\n" >> $out
     tsts=$(( 1 )) 
 fi
 
--- a/core_testing3/postfix_test.sh	Thu Nov 02 12:37:58 2023 +0000
+++ b/core_testing3/postfix_test.sh	Thu Nov 02 13:53:37 2023 +0000
@@ -9,26 +9,26 @@
 echo -e "Below is the feedback for your submission postfix.scala and postfix2.scala" >> $out
 echo -e "" >> $out
 
+
 # compilation tests
 
 function scala_compile {
-  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -Xprint:parser "$1" 2> c$out 1> c$out)
+  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala-cli compile "$1" 2> c$out 1> c$out)
 }
 
 # functional tests
 
 function scala_assert {
-  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -i "$1" -- "$2" -e "" 2> /dev/null 1> /dev/null)
+  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala-cli -i "$1" "$2" -e "urbanmain()" 2> /dev/null 1> /dev/null)
 }
 
 # purity test
-
 function scala_vars {
-   (egrep '\bvar\b|\breturn\b|\.par\.|\.par |ListBuffer|AtomicInteger|mutable|util.control|new Array' c$out 2> /dev/null 1> /dev/null)
+   (sed 's/immutable/ok/g' c$out > cb$out;
+    egrep '\bvar\b|\breturn\b|\.par\.|\.par |ListBuffer|AtomicInteger|mutable|util.control|new Array' cb$out 2> /dev/null 1> /dev/null)
 }
 
 
-
 # compilation test
 
 echo -e "postfix.scala runs?" >> $out
@@ -38,7 +38,8 @@
     echo -e "  --> passed" >> $out
     tsts=$(( 0 ))
   else
-    echo -e "  --> SCALA DID NOT RUN postfix.scala\n" >> $out
+      echo -e "  --> SCALA DID NOT RUN postfix.scala\n" >> $out
+      echo -e "  --> try running scala-cli compile postfix.scala on your own computer\n" >> $out
     tsts=$(( 1 )) 
 fi
 
@@ -69,7 +70,7 @@
   echo -e " syard(split(\"5 + 7 / 2\")) == List(\"5\", \"7\", \"2\", \"/\", \"+\")" >> $out
   echo -e " syard(split(\"5 * 7 / 2\")) == List(\"5\", \"7\", \"\*\", \"2\", \"/\")" >> $out
   
-  if (scala_assert "postfix.scala" "postfix_test7.scala")
+  if (scala_assert "postfix.scala" "postfix_test1.scala")
   then
     echo -e "  --> success" >> $out
   else
@@ -88,7 +89,7 @@
   echo -e " compute(syard(split(\"5 * 7 / 2\"))) == 17" >> $out
   echo -e " compute(syard(split(\"9 + 24 / ( 7 - 3 )\"))) == 15" >> $out
   
-  if (scala_assert "postfix.scala" "postfix_test8.scala")
+  if (scala_assert "postfix.scala" "postfix_test2.scala")
   then
     echo -e "  --> success" >> $out
   else
@@ -111,6 +112,7 @@
     tsts1=$(( 0 ))
 else
     echo -e "  --> SCALA DID NOT RUN postfix2.scala\n" >> $out
+    echo -e "  --> try running scala-cli compile postfix2.scala on your own computer\n" >> $out
     tsts1=$(( 1 )) 
 fi
 
@@ -152,7 +154,7 @@
   echo -e " compute(syard(split(\"( 4 ^ 3 ) ^ 2\"))) == 4096" >> $out
   echo -e " compute(syard(split(\"( 3 + 1 ) ^ 2 ^ 3\"))) == 65536" >> $out
   
-  if (scala_assert "postfix2.scala" "postfix_test9.scala")
+  if (scala_assert "postfix2.scala" "postfix_test3.scala")
   then
     echo -e "  --> success" >> $out
   else
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core_testing3/postfix_test1.scala	Thu Nov 02 13:53:37 2023 +0000
@@ -0,0 +1,10 @@
+
+def urbanmain() = {
+  import C3a._
+
+
+  assert(syard(split("3 + 4 * ( 2 - 1 )")) == List("3", "4", "2", "1", "-", "*", "+"))
+  assert(syard(split("( ( ( 3 ) ) + ( ( 4 + ( 5 ) ) ) )")) == List("3", "4", "5", "+", "+"))
+  assert(syard(split("5 + 7 / 2")) == List("5", "7", "2", "/", "+"))
+  assert(syard(split("5 * 7 / 2")) == List("5", "7", "*", "2", "/"))
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core_testing3/postfix_test2.scala	Thu Nov 02 13:53:37 2023 +0000
@@ -0,0 +1,11 @@
+
+def urbanmain() = {
+  import C3a._
+
+  assert(compute(syard(split("3 + 4 * ( 2 - 1 )"))) == 7)
+  assert(compute(syard(split("10 + 12 * 33"))) == 406)
+  assert(compute(syard(split("( 5 + 7 ) * 2"))) == 24)
+  assert(compute(syard(split("5 + 7 / 2"))) == 8)
+  assert(compute(syard(split("5 * 7 / 2"))) == 17)
+  assert(compute(syard(split("9 + 24 / ( 7 - 3 )"))) == 15)
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core_testing3/postfix_test3.scala	Thu Nov 02 13:53:37 2023 +0000
@@ -0,0 +1,23 @@
+
+
+def urbanmain() = {
+  import C3b._
+
+
+  assert(syard(split("3 + 4 * ( 2 - 1 )")) == List("3", "4", "2", "1", "-", "*", "+"))
+  assert(syard(split("( ( ( 3 ) ) + ( ( 4 + ( 5 ) ) ) )")) == List("3", "4", "5", "+", "+"))
+  assert(syard(split("5 + 7 / 2")) == List("5", "7", "2", "/", "+"))
+  assert(syard(split("5 * 7 / 2")) == List("5", "7", "*", "2", "/"))
+  assert(syard(split("3 + 4 * 8 / ( 5 - 1 ) ^ 2 ^ 3")) == List("3", "4", "8", "*", "5", "1", "-", "2", "3", "^", "^", "/", "+"))
+
+  assert(compute(syard(split("3 + 4 * ( 2 - 1 )"))) == 7)
+  assert(compute(syard(split("10 + 12 * 33"))) == 406)
+  assert(compute(syard(split("( 5 + 7 ) * 2"))) == 24)
+  assert(compute(syard(split("5 + 7 / 2"))) == 8)
+  assert(compute(syard(split("5 * 7 / 2"))) == 17)
+  assert(compute(syard(split("9 + 24 / ( 7 - 3 )"))) == 15)
+  assert(compute(syard(split("4 ^ 3 ^ 2"))) == 262144)
+  assert(compute(syard(split("4 ^ ( 3 ^ 2 )"))) == 262144)
+  assert(compute(syard(split("( 4 ^ 3 ) ^ 2"))) == 4096)
+  assert(compute(syard(split("( 3 + 1 ) ^ 2 ^ 3"))) == 65536)
+}
--- a/core_testing3/postfix_test7.scala	Thu Nov 02 12:37:58 2023 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-import C3a._
-
-
-assert(syard(split("3 + 4 * ( 2 - 1 )")) == List("3", "4", "2", "1", "-", "*", "+"))
-assert(syard(split("( ( ( 3 ) ) + ( ( 4 + ( 5 ) ) ) )")) == List("3", "4", "5", "+", "+"))
-assert(syard(split("5 + 7 / 2")) == List("5", "7", "2", "/", "+"))
-assert(syard(split("5 * 7 / 2")) == List("5", "7", "*", "2", "/"))
--- a/core_testing3/postfix_test8.scala	Thu Nov 02 12:37:58 2023 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-import C3a._
-
-assert(compute(syard(split("3 + 4 * ( 2 - 1 )"))) == 7)
-assert(compute(syard(split("10 + 12 * 33"))) == 406)
-assert(compute(syard(split("( 5 + 7 ) * 2"))) == 24)
-assert(compute(syard(split("5 + 7 / 2"))) == 8)
-assert(compute(syard(split("5 * 7 / 2"))) == 17)
-assert(compute(syard(split("9 + 24 / ( 7 - 3 )"))) == 15)
--- a/core_testing3/postfix_test9.scala	Thu Nov 02 12:37:58 2023 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-import C3b._
-
-
-assert(syard(split("3 + 4 * ( 2 - 1 )")) == List("3", "4", "2", "1", "-", "*", "+"))
-assert(syard(split("( ( ( 3 ) ) + ( ( 4 + ( 5 ) ) ) )")) == List("3", "4", "5", "+", "+"))
-assert(syard(split("5 + 7 / 2")) == List("5", "7", "2", "/", "+"))
-assert(syard(split("5 * 7 / 2")) == List("5", "7", "*", "2", "/"))
-assert(syard(split("3 + 4 * 8 / ( 5 - 1 ) ^ 2 ^ 3")) == List("3", "4", "8", "*", "5", "1", "-", "2", "3", "^", "^", "/", "+"))
-
-
-
-assert(compute(syard(split("3 + 4 * ( 2 - 1 )"))) == 7)
-assert(compute(syard(split("10 + 12 * 33"))) == 406)
-assert(compute(syard(split("( 5 + 7 ) * 2"))) == 24)
-assert(compute(syard(split("5 + 7 / 2"))) == 8)
-assert(compute(syard(split("5 * 7 / 2"))) == 17)
-assert(compute(syard(split("9 + 24 / ( 7 - 3 )"))) == 15)
-assert(compute(syard(split("4 ^ 3 ^ 2"))) == 262144)
-assert(compute(syard(split("4 ^ ( 3 ^ 2 )"))) == 262144)
-assert(compute(syard(split("( 4 ^ 3 ) ^ 2"))) == 4096)
-assert(compute(syard(split("( 3 + 1 ) ^ 2 ^ 3"))) == 65536)
Binary file cws/core_cw01.pdf has changed
--- a/cws/core_cw01.tex	Thu Nov 02 12:37:58 2023 +0000
+++ b/cws/core_cw01.tex	Thu Nov 02 13:53:37 2023 +0000
@@ -32,8 +32,8 @@
 
 \noindent
 In addition, the Scala coursework comes with a reference implementation
-in form of \texttt{jar}-files. This allows you to run any test cases on
-your own computer. For example you can call scala-cli on the command line
+in form of a \texttt{jar}-file. This allows you to run any test cases on
+your own computer. For example you can call \texttt{scala-cli} on the command line
 with the option \texttt{--extra-jars collatz.jar} and then query any function
 from the template file. Say you want to find out what the functions
 \texttt{collatz} and \texttt{collatz\_max} produce: for this you just
@@ -67,7 +67,7 @@
 This part is about function definitions and recursion. You are asked
 to implement a Scala program that tests examples of the
 \emph{$3n + 1$-conjecture}, also called \emph{Collatz
-  conjecture}.\video{https://www.youtube.com./watch?v=LqKpkdRRLZw}
+  conjecture}.\video{https://www.youtube.com/watch?v=LqKpkdRRLZw}
 This conjecture can be described as follows: Start with any positive
 number $n$ greater than $0$:
 
Binary file cws/core_cw02.pdf has changed
--- a/cws/core_cw02.tex	Thu Nov 02 12:37:58 2023 +0000
+++ b/cws/core_cw02.tex	Thu Nov 02 13:53:37 2023 +0000
@@ -34,7 +34,7 @@
 \noindent
 In addition, the Scala part comes with reference
 implementations in form of \texttt{jar}-files. This allows you to run
-any test cases on your own computer. For example you can call scala-cli on
+any test cases on your own computer. For example you can call \texttt{scala-cli} on
 the command line with the option \texttt{--extra-jars docdiff.jar} and then
 query any function from the template file. Say you want to find out
 what the function \texttt{occurrences} produces: for this you just need
@@ -141,7 +141,7 @@
 
   where $d_1^2$ means $d_1 \cdot d_1$ and so on.
   You can expect this function to return a \texttt{Double} between 0 and 1. The
-  overlap between the lists in (2) is $0.5384615384615384$.
+  overlap between the lists in Task (2) is $0.5384615384615384$.
 
   Second, implement a function that calculates the similarity of
   two strings, by first extracting the substrings using the clean
--- a/cws/disclaimer.sty	Thu Nov 02 12:37:58 2023 +0000
+++ b/cws/disclaimer.sty	Thu Nov 02 13:53:37 2023 +0000
@@ -4,7 +4,7 @@
 \begin{itemize}
 \item #1  
 \item Make sure the files you submit can be processed by just calling\\
-  \mbox{\texttt{scala-cli <<filename.scala>>}} on the command line.\footnote{All
+  \mbox{\texttt{scala-cli compile <<filename.scala>>}} on the command line.\footnote{All
     major OSes, including Windows, have a command line. So there is no
     good reason to not download scala-cli, install it and run it on your
     own computer. Just do it!} Use the
@@ -37,7 +37,7 @@
 
 \begin{itemize}
 \item Make sure the files you submit can be processed by just calling\\
-  \mbox{\texttt{scala-cli <<filename.scala>>}} on the command line.\footnote{All
+  \mbox{\texttt{scala-cli compile <<filename.scala>>}} on the command line.\footnote{All
     major OSes, including Windows, have a command line. So there is no
     good reason to not download scala-cli, install it and run it on your
     own computer. Just do it!} Use the
@@ -71,7 +71,7 @@
 
 \begin{itemize}
 \item Make sure the files you submit can be processed by just calling\\
-  \mbox{\texttt{scala <<filename.scala>>}} on the command line. Use the
+  \mbox{\texttt{scala-cli compile <<filename.scala>>}} on the command line. Use the
   template file provided and do not make any changes to arguments of
   functions or to any types. You are free to implement any auxiliary
   function you might need.