updated
authorChristian Urban <urbanc@in.tum.de>
Tue, 29 Oct 2019 14:12:24 +0000
changeset 281 87b9e3e2c1a7
parent 280 a057dc4457fc
child 282 ec9773fe1dc0
updated
marking/collatz_test1.scala
marking/collatz_test2.scala
marking/drumb_test1.scala
marking/drumb_test2.scala
marking/drumb_test3.scala
marking/knight1_test.scala
marking/knight1b_test.scala
marking/knight2b_test.scala
marking/knight3a_test.scala
marking/knight3b_test.scala
marking/knight3c_test.scala
marking/mark01a
marking/mark01b
marking/mark02
marking/mark02b
marking/mark03a
marking/mark03b
marking/mk
marking/re1a_test.scala
marking/re1b_test.scala
marking/re1c_test.scala
marking/re1d_test.scala
marking/re1e_test.scala
marking/re2a_test.scala
marking/re2b_test.scala
marking/re2c_test.scala
marking/test
marking/trade_test1.scala
marking/trade_test2.scala
marking/trade_test3.scala
marking/trade_test4.scala
marking1/collatz_test.sh
marking1/collatz_test1.scala
marking1/collatz_test2.scala
marking1/drumb.scala
marking1/drumb_test.sh
marking1/drumb_test1.scala
marking1/drumb_test2.scala
marking1/drumb_test2.sh
marking1/drumb_test3.scala
marking1/drumb_test4.scala
marking1/drumb_test5.scala
marking1/drumb_test6.scala
marking1/drumb_test7.scala
style.sty
templates1/collatz.scala
templates1/drumb.scala
testing1/collatz.scala
testing1/collatz_test.sh
testing1/collatz_test1.scala
testing1/collatz_test2.scala
testing1/drumb.scala
testing1/drumb_test.sh
testing1/drumb_test1.scala
testing1/drumb_test2.scala
testing1/drumb_test2.sh
testing1/drumb_test3.scala
testing1/drumb_test4.scala
testing1/drumb_test5.scala
testing1/drumb_test6.scala
testing1/drumb_test7.scala
--- a/marking/collatz_test1.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-
-assert(List(0,1).contains(collatz(1)))
-
-assert(collatz(2)==2)
-
-assert(collatz(9)==20)
-
-assert(collatz(9000)==48)
-
--- a/marking/collatz_test2.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-//println("starting test now")
-
-assert(collatz_max(2)==(2,2))
-
-assert(collatz_max(77000)==(340,52527))
--- a/marking/drumb_test1.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-
-assert(get_prices(List("BIDU"), 2004 to 2008) == List(List(None), List(None), 
-                                                      List(Some(6.35)), List(Some(12.241)), 
-                                                      List(Some(38.188))))
-
-
--- a/marking/drumb_test2.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-
-val urban_prices = List(List(Some(71.539941), None), 
-                        List(Some(76.974614), None), 
-                        List(Some(65.226685), Some(6.35)), 
-                        List(Some(78.354649), Some(12.241)), 
-                        List(Some(85.517645), Some(38.188)))
-
-val urban_deltas = List(List(Some(0.07596697626574789), None), 
-                        List(Some(-0.152620823795232), None), 
-                        List(Some(0.20126676681483952), Some(0.9277165354330709)), 
-                        List(Some(0.09141762603007778), Some(2.119679764725104)))
-
-
-assert (get_deltas(get_prices(List("IBM", "BIDU"), 2004 to 2008)) == urban_deltas)
-
--- a/marking/drumb_test3.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-
-val test_data = List(List(Some(71.539941), None), List(Some(76.974614), None), 
-                     List(Some(65.226685), Some(6.35)), List(Some(78.354649), Some(12.241)), 
-                     List(Some(85.517645), Some(38.188)))
-
-val test_deltas = List(List(Some(0.07596697626574789), None), 
-                       List(Some(-0.152620823795232), None), 
-                       List(Some(0.20126676681483952), Some(0.9277165354330709)), 
-                       List(Some(0.09141762603007778), Some(2.119679764725104)))
-
-assert((yearly_yield(test_deltas, 100, 0) - 107).abs <= 2)
-assert((yearly_yield(test_deltas, 100, 1) - 85).abs <= 2)
-assert((yearly_yield(test_deltas, 100, 2) - 156).abs <= 2)
-assert((yearly_yield(test_deltas, 100, 3) - 210).abs <= 2)
-assert((investment(List("IBM", "BIDU"), 2004 to 2008, 100) - 298).abs <= 10)
-
--- a/marking/knight1_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-lazy val f = Future {
-  assert(legal_moves(8, Nil, (2,2)) == 
-             List((3,4), (4,3), (4,1), (3,0), (1,0), (0,1), (0,3), (1,4)))
-  assert(legal_moves(8, Nil, (7,7)) == List((6,5), (5,6)))
-  assert(legal_moves(8, List((4,1), (1,0)), (2,2)) == 
-             List((3,4), (4,3), (3,0), (0,1), (0,3), (1,4)))
-  assert(legal_moves(8, List((6,6)), (7,7)) == List((6,5), (5,6)))
-  assert(legal_moves(1, Nil, (0,0)) == List())
-  assert(legal_moves(2, Nil, (0,0)) == List())
-  assert(legal_moves(3, Nil, (0,0)) == List((1,2), (2,1)))
-}
-
-Await.result(f, 120 second)
--- a/marking/knight1b_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-def count_all_tours(dim: Int) = {
-  for (i <- (0 until dim).toList; 
-       j <- (0 until dim).toList) yield count_tours(dim, List((i, j)))
-}
-
-def add_pair_urban(x: Pos)(y: Pos): Pos = 
-  (x._1 + y._1, x._2 + y._2)
-
-def is_legal_urban(dim: Int, path: Path)(x: Pos): Boolean = 
-  0 <= x._1 && 0 <= x._2 && x._1 < dim && x._2 < dim && !path.contains(x)
-
-def moves_urban(x: Pos): List[Pos] = 
-  List(( 1,  2),( 2,  1),( 2, -1),( 1, -2),
-       (-1, -2),(-2, -1),(-2,  1),(-1,  2)).map(add_pair_urban(x))
-
-def legal_moves_urban(dim: Int, path: Path, x: Pos): List[Pos] = 
-  moves_urban(x).filter(is_legal_urban(dim, path))
-
-def correct_urban(dim: Int)(p: Path): Boolean = p match {
-  case Nil => true
-  case x::Nil => true
-  case x::y::p => if (legal_moves_urban(dim, p, y).contains(x)) correct_urban(dim)(y::p) else false
-}
-
-
-lazy val f = Future {
-  assert(count_all_tours(1) == List(1))
-  assert(count_all_tours(2) == List(0, 0, 0, 0))
-  assert(count_all_tours(3) == List(0, 0, 0, 0, 0, 0, 0, 0, 0))
-  assert(count_all_tours(4) == List(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
-  assert(count_all_tours(5) == List(304, 0, 56, 0, 304, 0, 56, 0, 56, 0, 56, 0, 64, 0, 56, 0, 56, 0, 56, 0, 304, 0, 56, 0, 304))
-
-  val ts = enum_tours(5, List((0, 2)))
-  assert(ts.map(correct_urban(5)).forall(_ == true) == true)
-  assert(ts.length == 56)  
-}
-
-Await.result(f, 360 second)
--- a/marking/knight2b_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-def add_pair_urban(x: Pos)(y: Pos): Pos = 
-  (x._1 + y._1, x._2 + y._2)
-
-def is_legal_urban(dim: Int, path: Path)(x: Pos): Boolean = 
-  0 <= x._1 && 0 <= x._2 && x._1 < dim && x._2 < dim && !path.contains(x)
-
-def moves_urban(x: Pos): List[Pos] = 
-  List(( 1,  2),( 2,  1),( 2, -1),( 1, -2),
-       (-1, -2),(-2, -1),(-2,  1),(-1,  2)).map(add_pair_urban(x))
-
-def legal_moves_urban(dim: Int, path: Path, x: Pos): List[Pos] = 
-  moves_urban(x).filter(is_legal_urban(dim, path))
-
-def correct_urban(dim: Int)(p: Path): Boolean = p match {
-  case Nil => true
-  case x::Nil => true
-  case x::y::p => 
-    if (legal_moves_urban(dim, p, y).contains(x)) correct_urban(dim)(y::p) else false
-}
-
-
-lazy val f = Future {
-
-  val ts1 = first_tour(8, List((0, 0))).get
-  assert(correct_urban(8)(ts1) == true)
-
-  val ts2 = first_tour(4, List((0, 0)))
-  assert(ts2 == None)  
-}
-
-Await.result(f, 300 second)
--- a/marking/knight3a_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-lazy val f = Future {
-
-assert( ordered_moves(8, List((3,4), (3,2)), (1, 3)) == List((0,1), (0,5), (2,1), (2,5)))
-assert( ordered_moves(8, List((4,0)), (0,0)) == List((2,1), (1,2)))
-assert( ordered_moves(8, List((0,4)), (0,0)) == List((1,2), (2,1)))
-
-}
-
-Await.result(f, 120 second)
--- a/marking/knight3b_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-def add_pair_urban(x: Pos)(y: Pos): Pos = 
-  (x._1 + y._1, x._2 + y._2)
-
-def is_legal_urban(dim: Int, path: Path)(x: Pos): Boolean = 
-  0 <= x._1 && 0 <= x._2 && x._1 < dim && x._2 < dim && !path.contains(x)
-
-def moves_urban(x: Pos): List[Pos] = 
-  List(( 1,  2),( 2,  1),( 2, -1),( 1, -2),
-       (-1, -2),(-2, -1),(-2,  1),(-1,  2)).map(add_pair_urban(x))
-
-def legal_moves_urban(dim: Int, path: Path, x: Pos): List[Pos] = 
-  moves_urban(x).filter(is_legal_urban(dim, path))
-
-def correct_urban(dim: Int)(p: Path): Boolean = p match {
-  case Nil => true
-  case x::Nil => true
-  case x::y::p => 
-    if (legal_moves_urban(dim, p, y).contains(x)) correct_urban(dim)(y::p) else false
-}
-
-def correct_closed_urban(dim: Int)(p: Path) =
-  correct_urban(6)(p) &&  moves_urban(p.head).contains(p.last)
-
-lazy val f = Future {
-
-  val tsc = first_closed_tour_heuristic(6, List((3, 3))).get
-  assert(correct_closed_urban(6)(tsc) == true)
-
-}
-
-Await.result(f, 300 second)
--- a/marking/knight3c_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-def add_pair_urban(x: Pos)(y: Pos): Pos = 
-  (x._1 + y._1, x._2 + y._2)
-
-def is_legal_urban(dim: Int, path: Path)(x: Pos): Boolean = 
-  0 <= x._1 && 0 <= x._2 && x._1 < dim && x._2 < dim && !path.contains(x)
-
-def moves_urban(x: Pos): List[Pos] = 
-  List(( 1,  2),( 2,  1),( 2, -1),( 1, -2),
-       (-1, -2),(-2, -1),(-2,  1),(-1,  2)).map(add_pair_urban(x))
-
-def legal_moves_urban(dim: Int, path: Path, x: Pos): List[Pos] = 
-  moves_urban(x).filter(is_legal_urban(dim, path))
-
-def correct_urban(dim: Int)(p: Path): Boolean = p match {
-  case Nil => true
-  case x::Nil => true
-  case x::y::p => 
-    if (legal_moves_urban(dim, p, y).contains(x)) correct_urban(dim)(y::p) else false
-}
-
-
-lazy val f1 = Future {
-
-  val ts8 = first_tour_heuristic(8, List((0,0))).get
-  assert(correct_urban(8)(ts8) == true)
-
-}
-
-Await.result(f1, 360 second)
-
-lazy val f2 = Future {
-
-  val ts50 = first_tour_heuristic(50, List((0,0))).get
-  assert(correct_urban(50)(ts50) == true)
-
-}
-
-Await.result(f2, 360 second)
--- a/marking/mark01a	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-#!/bin/bash
-
-# try this to make it fail safely
-set -eu -o pipefail -posix
-#set -e
-
-out=${1:-output}
-
-echo "" > $out
-
-echo "Below is the feedback and provisional mark for your submission" >> $out
-echo "for assignment 6.  Please note all marks are provisional until" >> $out
-echo "ratified by the assessment board -- this is not an official" >> $out
-echo "results transcript." >> $out
-echo "" >> $out
-
-
-#alarm() { perl -e 'alarm shift; exec @ARGV' "$@"; }
-#alarm 20 foo arg1
-
-# compilation tests
-
-function scala_compile {
-  (scala "$1" 2> /dev/null 1> /dev/null) 
-}
-
-
-
-# functional tests
-
-function scala_assert {
-  (scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
-}
-
-
-# marks for CW1 parts 1 + 2
-marks=$(( 0 ))
-
-
-# compilation test
-echo "collatz.scala runs?" | tee -a $out
-
-if (scala_compile collatz.scala)
-then
-  echo "  --> success" | tee -a $out
-  tsts=$(( 0 ))
-else
-  echo "  --> scala did not run collatz.scala" | tee -a $out
-  tsts=$(( 1 )) 
-fi
-
-
-### collatz tests
-
-if [ $tsts -eq 0 ]
-then
-  echo "  collatz(1) == 1" | tee -a $out
-  echo "  collatz(2) == 2" | tee -a $out
-  echo "  collatz(9) == 20" | tee -a $out
-  echo "  collatz(9000) == 48" | tee -a $out
-
-  if (scala_assert "collatz.scala" "../collatz_test1.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 2 ))
-  else
-    echo "  --> one of the tests failed" | tee -a $out
-  fi
-fi
-
-### collatz max tests
-
-if [ $tsts -eq 0 ]
-then
-  echo "  collatz_max(2) == (2, 2)" | tee -a $out
-  echo "  collatz_max(77000) == (340, 52527)" | tee -a $out
-
-  if (scala_assert "collatz.scala" "../collatz_test2.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> one of the tests failed" | tee -a $out
-  fi
-fi
-
-
-
-
-
-# compilation test
-
-echo "trade.scala runs?" | tee -a $out
-
-if (scala_compile trade.scala)
-then
-  echo "  --> success" | tee -a $out
-  tsts=$(( 0 ))
-else
-  echo "  --> scala did not run trade.scala" | tee -a $out
-  tsts=$(( 1 ))
-fi
-
-
-### trade times tests
-
-if [ $tsts -eq 0 ]
-then
-  echo "  trade_times(List(3.0, 7.0, 2.0, 4.0)) == (2, 3)" | tee -a $out
-  echo "  trade_times(List(28.0, 18.0, 20.0, 26.0, 24.0)) == (1, 3)" | tee -a $out
-
-  if (scala_assert "trade.scala" "../trade_test1.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> one of the tests failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts -eq 0 ]
-then
-  echo "  get_page(\"GOOG\").length >= 3088" | tee -a $out
-  echo "  get_page(\"AAPL\").length >= 9065" | tee -a $out
-  echo "  get_page(\"FB\").length >= 1136" | tee -a $out
-
-  if (scala_assert "trade.scala" "../trade_test2.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> one of the tests failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts -eq 0 ]
-then
-  echo "  get_page(\"IBM\").last or head == \"1962-01-02,578.499985,578.499985,571.999991,571.999991,387200,2.260487\")" | tee -a $out
-  echo "  process_page(\"IBM\").length == get_page(\"IBM\").length - 1" | tee -a $out
-
-  if (scala_assert "trade.scala" "../trade_test3.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> one of the tests failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts -eq 0 ]
-then
-  echo "  query_company(\"YHOO\") == (\"1996-07-24\", \"2000-01-03\")" | tee -a $out
-  echo "  query_company(\"IBM\") == (\"1962-06-14\", \"2013-03-14\")" | tee -a $out
-  echo "  query_company(\"BIDU\") == (\"2006-02-07\", \"2014-11-11\")" | tee -a $out
-
- if (scala_assert "trade.scala" "../trade_test4.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> one of the tests failed" | tee -a $out
-  fi
-fi
-
-
-## final marks
-echo "Overall mark for Parts 1 and 2:" | tee -a $out
-echo "$marks" | tee -a $out
--- a/marking/mark01b	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-#!/bin/bash
-set -e
-
-out=${1:-output2}
-
-echo "" > $out
-
-echo "Below is the feedback and provisional mark for your submission" >> $out
-echo "for assignment 6 (Part 3).  Please note all marks are provisional until" >> $out
-echo "ratified by the assessment board -- this is not an official" >> $out
-echo "results transcript." >> $out
-echo "" >> $out
-
-
-#alarm() { perl -e 'alarm shift; exec @ARGV' "$@"; }
-#alarm 20 foo arg1
-
-# compilation tests
-
-function scala_compile {
-  (scala "$1" 2> /dev/null 1> /dev/null) 
-}
-
-
-
-# functional tests
-
-function scala_assert {
-  (scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
-}
-
-
-# marks for CW1 part 3
-marks=$(( 0 ))
-
-
-# compilation test
-echo "drumb.scala runs?" | tee -a $out
-
-if (scala_compile drumb.scala)
-then
-  echo "  --> yes" | tee -a $out
-  tsts=$(( 0 ))
-else
-  echo "  --> scala did not run drumb.scala" | tee -a $out
-  tsts=$(( 1 )) 
-fi
-
-
-### get price tests
-
-if [ $tsts -eq 0 ]
-then
-  echo "  get_prices(List(\"BIDU\"), 2004 to 2008) =" | tee -a $out
-  echo "  List(List(None), List(None), List(Some(6.35))," | tee -a $out
-  echo "       List(Some(12.241)), List(Some(38.188)))" | tee -a $out
-
-  if (scala_assert "drumb.scala" "../../../marking/drumb_test1.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-### get_deltas_test
-
-if [ $tsts -eq 0 ]
-then
-  echo "  get_deltas(get_prices(List(\"IBM\", \"BIDU\"), 2004 to 2008)) = " | tee -a $out
-  echo "  List(List(Some(0.07596697626574789), None), " | tee -a $out
-  echo "       List(Some(-0.152620823795232), None)," | tee -a $out
-  echo "       List(Some(0.20126676681483952), Some(0.9277165354330709))," | tee -a $out
-  echo "       List(Some(0.09141762603007778), Some(2.119679764725104)))" | tee -a $out
-  
-  if (scala_assert "drumb.scala" "../../../marking/drumb_test2.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-### yield_tests, investmetn_test
-
-if [ $tsts -eq 0 ]
-then
-  echo "  yearly_yield(IBM + BIDU, 04 - 08, 100, 0) - 107).abs <= 2 " | tee -a $out
-  echo "  yearly_yield(IBM + BIDU, 04 - 08, 100, 1) -  85).abs <= 2 " | tee -a $out
-  echo "  yearly_yield(IBM + BIDU, 04 - 08, 100, 2) - 156).abs <= 2 " | tee -a $out
-  echo "  yearly_yield(IBM + BIDU, 04 - 08, 100, 3) - 210).abs <= 2 " | tee -a $out
-  echo "  investment(List(\"IBM\", \"BIDU\"), 2004 to 2008, 100) - 298).abs <= 10" | tee -a $out
-  
-  if (scala_assert "drumb.scala" "../../../marking/drumb_test3.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-## final marks
-echo "Overall mark for CW 1, Part 3:" | tee -a $out
-echo "$marks" | tee -a $out
--- a/marking/mark02	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-#!/bin/bash
-set -e
-
-out=${1:-output}
-
-echo "" > $out
-
-echo "Below is the feedback and provisional mark for your submission" >> $out
-echo "for CW 7, Part 1.  Please note all marks are provisional until" >> $out
-echo "ratified by the assessment board -- this is not an official" >> $out
-echo "results transcript." >> $out
-echo "" >> $out
-
-function scala_vars {
-   (egrep 'var|return|ListBuffer|mutable' "$1" 2> /dev/null 1> /dev/null)
-}
-
-
-# compilation tests
-
-function scala_compile {
-  (scala "$1" 2> /dev/null 1> /dev/null) 
-}
-
-
-# functional tests
-
-function scala_assert {
-  (scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
-}
-
-
-# marks for CW2
-marks=$(( 0 ))
-
-# knights1: var, comments test
-
-echo "knight1.scala does not contain vars, returns etc?" | tee -a $out
-
-if (scala_vars knight1.scala)
-then
-  echo "  --> fail" | tee -a $out
-  tsts0=$(( 1 ))
-else
-  echo "  --> yes" | tee -a $out
-  tsts0=$(( 0 )) 
-fi
-
-
-# compilation test
-
-if [ $tsts0 -eq 0 ]
-then    
-  echo "knight1.scala runs?" | tee -a $out
-
-  if (scala_compile knight1.scala.bak)
-  then
-    echo "  --> yes" | tee -a $out
-    tsts1=$(( 0 ))
-  else
-    echo "  --> scala did not run knight1.scala" | tee -a $out
-    tsts1=$(( 1 )) 
-  fi
-else
-  tsts1=$(( 1 ))   
-fi
-
-### knight1a test
-
-if [ $tsts1 -eq 0 ]
-then
-    echo " is_legal(8, Nil) (3,4) == true " | tee -a $out
-    echo " is_legal(8, (4,1) (1,0)) (4,1) == false " | tee -a $out
-    echo " is_legal(2, Nil) (0,0) == true" | tee -a $out                          
-
-    if (scala_assert "knight1.scala.bak" "../../../marking/knight1c_test.scala")
-    then
-        echo "  --> success" | tee -a $out
-        marks=$(( marks + 1 ))
-    else
-        echo "  --> test failed" | tee -a $out
-    fi
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " legal_moves(8, Nil, (2,2)) = (3,4), (4,3), (4,1), (3,0), (1,0), (0,1), (0,3), (1,4)" | tee -a $out
-  echo " legal_moves(8, Nil, (7,7)) = (6,5), (5,6)" | tee -a $out
-  echo " legal_moves(8, (4,1), (1,0), (2,2)) = (3,4), (4,3), (3,0), (0,1), (0,3), (1,4)" | tee -a $out
-  echo " legal_moves(8, (6,6), (7,7)) = (6,5), (5,6)" | tee -a $out
-  echo " legal_moves(1, Nil, (0,0)) = Nil" | tee -a $out
-  echo " legal_moves(2, Nil, (0,0)) = Nil" | tee -a $out
-  echo " legal_moves(3, Nil, (0,0)) = (1,2), (2,1)" | tee -a $out
-  
-  if (scala_assert "knight1.scala.bak" "../../../marking/knight1_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-### knight1b test
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " all_tours from every position on the board" | tee -a $out
-  echo " dim = 1: 1" | tee -a $out
-  echo "       2: 0,0,0,0" | tee -a $out
-  echo "       3: 0,0,0,0,0,0,0,0,0" | tee -a $out
-  echo "       4: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" | tee -a $out
-  echo "       5: 304,0,56,0,304,0,56,0,56,0,56,0,64,0,56,0,56,0,56,0,304,0,56,0,304" | tee -a $out
-  echo " enum_tours(5, (0,2) ) = 56 and all correct?" | tee -a $out
-  
-  if (scala_assert "knight1.scala.bak" "../../../marking/knight1b_test.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 2 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-
-
-# knights2: var, comments test
-
-echo "knight2.scala does not contain vars, returns etc?" | tee -a $out
-
-if (scala_vars knight2.scala)
-then
-  echo "  --> fail" | tee -a $out
-  tsts0=$(( 1 ))
-else
-  echo "  --> yes" | tee -a $out
-  tsts0=$(( 0 )) 
-fi
-
-
-# compilation test
-if  [ $tsts0 -eq 0 ]
-then    
-  echo "knight2.scala runs?" | tee -a $out
-
-  if (scala_compile knight2.scala.bak)
-  then
-    echo "  --> yes" | tee -a $out
-    tsts1=$(( 0 ))
-  else
-    echo "  --> scala did not run knight2.scala" | tee -a $out
-    tsts1=$(( 1 )) 
-  fi
-else
-  tsts1=$(( 1 ))     
-fi
-
-### knight2 test
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " Let f = (x:(Int, Int)) => if (x._1 > 3) Some(List(x)) else None " | tee -a $out
-  echo "  first((1,0),(2,0),(3,0),(4,0), f) == Some(List((4,0)))" | tee -a $out
-  echo "  first((1,0),(2,0),(3,0), f) == None" | tee -a $out
-
-  if (scala_assert "knight2.scala.bak" "../../../marking/knight2_test.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-### knight2b test
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " is first_tour(8,  (0, 0)) ok? " | tee -a $out
-  echo " is first_tour(4,  (0, 0)) == None " | tee -a $out
-
-  if (scala_assert "knight2.scala.bak" "../../../marking/knight2b_test.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 2 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-
-# knights3: var, comments test
-#
-#echo "knight3.scala does not contain vars, returns etc?" | tee -a $out
-
-#if (scala_vars knight3.scala)
-#then
-#  echo "  --> fail" | tee -a $out
-#  tsts0=$(( 1 ))
-#else
-#  echo "  --> success" | tee -a $out
-#  tsts0=$(( 0 )) 
-#fi
-
-
-# compilation test
-#if  [ $tsts0 -eq 0 ]
-#then    
-#  echo "knight3.scala runs?" | tee -a $out
-#
-#  if (scala_compile knight3.scala.bak)
-#  then
-#    echo "  --> success" | tee -a $out
-#    tsts1=$(( 0 ))
-#  else
-#    echo "  --> scala did not run knight3.scala" | tee -a $out
-#    tsts1=$(( 1 )) 
-#  fi
-#else
-#  tsts1=$(( 1 ))     
-#fi
-
-
-## final marks
-echo "Overall mark for CW 2, Part 1 " | tee -a $out
-echo "$marks" | tee -a $out
--- a/marking/mark02b	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-=-p#!/bin/bash
-set -e
-
-out=${1:-output}
-
-echo "" > $out
-
-echo "Below is the feedback and provisional mark for your submission" >> $out
-echo "for CW 7, Part 2.  Please note all marks are provisional until" >> $out
-echo "ratified by the assessment board -- this is not an official" >> $out
-echo "results transcript." >> $out
-echo "" >> $out
-
-function scala_vars {
-   (egrep '\bvar\b|\breturn\b|ListBuffer|mutable' "$1" 2> /dev/null 1> /dev/null)
-}
-
-
-# compilation tests
-
-function scala_compile {
-  (scala "$1" 2> /dev/null 1> /dev/null) 
-}
-
-
-# functional tests
-
-function scala_assert {
-  (scala -i "$1" "$2" -e "") # 2> /dev/null 1> /dev/null)
-}
-
-
-# marks for CW2b
-marks=$(( 0 ))
-
-lm
-# knights3: var, comments test
-#
-echo "knight3.scala does not contain vars, returns etc?" | tee -a $out
-
-if (scala_vars knight3.scala)
-then
-  echo "  --> fail" | tee -a $out
-  tsts0=$(( 1 ))
-else
-  echo "  --> yes" | tee -a $out
-  tsts0=$(( 0 )) 
-fi
-
-
-# compilation test
-if  [ $tsts0 -eq 0 ]
-then    
-  echo "knight3.scala runs?" | tee -a $out
-
-  if (scala_compile knight3.scala.bak)
-  then
-    echo "  --> yes" | tee -a $out
-    tsts1=$(( 0 ))
-  else
-    echo "  --> scala knight3.scala did not run successfully" | tee -a $out
-    tsts1=$(( 1 )) 
-  fi
-else
-  tsts1=$(( 1 ))     
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " ordered_moves(8, List((3,4), (3,2)), (1, 3)) == List((0,1), (0,5), (2,1), (2,5))" | tee -a $out
-  echo " ordered_moves(8, List((4,0)), (0,0)) == List((2,1), (1,2))" | tee -a $out
-  echo " ordered_moves(8, List((0,4)), (0,0)) == List((1,2), (2,1))" | tee -a $out
-  
-  if (scala_assert "knight3.scala.bak" "../../../marking/knight3a_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " first_closed_tour_heuristic(6, List((3, 3))) found and ok?" | tee -a $out
-  
-  if (scala_assert "knight3.scala.bak" "../../../marking/knight3b_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " first_tour_heuristic(8, List((0,0))) found and ok?" | tee -a $out
-  echo " first_tour_heuristic(50, List((0,0))) found and ok?" | tee -a $out
-  
-  if (scala_assert "knight3.scala.bak" "../../../marking/knight3c_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-
-## final marks
-echo "Overall mark for CW 7, Part 2" | tee -a $out
-echo "$marks" | tee -a $out
--- a/marking/mark03a	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +0,0 @@
-#!/bin/bash
-set -e
-
-out=${1:-output}
-
-echo "" > $out
-
-echo "Below is the feedback and provisional mark for your submission" >> $out
-echo "for CW 8, Part 1.  Please note all marks are provisional until" >> $out
-echo "ratified by the assessment board -- this is not an official" >> $out
-echo "results transcript." >> $out
-echo "" >> $out
-
-function scala_vars {
-   (egrep '\bvar\b|\breturn\b|ListBuffer|mutable' "$1" 2> /dev/null 1> /dev/null)
-}
-
-
-# compilation tests
-
-function scala_compile {
-  (ulimit -t 1 ; scala "$1" 1> $out 2> $out) 
-}
-
-
-# functional tests
-
-function scala_assert {
-  (ulimit - t 1; scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
-}
-
-
-# marks for CW
-marks=$(( 0 ))
-
-
-# var, return, ListBuffer test
-#
-echo "re.scala does not contain vars, returns etc?" | tee -a $out
-
-if (scala_vars re.scala)
-then
-  echo "  --> fail" | tee -a $out
-  tsts0=$(( 1 ))
-else
-  echo "  --> yes" | tee -a $out
-  tsts0=$(( 0 )) 
-fi
-
-
-# compilation test
-if  [ $tsts0 -eq 0 ]
-then    
-  echo "re.scala runs?" | tee -a $out
-
-  if (scala_compile re.scala.bak)
-  then
-    echo "  --> yes" | tee -a $out
-    tsts1=$(( 0 ))
-  else
-    echo "  --> scala re.scala did not run successfully" | tee -a $out
-    tsts1=$(( 1 )) 
-  fi
-else
-  tsts1=$(( 1 ))     
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " nullable(ZERO) == false" | tee -a $out
-  echo " nullable(ONE) == true" | tee -a $out
-  echo " nullable(CHAR('a')) == false" | tee -a $out
-  echo " nullable(ZERO | ONE) == true" | tee -a $out
-  echo " nullable(ZERO | CHAR('a')) == false" | tee -a $out
-  echo " nullable(ONE ~  ONE) == true" | tee -a $out
-  echo " nullable(ONE ~ CHAR('a')) == false" | tee -a $out
-  echo " nullable(STAR(ZERO)) == true" | tee -a $out
-  
-  if (scala_assert "re.scala.bak" "../../../marking/re1a_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " der('a', ZERO | ONE) == (ZERO | ZERO)" | tee -a $out
-  echo " der('a', (CHAR('a') | ONE) ~ CHAR('a')) == ALT((ONE | ZERO) ~ CHAR('a'), ONE)" | tee -a $out
-  echo " der('a', STAR(CHAR('a'))) == (ONE ~ STAR(CHAR('a')))" | tee -a $out
-  echo " der('b', STAR(CHAR('a'))) == (ZERO ~ STAR(CHAR('a')))" | tee -a $out
-  
-  if (scala_assert "re.scala.bak" "../../../marking/re1b_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " simp(ZERO | ONE) == ONE" | tee -a $out
-  echo " simp(STAR(ZERO | ONE)) == STAR(ZERO | ONE)" | tee -a $out
-  echo " simp(ONE ~ (ONE ~ (ONE ~ CHAR('a')))) == CHAR('a')" | tee -a $out
-  echo " simp(ONE ~ (ONE ~ (ONE ~ ZERO))) == ZERO" | tee -a $out
-  echo " simp(ALT(ONE ~ (ONE ~ (ONE ~ ZERO)), CHAR('a'))) == CHAR('a')" | tee -a $out
-  echo " simp(CHAR('a') | CHAR('a')) == CHAR('a')" | tee -a $out
-  echo " simp(ONE | CHAR('a')) == (ONE | CHAR('a'))" | tee -a $out
-  
-  if (scala_assert "re.scala.bak" "../../../marking/re1c_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " EVIL = (a*)* b" | tee -a $out
-  echo " ders(List.fill(5)('a'),EVIL) == SEQ(SEQ(STAR(CHAR('a')),STAR(STAR(CHAR('a')))),CHAR('b'))" | tee -a $out
-  echo " ders(List('b'),EVIL) == ONE" | tee -a $out
-  echo " ders(List('b','b'),EVIL) == ZERO" | tee -a $out
-  echo " matcher(EVIL, \"a\" * 5 ++ \"b\") == true" | tee -a $out
-  echo " matcher(EVIL, \"b\") == true" | tee -a $out
-  echo " matcher(EVIL, \"bb\") == false" | tee -a $out
-  echo " matcher(\"abc\", \"abc\") == true" | tee -a $out
-  echo " matcher((\"ab\" | \"a\") ~ (ONE | \"bc\"), \"abc\") == true" | tee -a $out
-  echo " matcher(ONE, \"\") == true" | tee -a $out
-  echo " matcher(ZERO, \"\") == false" | tee -a $out
-  echo " matcher(ONE | CHAR('a'), \"\") == true" | tee -a $out
-  echo " matcher(ONE | CHAR('a'), \"a\") == true" | tee -a $out
-  
-  if (scala_assert "re.scala.bak" "../../../marking/re1d_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " replace(\"aa\".% | \"bb\", \"aabbbaaaaaaabaaaaabbaaaabb\" , \"c\") == \"ccbcabcaccc\"" | tee -a $out
-  echo " replace(\"aa\".% | \"bb\", \"abba\" , \"\") == \"aa\"" | tee -a $out
-  
-  if (scala_assert "re.scala.bak" "../../../marking/re1e_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 2 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-
-## final marks
-echo "Overall mark for CW 8, Part 1" | tee -a $out
-echo "$marks" | tee -a $out
--- a/marking/mark03b	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-#!/bin/bash
-set -e
-
-out=${1:-output}
-
-echo "" > $out
-
-echo "Below is the feedback and provisional mark for your submission" >> $out
-echo "for CW 8, Part 2.  Please note all marks are provisional until" >> $out
-echo "ratified by the assessment board -- this is not an official" >> $out
-echo "results transcript." >> $out
-echo "" >> $out
-
-function scala_vars {
-   (egrep '\bvar\b|\breturn\b|ListBuffer|mutable' "$1" 2> /dev/null 1> /dev/null)
-}
-
-
-# compilation tests
-
-function scala_compile {
-  (scala "$1" 2> /dev/null 1> /dev/null) 
-}
-
-
-# functional tests
-
-function scala_assert {
-  (scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
-}
-
-
-# marks for CW
-marks=$(( 0 ))
-
-
-# var, return, ListBuffer test
-#
-echo "re2.scala does not contain vars, returns etc?" | tee -a $out
-
-if (scala_vars re2.scala)
-then
-  echo "  --> fail" | tee -a $out
-  tsts0=$(( 1 ))
-else
-  echo "  --> yes" | tee -a $out
-  tsts0=$(( 0 )) 
-fi
-
-
-# compilation test
-if  [ $tsts0 -eq 0 ]
-then    
-  echo "re2.scala runs?" | tee -a $out
-
-  if (scala_compile re2.scala)
-  then
-    echo "  --> yes" | tee -a $out
-    tsts1=$(( 0 ))
-  else
-    echo "  --> scala re2.scala did not run successfully" | tee -a $out
-    tsts1=$(( 1 )) 
-  fi
-else
-  tsts1=$(( 1 ))     
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " iterT(200000, (x: Int) => x + 1, 0) == 200000" | tee -a $out
-  echo " iterT(100, (x: BigInt) => x * 2, BigInt(2)) == BigInt(\"2535301200456458802993406410752\")" | tee -a $out
-  echo " iterT(10, (x: String) => x ++ \"a\", \"a\") == \"aaaaaaaaaaa\"" | tee -a $out
-  
-  if (scala_assert "re2.scala" "../../../marking/re2a_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 2 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " size(iterT(20, (r: Rexp) => der('a', r), EVIL)) == 7340068" | tee -a $out
-  echo " size(iterT(20, (r: Rexp) => simp(der('a', r)), EVIL)) == 8" | tee -a $out
-  
-  if (scala_assert "re2.scala" "../../../marking/re2b_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  echo " fixpT((x:Int) => if (200000 < x) x else x + 1, 0) == 200001" | tee -a $out
-  echo " fixpT((x:Long) => if (20 < x) x else x + 1, 0L) == 21L" | tee -a $out
-  
-  if (scala_assert "re2.scala" "../../../marking/re2c_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-## final marks
-echo "Overall mark for CW 8, Part 2" | tee -a $out
-echo "$marks" | tee -a $out
--- a/marking/mk	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#!/bin/sh
-###set -e
-
-trap "exit" INT
-for sd in k*; do
-  cd $sd
-  echo $sd
-  touch .
-  #../mark
-  ../mark01b
-  cd ..
-done
-
-
--- a/marking/re1a_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-
-lazy val f = Future {
-  assert(nullable(ZERO) == false)
-  assert(nullable(ONE) == true)
-  assert(nullable(CHAR('a')) == false)
-  assert(nullable(ZERO | ONE) == true)
-  assert(nullable(ZERO | CHAR('a')) == false)
-  assert(nullable(ONE ~  ONE) == true)
-  assert(nullable(ONE ~ CHAR('a')) == false)
-  assert(nullable(STAR(ZERO)) == true)
-}
-
-Await.result(f, 120 second)
--- a/marking/re1b_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-
-lazy val f = Future {
-  assert(der('a', ZERO | ONE) == (ZERO | ZERO))
-  assert(der('a', (CHAR('a') | ONE) ~ CHAR('a')) == ALT((ONE | ZERO) ~ CHAR('a'), ONE))
-  assert(der('a', STAR(CHAR('a'))) == (ONE ~ STAR(CHAR('a'))))
-  assert(der('b', STAR(CHAR('a'))) == (ZERO ~ STAR(CHAR('a'))))
-}
-
-Await.result(f, 120 second)
--- a/marking/re1c_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-
-lazy val f = Future {
-  assert(simp(ZERO | ONE) == ONE)
-  assert(simp(STAR(ZERO | ONE)) == STAR(ZERO | ONE))
-  assert(simp(ONE ~ (ONE ~ (ONE ~ CHAR('a')))) == CHAR('a'))
-  assert(simp(ONE ~ (ONE ~ (ONE ~ ZERO))) == ZERO)
-  assert(simp(ALT(ONE ~ (ONE ~ (ONE ~ ZERO)), CHAR('a'))) == CHAR('a'))
-  assert(simp(CHAR('a') | CHAR('a')) == CHAR('a'))
-  assert(simp(ONE | CHAR('a')) == (ONE | CHAR('a')))
-}
-
-Await.result(f, 30 second)
--- a/marking/re1d_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-val EVIL_urban = SEQ(STAR(STAR(CHAR('a'))), CHAR('b'))
-
-lazy val f = Future {
-  println("1")
-  assert(ders(List.fill(5)('a'), EVIL_urban) == SEQ(SEQ(STAR(CHAR('a')),STAR(STAR(CHAR('a')))),CHAR('b')))
-  println("2")
-  assert(ders(List('b'), EVIL_urban) == ONE)
-  println("3")
-  assert(ders(List('b','b'), EVIL_urban) == ZERO)
-  println("4")
-  assert(matcher(EVIL_urban, "a" * 5 ++ "b") == true)
-  println("5")
-  assert(matcher(EVIL_urban, "b") == true)
-  println("6") 
-  assert(matcher(EVIL_urban, "bb") == false)
-  println("7")
-  assert(matcher("abc", "abc") == true)
-  println("8")
-  assert(matcher(("ab" | "a") ~ (ONE | "bc"), "abc") == true)
-  println("9")
-  assert(matcher(ONE, "") == true)
-  println("10")
-  assert(matcher(ZERO, "") == false)
-  println("11")
-  assert(matcher(ONE | CHAR('a'), "") == true)
-  println("12")
-  assert(matcher(ONE | CHAR('a'), "a") == true)
-}
-
-Await.result(f, 90 second)
--- a/marking/re1e_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-
-lazy val f = Future {
-  assert(replace("aa".% | "bb", "aabbbaaaaaaabaaaaabbaaaabb" , "c") == "ccbcabcaccc")
-  assert(replace("aa".% | "bb", "abba" , "") == "aa")
-}
-
-Await.result(f, 120 second)
--- a/marking/re2a_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-
-lazy val f = Future {
-  assert(iterT(200000, (x: Int) => x + 1, 0) == 200000)
-  assert(iterT(100, (x: BigInt) => x * 2, BigInt(2)) == BigInt("2535301200456458802993406410752"))
-  assert(iterT(10, (x: String) => x ++ "a", "a") == "aaaaaaaaaaa") 
-}
-
-Await.result(f, 90 second)
--- a/marking/re2b_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-val EVIL_urban = SEQ(STAR(STAR(CHAR('a'))), CHAR('b'))
-
-def nullable_urban (r: Rexp) : Boolean = r match {
-  case ZERO => false
-  case ONE => true
-  case CHAR(_) => false
-  case ALT(r1, r2) => nullable_urban(r1) || nullable_urban(r2)
-  case SEQ(r1, r2) => nullable_urban(r1) && nullable_urban(r2)
-  case STAR(_) => true
-}
-
-def der_urban (c: Char, r: Rexp) : Rexp = r match {
-  case ZERO => ZERO
-  case ONE => ZERO
-  case CHAR(d) => if (c == d) ONE else ZERO
-  case ALT(r1, r2) => ALT(der_urban(c, r1), der_urban(c, r2))
-  case SEQ(r1, r2) => 
-    if (nullable_urban(r1)) ALT(SEQ(der_urban(c, r1), r2), der_urban(c, r2))
-    else SEQ(der_urban(c, r1), r2)
-  case STAR(r1) => SEQ(der_urban(c, r1), STAR(r1))
-}
-
-def simp_urban(r: Rexp) : Rexp = r match {
-  case ALT(r1, r2) => (simp_urban(r1), simp_urban(r2)) match {
-    case (ZERO, r2s) => r2s
-    case (r1s, ZERO) => r1s
-    case (r1s, r2s) => if (r1s == r2s) r1s else ALT (r1s, r2s)
-  }
-  case SEQ(r1, r2) =>  (simp_urban(r1), simp_urban(r2)) match {
-    case (ZERO, _) => ZERO
-    case (_, ZERO) => ZERO
-    case (ONE, r2s) => r2s
-    case (r1s, ONE) => r1s
-    case (r1s, r2s) => SEQ(r1s, r2s)
-  }
-  case r => r
-}
-
-import scala.annotation.tailrec
-
-@tailrec
-def iterT_urban[A](n: Int, f: A => A, x: A): A = 
-  if (n == 0) x else iterT_urban(n - 1, f, f(x)) 
-
-
-lazy val f = Future {
-  assert(size(iterT_urban(20, (r: Rexp) => der_urban('a', r), EVIL_urban)) == 7340068) 
-  assert(size(iterT_urban(20, (r: Rexp) => simp_urban(der_urban('a', r)), EVIL_urban)) == 8) 
-}
-
-Await.result(f, 90 second)
--- a/marking/re2c_test.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-
-
-lazy val f = Future {
-  assert(fixpT((x:Int) => if (200000 < x) x else x + 1, 0) == 200001)
-  assert(fixpT((x:Long) => if (20 < x) x else x + 1, 0L) == 21L)
-}
-
-Await.result(f, 90 second)
--- a/marking/test	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-#!/bin/bash
-set -e
-
-out=${1:-output-test}
-
-
-function scala_vars {
-   (egrep '\bvar\b|\breturn\b|ListBuffer|mutable' "$1" 2> /dev/null 1> /dev/null)
-}
-
-
-# compilation tests
-
-function scala_compile {
-  (scala "$1" 2> /dev/null 1> /dev/null) 
-}
-
-
-# functional tests
-
-function scala_assert {
-  (scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
-}
-
-
-
-# var, return, ListBuffer test
-#
-#echo "re.scala does not contain vars, returns etc?" | tee -a $out
-
-if (scala_vars re.scala)
-then
-  #echo "  --> fail" | tee -a $out
-  tsts0=$(( 1 ))
-else
-  #echo "  --> yes" | tee -a $out
-  tsts0=$(( 0 )) 
-fi
-
-
-# compilation test
-if  [ $tsts0 -eq 0 ]
-then    
-  #echo "re.scala runs?" | tee -a $out
-
-  if (scala_compile re.scala.bak)
-  then
-    #echo "  --> yes" | tee -a $out
-    tsts1=$(( 0 ))
-  else
-    #echo "  --> scala re.scala did not run successfully" | tee -a $out
-    tsts1=$(( 1 )) 
-  fi
-else
-  tsts1=$(( 1 ))     
-fi
-
-
-if [ $tsts1 -eq 0 ]
-then
-  if (scala_assert "re.scala.bak" "../../../marking/re1d_test.scala")
-  then
-    echo "  --> success" | tee -a $out
-    t1=$(( 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-    t1=$(( 0 ))   
-  fi
-else  
-  t1=$(( 0 ))
-fi
-
-if [ $tsts1 -eq 0 ]
-then
-  if (scala_assert "re.scala.bak" "../../../marking/re1d_bug_test.scala")
-  then
-    echo "  bug --> success" | tee -a $out
-    t2=$(( 1 ))
-  else
-    echo "  bug --> test failed" | tee -a $out
-    t2=$(( 0 ))  
-  fi
-else  
-  t2=$(( 0 ))
-fi
-
-if [ $t1 -ne $t2 ]
-then
-  echo "disagree"
-  pwd
-fi
-
--- a/marking/trade_test1.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-//println("starting test now")
-
-assert(trade_times(List(3.0, 7.0, 2.0, 4.0)) == (2, 3))
-
-assert(trade_times(List(28.0, 18.0, 20.0, 26.0, 24.0)) == (1, 3))
-
--- a/marking/trade_test2.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-//println("starting test now")
-
-assert(get_page("GOOG").length >= 3087)
-assert(get_page("AAPL").length >= 9064)
-assert(get_page("FB").length >= 1135)
-
-
--- a/marking/trade_test3.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-//println("starting test now")
-
-val IBM = get_page("IBM")
-val str = "1962-01-02,578.499985,578.499985,571.999991,571.999991,387200,2.260487"
-
-assert(IBM.last == str || IBM.head == str)
-
-assert(process_page("IBM").length == IBM.length - 1)
--- a/marking/trade_test4.scala	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-//println("starting test now")
-
-
-import scala.concurrent._
-import scala.concurrent.duration._
-import ExecutionContext.Implicits.global
-import scala.language.postfixOps 
-
-lazy val f = Future {
-  assert(query_company("YHOO") == ("1996-07-24", "2000-01-03"))
-  assert(query_company("IBM") == ("1962-06-14", "2013-03-14"))
-  assert(query_company("BIDU") == ("2006-02-07", "2014-11-11"))
-}
-
-Await.result(f, 120 second)
--- a/marking1/collatz_test.sh	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/collatz_test.sh	Tue Oct 29 14:12:24 2019 +0000
@@ -11,7 +11,7 @@
 echo `date` >> $out
 echo >> $out
 echo "Below is the feedback and provisional marks for your submission" >> $out
-echo "for the Basic Part of Assignment 6.  Please note all marks are provisional until" >> $out
+echo "for the Preliminary Part of Assignment 6.  Please note all marks are provisional until" >> $out
 echo "ratified by the assessment board -- this is not an official" >> $out
 echo "results transcript." >> $out
 echo "" >> $out
@@ -31,7 +31,7 @@
 # functional tests
 
 function scala_assert {
-  (ulimit -t 60; JAVA_OPTS="-Xmx1g" scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
+  (ulimit -t 60; JAVA_OPTS="-Xmx1g" scala -i "$1" -- "$2" 2> /dev/null 1> /dev/null)
 }
 
 # purity test
--- a/marking1/collatz_test1.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/collatz_test1.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,14 +1,8 @@
 
-def myassert(cond : => Boolean) = {
-  try {
-    assert(cond)
-  } catch { 
-    case _ : Throwable => System.exit(1)
-  }
-}
 
-myassert(collatz(1) == 0)
-myassert(collatz(6) == 8)
-myassert(collatz(9) == 19)
-myassert(collatz(9000) == 47)
+assert(CW6a.collatz(1) == 0)
+assert(CW6a.collatz(6) == 8)
+assert(CW6a.collatz(9) == 19)
+assert(CW6a.collatz(9000) == 47)
 
+
--- a/marking1/collatz_test2.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/collatz_test2.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,23 +1,16 @@
-def myassert(cond : => Boolean) = {
-  try {
-    assert(cond)
-  } catch { 
-    case _ : Throwable => System.exit(1)
-  }
-}
-
-myassert(collatz_max(10) == (19, 9))
-
-myassert(collatz_max(100) == (118, 97))
+//def myassert(cond : => Boolean) = {
+//  try {
+//    assert(cond)
+//  } catch { 
+//    case _ : Throwable => System.exit(1)
+//  }
+//}
 
-myassert(collatz_max(1000) == (178, 871))
-
-myassert(collatz_max(10000) == (261, 6171))
-
-myassert(collatz_max(100000) == (350, 77031))
-
-myassert(collatz_max(1000000) == (524, 837799))
-
-myassert(collatz_max(2) == (1, 2))
-
-myassert(collatz_max(77000) == (339, 52527))
+assert(CW6a.collatz_max(10) == (19, 9))
+assert(CW6a.collatz_max(100) == (118, 97))
+assert(CW6a.collatz_max(1000) == (178, 871))
+assert(CW6a.collatz_max(10000) == (261, 6171))
+assert(CW6a.collatz_max(100000) == (350, 77031))
+assert(CW6a.collatz_max(1000000) == (524, 837799))
+assert(CW6a.collatz_max(2) == (1, 2))
+assert(CW6a.collatz_max(77000) == (339, 52527))
--- a/marking1/drumb.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/drumb.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,7 +1,7 @@
 // Main Part about a really dumb investment strategy
 //======================================================
 
-//object CW6b { // for purposes of generating a jar
+object CW6b {
 
 
 //two test portfolios
@@ -167,7 +167,7 @@
 //println("Real data: " + investment(rstate_portfolio, 1978 to 2019, 100))
 //println("Blue data: " + investment(blchip_portfolio, 1978 to 2019, 100))
 
-//}
+}
 
 
 
--- a/marking1/drumb_test.sh	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/drumb_test.sh	Tue Oct 29 14:12:24 2019 +0000
@@ -9,7 +9,7 @@
 echo `date` >> $out
 echo >> $out
 echo "Below is the feedback and provisional marks for your submission" >> $out
-echo "for the Main Part of Assignment 6 .  Please note all marks are provisional until" >> $out
+echo "for the Core Part of Assignment 6 .  Please note all marks are provisional until" >> $out
 echo "ratified by the assessment board -- this is not an official" >> $out
 echo "results transcript." >> $out
 echo "" >> $out
@@ -32,7 +32,7 @@
 # functional tests
 
 function scala_assert {
-    (ulimit -t 60; JAVA_OPTS="-Xmx4g" scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
+    (ulimit -t 60; JAVA_OPTS="-Xmx4g" scala -i "$1" -- "$2" -e "" 2> /dev/null 1> /dev/null)
 }
 
 
@@ -217,5 +217,5 @@
 
 ## final marks
 echo >> $out
-echo "Overall mark for CW 6, Main Part" | tee -a $out
+echo "Overall mark for CW 6, Core Part" | tee -a $out
 echo "$marks" | tee -a $out
--- a/marking1/drumb_test1.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/drumb_test1.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,12 +1,12 @@
-def myassert(cond : => Boolean) = {
+/*def myassert(cond : => Boolean) = {
   try {
     assert(cond)
   } catch { 
     case _ : Throwable => System.exit(1)
   }
 }
-
-myassert(get_january_data("GOOG", 1980) == List())
+*/
 
-myassert(get_january_data("GOOG", 2010).head == "2010-01-04,312.204773")
+assert(CW6b.get_january_data("GOOG", 1980) == List())
+assert(CW6b.get_january_data("GOOG", 2010).head == "2010-01-04,312.204773")
 
--- a/marking1/drumb_test2.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/drumb_test2.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,12 +1,12 @@
-def myassert(cond : => Boolean) = {
+/*def myassert(cond : => Boolean) = {
   try {
     assert(cond)
   } catch { 
     case _ : Throwable => System.exit(1)
   }
 }
-
-myassert(get_first_price("GOOG", 1980) == None)
+*/
 
-myassert(get_first_price("GOOG", 2010) == Some(312.204773))
+assert(CW6b.get_first_price("GOOG", 1980) == None)
+assert(CW6b.get_first_price("GOOG", 2010) == Some(312.204773))
 
--- a/marking1/drumb_test2.sh	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-#!/bin/bash
-set -euo pipefail
-
-
-out=${1:-output}
-
-echo "" > $out
-
-echo "Below is the feedback and provisional marks for your submission" >> $out
-echo "for assignment 6 Advanced Part 3.  Please note all marks are provisional until" >> $out
-echo "ratified by the assessment board -- this is not an official" >> $out
-echo "results transcript." >> $out
-echo "" >> $out
-
-# marks for CW6 part 3
-marks=$(( 0 ))
-
-
-# compilation tests
-
-function scala_compile {
-    (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -nc "$1" 2> /dev/null 1> /dev/null)
-}
-
-# functional tests
-
-function scala_assert {
-    (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -nc -i  "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
-}
-
-
-# purity test
-
-function scala_vars {
-   (egrep '\bvar\b|\breturn\b|\.par|ListBuffer|mutable|new Array' "$1" 2> /dev/null 1> /dev/null)
-}
-
-
-
-# var, .par return, ListBuffer test
-#
-echo "drumb.scala does not contain vars, returns, Arrays, ListBuffers etc?" | tee -a $out
-
-if (scala_vars drumb.scala)
-then
-  echo "  --> test failed" | tee -a $out
-  tsts0=$(( 1 ))
-else
-  echo "  --> success" | tee -a $out
-  tsts0=$(( 0 )) 
-fi
-
-
-# compilation test
-if  [ $tsts0 -eq 0 ]
-then 
-  echo "drumb.scala runs?" | tee -a $out
-
-  if (scala_compile drumb.scala)
-  then
-    echo "  --> success" | tee -a $out
-    tsts=$(( 0 ))
-  else
-    echo "  --> scala drumb.scala did not run successfully" | tee -a $out
-    tsts=$(( 1 )) 
-  fi
-else
-  tsts=$(( 1 ))     
-fi
-
-
-### get_delta test
-
-if [ $tsts -eq 0 ]
-then
-  echo "  get_delta(None, None) == None" | tee -a $out
-  echo "  get_delta(Some(50.0), None) == None" | tee -a $out
-  echo "  get_delta(None, Some(100.0)) == None" | tee -a $out
-  echo "  get_delta(Some(50.0), Some(100.0)) == Some(1.0)" | tee -a $out
-
-  if (scala_assert "drumb.scala" "drumb_test4.scala")
-  then
-      echo "  --> success" | tee -a $out
-      marks=$(( marks + 1 ))
-  else
-      echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-
-### get_deltas_test
-
-if [ $tsts -eq 0 ]
-then
-  echo -e "  get_deltas(get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012)) == " | tee -a $out
-  echo -e "    List(List(Some(-0.03573992567129673), Some(0.539975124774038)), " | tee -a $out
-  echo -e "         List(Some(0.10103412653643493), Some(0.24777709700099845)))" | tee -a $out
-  echo -e "" | tee -a $out
-  echo -e "  get_deltas(get_prices(List(\"BIDU\"), 2004 to 2008)) == " | tee -a $out
-  echo -e "    List(List(None), List(None),                          " | tee -a $out
-  echo -e "         List(Some(0.9277165354330709)), List(Some(2.119679764725104)))) " | tee -a $out
-  
-  if (scala_assert "drumb.scala" "drumb_test5.scala") 
-  then
-     echo "  --> success" | tee -a $out
-     marks=$(( marks + 1 ))
-  else
-     echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-
-### yield_tests
-
-if [ $tsts -eq 0 ]
-then
-  echo -e "  val ds = get_deltas(get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012))" | tee -a $out
-  echo -e "  yearly_yield(get_deltas(ds, 100, 0)) == 125" | tee -a $out
-  echo -e "  yearly_yield(get_deltas(ds, 100, 1)) == 117" | tee -a $out
-  
-  if (scala_assert "drumb.scala" "drumb_test6.scala") 
-  then
-      echo "  --> success" | tee -a $out
-      marks=$(( marks + 1 ))
-  else
-      echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-
-### investment_test
-
-if [ $tsts -eq 0 ]
-then
-  echo -e "  All results need to be in the range of -/+ 1% of the given values."   | tee -a $out
-  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2000, 100) == 100"   | tee -a $out
-  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2001, 100) == 27 "   | tee -a $out
-  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2002, 100) == 42 "   | tee -a $out
-  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2003, 100) == 27 "   | tee -a $out
-  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2004, 100) == 38 "   | tee -a $out
-  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2005, 100) == 113"   | tee -a $out
-  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2006, 100) == 254"   | tee -a $out
-  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2007, 100) == 349"   | tee -a $out
-  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 1990 to 2017, 100) == 83061"   | tee -a $out
-  
-  
-  if (scala_assert "drumb.scala" "drumb_test7.scala") 
-  then
-    echo "  --> success" | tee -a $out
-    marks=$(( marks + 1 ))
-  else
-    echo "  --> test failed" | tee -a $out
-  fi
-fi
-
-
-
-## final marks
-echo "Overall mark for CW 6, Part 3" | tee -a $out
-echo "$marks" | tee -a $out
--- a/marking1/drumb_test3.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/drumb_test3.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,17 +1,17 @@
-def myassert(cond : => Boolean) = {
+/*def myassert(cond : => Boolean) = {
   try {
     assert(cond)
   } catch { 
     case _ : Throwable => System.exit(1)
   }
 }
-
-myassert(get_prices(List("BIDU"), 2004 to 2008) ==
+*/
+assert(CW6b.get_prices(List("BIDU"), 2004 to 2008) ==
    List(List(None), List(None), List(Some(6.35)), 
         List(Some(12.241)), List(Some(38.188))))
 
 
-myassert(get_prices(List("GOOG", "AAPL"), 2010 to 2012) ==
+assert(CW6b.get_prices(List("GOOG", "AAPL"), 2010 to 2012) ==
    List(List(Some(312.204773), Some(26.782711)), 
         List(Some(301.0466), Some(41.244694)), 
         List(Some(331.462585), Some(51.464207))))
--- a/marking1/drumb_test4.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/drumb_test4.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,12 +1,6 @@
-def myassert(cond : => Boolean) = {
-  try {
-    assert(cond)
-  } catch { 
-    case _ : Throwable => System.exit(1)
-  }
-}
+
 
-myassert(get_delta(None, None) == None)
-myassert(get_delta(Some(50.0), None) == None)
-myassert(get_delta(None, Some(100.0)) == None)
-myassert(get_delta(Some(50.0), Some(100.0)) == Some(1.0))
+assert(CW6b.get_delta(None, None) == None)
+assert(CW6b.get_delta(Some(50.0), None) == None)
+assert(CW6b.get_delta(None, Some(100.0)) == None)
+assert(CW6b.get_delta(Some(50.0), Some(100.0)) == Some(1.0))
--- a/marking1/drumb_test5.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/drumb_test5.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,18 +1,18 @@
-def myassert(cond : => Boolean) = {
+/*def myassert(cond : => Boolean) = {
   try {
     assert(cond)
   } catch { 
     case _ : Throwable => System.exit(1)
   }
 }
-
+*/
 // get_prices(List("GOOG", "AAPL"), 2010 to 2012)
 val urban_prices = List(List(Some(312.204773), Some(26.782711)), 
                         List(Some(301.0466), Some(41.244694)), 
                         List(Some(331.462585), Some(51.464207)))
 
 
-myassert(get_deltas(urban_prices) == List(List(Some(-0.03573991804411003), Some(0.539974575389325)), 
+assert(CW6b.get_deltas(urban_prices) == List(List(Some(-0.03573991804411003), Some(0.539974575389325)), 
                                           List(Some(0.10103414222249969), Some(0.24777764141006836))))
 
 
@@ -22,6 +22,6 @@
                          List(Some(38.188)))
 
 
-myassert(get_deltas(urban_prices2) == List(List(None), List(None), 
+assert(CW6b.get_deltas(urban_prices2) == List(List(None), List(None), 
                                         List(Some(0.9277165354330709)), 
                                         List(Some(2.119679764725104))))
--- a/marking1/drumb_test6.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/drumb_test6.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,5 +1,5 @@
 //val urban_deltas = get_deltas(get_prices(List("GOOG", "AAPL"), 2010 to 2012))
-
+/*
 def myassert(cond : => Boolean) = {
   try {
     assert(cond)
@@ -7,12 +7,12 @@
     case _ : Throwable => System.exit(1)
   }
 }
-
+*/
 
 val ds_urban = List(List(Some(-0.03573991804411003), Some(0.539974575389325)), 
                     List(Some(0.10103414222249969), Some(0.24777764141006836)))
 
 
 
-myassert(yearly_yield(ds_urban, 100, 0) == 125)
-myassert(yearly_yield(ds_urban, 100, 1) == 117)
+assert(CW6b.yearly_yield(ds_urban, 100, 0) == 125)
+assert(CW6b.yearly_yield(ds_urban, 100, 1) == 117)
--- a/marking1/drumb_test7.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/marking1/drumb_test7.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,3 +1,4 @@
+/*
 def myassert(cond : => Boolean) = {
   try {
     assert(cond)
@@ -5,14 +6,14 @@
     case _ : Throwable => System.exit(1)
   }
 }
-
+*/
 
-myassert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2000, 100) == 100)
-myassert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2001, 100) == 27)
-myassert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2002, 100) == 42)
-myassert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2003, 100) == 27)
-myassert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2004, 100) == 38)
-myassert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2005, 100) == 113)
-myassert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2006, 100) == 254)
-myassert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2007, 100) == 349)
-myassert(investment(List("GOOG", "AAPL", "BIDU"), 1990 to 2017, 100) == 11504)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2000, 100) == 100)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2001, 100) == 27)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2002, 100) == 42)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2003, 100) == 27)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2004, 100) == 38)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2005, 100) == 113)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2006, 100) == 254)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2007, 100) == 349)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 1990 to 2017, 100) == 11504)
--- a/style.sty	Tue Oct 29 11:11:44 2019 +0000
+++ b/style.sty	Tue Oct 29 14:12:24 2019 +0000
@@ -34,18 +34,18 @@
 \makeatother
 
 % CW deadlines
-\def\cwSIX{13 November}
-\def\cwSIXa{8 January}
+\def\cwSIX{14 November}
+\def\cwSIXa{15 January}
 
-\def\cwSEVEN{20 November}
-\def\cwSEVENa{8 January}
+\def\cwSEVEN{21 November}
+\def\cwSEVENa{15 January}
 
-\def\cwEIGHT{27 November}
-\def\cwEIGHTa{8 January}
+\def\cwEIGHT{28 November}
+\def\cwEIGHTa{15 January}
 
-\def\cwNINE{4 December}
-\def\cwNINEa{8 January}
+\def\cwNINE{5 December}
+\def\cwNINEa{15 January}
 
-\def\cwTEN{8 January}
-\def\cwTENa{8 January}
+\def\cwTEN{15 January}
+\def\cwTENa{15 January}
 
--- a/templates1/collatz.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/templates1/collatz.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,6 +1,7 @@
 // Basic Part about the 3n+1 conjecture
 //======================================
 
+object CW6a {
 
 //(1) Complete the collatz function below. It should
 //    recursively calculate the number of steps needed 
@@ -23,5 +24,5 @@
 
 //def collatz_max(bnd: Long) : (Long, Long) = ...
 
+}
 
-
--- a/templates1/drumb.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/templates1/drumb.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,6 +1,7 @@
-// Main Part about a really dumb investment strategy
+// Core Part about a really dumb investment strategy
 //===================================================
 
+object CW6b {
 
 //two test portfolios
 
@@ -81,3 +82,4 @@
 //println("Blue data: " + investment(blchip_portfolio, 1978 to 2019, 100))
 
 
+}
--- a/testing1/collatz.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/collatz.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,8 +1,11 @@
 // Part 1 about the 3n+1 conjecture
 //==================================
 
+// generate jar with
+//   > scala -d collatz.jar  collatz.scala
 
-//object CW6a { // for purposes of generating a jar
+object CW6a { 
+
 
 def collatz(n: Long): Long =
   if (n == 1) 0 else
@@ -15,6 +18,7 @@
   all.maxBy(_._1)
 }
 
+
 /* some test cases
 val bnds = List(10, 100, 1000, 10000, 100000, 1000000)
 
@@ -25,4 +29,8 @@
 
 */
 
-//}
+
+}
+
+
+
--- a/testing1/collatz_test.sh	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/collatz_test.sh	Tue Oct 29 14:12:24 2019 +0000
@@ -21,7 +21,7 @@
 # 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 -i "$1" -- "$2" -e "" 2> /dev/null 1> /dev/null)
 }
 
 # purity test
--- a/testing1/collatz_test1.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/collatz_test1.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,9 +1,8 @@
 
+import CW6a._
 
-assert(collatz(1) == 0)
-
+assert(collatz(1) == 0) 
 assert(collatz(6) == 8)
-
 assert(collatz(9) == 19)
 
 
--- a/testing1/collatz_test2.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/collatz_test2.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,13 +1,8 @@
-
+import CW6a._
 
 assert(collatz_max(10) == (19, 9))
-
 assert(collatz_max(100) == (118, 97))
-
 assert(collatz_max(1000) == (178, 871))
-
 assert(collatz_max(10000) == (261, 6171))
-
 assert(collatz_max(100000) == (350, 77031))
-
 assert(collatz_max(1000000) == (524, 837799))
--- a/testing1/drumb.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/drumb.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,7 +1,7 @@
-// Part 2 and 3 about a really dumb investment strategy
+// Main Part about a really dumb investment strategy
 //======================================================
 
-//object CW6b { // for purposes of generating a jar
+object CW6b {
 
 
 //two test portfolios
@@ -73,16 +73,13 @@
 
 
 //test cases
-//val p_fb = get_prices(List("FB"), 2012 to 2014)
-//val p = get_prices(List("GOOG", "AAPL"), 2010 to 2012)
-
-//val tt = get_prices(List("BIDU"), 2004 to 2008)
 
+//println("Task 3 data from Google and Apple in 2010 to 2012")
+//val goog_aapl_prices = get_prices(List("GOOG", "AAPL"), 2010 to 2012)
+//println(goog_aapl_prices.toString ++ "\n")
 
-//==============================================
-// Do not change anything below, unless you want 
-// to submit the file for the advanced part 3!
-//==============================================
+//val p_fb = get_prices(List("FB"), 2012 to 2014)
+//val tt = get_prices(List("BIDU"), 2004 to 2008)
 
 
 // (4) The function below calculates the change factor (delta) between
@@ -105,8 +102,13 @@
     for (j <- (0 until (data(0).length)).toList) yield get_delta(data(i)(j), data(i + 1)(j))
 
 
+
 // test case using the prices calculated above
-//val d = get_deltas(p)
+
+//println("Task 5 change prices from Google and Apple in 2010 and 2011")
+//val goog_aapl_deltas = get_deltas(goog_aapl_prices)
+//println(goog_aapl_deltas.toString ++ "\n")
+
 //val ttd = get_deltas(tt)
 
 
@@ -124,6 +126,21 @@
   }
 }
 
+// test case using the deltas calculated above
+//println("Task 6 yield from Google and Apple in 2010 with  balance 100")
+
+//val d0 = goog_aapl_deltas(0)(0)
+//val d1 = goog_aapl_deltas(0)(1)
+//println(s"50 * ${d0.get} + 50 * ${d1.get} = ${50.toDouble * d0.get + 50.toDouble * d1.get}")
+
+
+//val goog_aapl_yield = yearly_yield(goog_aapl_deltas, 100, 0)
+//println("Rounded yield: " ++ goog_aapl_yield.toString ++ "\n")
+
+
+//yearly_yield(get_prices(rstate_portfolio, 2016 to 2018), 100, 2) 
+//get_prices(rstate_portfolio, 2016 to 2018)(2).flatten.sum
+
 
 // (7) Write a function compound_yield that calculates the overall balance for a 
 //     range of years where in each year the yearly profit is compounded to the new 
@@ -147,21 +164,10 @@
 
 //test cases for the two portfolios given above
 
-//println("Real data: " + investment(rstate_portfolio, 1978 to 2018, 100))
-//println("Blue data: " + investment(blchip_portfolio, 1978 to 2018, 100))
+//println("Real data: " + investment(rstate_portfolio, 1978 to 2019, 100))
+//println("Blue data: " + investment(blchip_portfolio, 1978 to 2019, 100))
 
-//}
+}
 
 
-//val ds = get_deltas(get_prices(List("GOOG", "AAPL"), 2010 to 2012))
-//yearly_yield(ds, 100, 0)  => 125
-//yearly_yield(ds, 100, 1)  => 117
 
-//investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2000, 100) // => 100
-//investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2001, 100) // => 27
-//investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2002, 100) // => 42
-//investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2003, 100) // => 27
-//investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2004, 100) // => 38
-//investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2005, 100) // => 113
-//investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2006, 100) // => 254
-//investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2007, 100) // => 349
--- a/testing1/drumb_test.sh	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/drumb_test.sh	Tue Oct 29 14:12:24 2019 +0000
@@ -1,5 +1,5 @@
 #!/bin/bash
-set -e
+set -euo pipefail
 
 out=${1:-output}
 
@@ -17,7 +17,7 @@
 # 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 -i "$1" -- "$2" -e "" 2> /dev/null 1> /dev/null)
 }
 
 # purity test
@@ -33,7 +33,7 @@
 
 if (scala_vars drumb.scala)
 then
-  echo "  --> fail (make triple-sure your program conforms to the required format)" >> $out
+  echo "  --> FAIL (make triple-sure your program conforms to the required format)" >> $out
   tsts0=$(( 0 ))
 else
   echo "  --> success" >> $out
@@ -51,7 +51,7 @@
     echo "  --> success" >> $out
     tsts=$(( 0 ))
   else
-    echo "  --> scala did not run drumb.scala" >> $out
+    echo "  --> SCALA DID NOT RUN drumb.scala" >> $out
     tsts=$(( 1 )) 
   fi
 else
@@ -63,13 +63,13 @@
 if [ $tsts -eq 0 ]
 then
   echo "  get_january_data(\"GOOG\", 1980) == List()" >> $out
-  echo "  get_january_data(\"GOOG\", 2010).head == \"2010-01-04,311.349976\"" >> $out
+  echo "  get_january_data(\"GOOG\", 2010).head == \"2010-01-04,312.204773\"" >> $out
 
   if (scala_assert "drumb.scala" "drumb_test1.scala")
   then
     echo "  --> success" >> $out
   else
-    echo "  --> test failed" >> $out
+    echo "  --> ONE OF THE TESTS FAILED\n" >> $out
   fi
 fi
 
@@ -78,13 +78,13 @@
 if [ $tsts -eq 0 ]
 then
   echo "  get_first_price(\"GOOG\", 1980) == None" >> $out
-  echo "  get_first_price(\"GOOG\", 2010) == Some(311.349976)" >> $out
+  echo "  get_first_price(\"GOOG\", 2010) == Some(312.204773)" >> $out  
 
   if (scala_assert "drumb.scala" "drumb_test2.scala")
   then
     echo "  --> success" >> $out
   else
-    echo "  --> test failed" >> $out
+    echo "  --> ONE OF THE TESTS FAILED\n" >> $out
   fi
 fi
 
@@ -93,49 +93,95 @@
 if [ $tsts -eq 0 ]
 then
   echo "  get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012) ==" >> $out
-  echo "       List(List(Some(311.349976), Some(20.544939))," >> $out
-  echo "            List(Some(300.222351), Some(31.638695))," >> $out
-  echo "            List(Some(330.555054), Some(39.478039)))" >> $out
+  echo "       List(List(Some(311.349976), Some(20.544939))," >> $out 
+  echo "              List(Some(300.222351), Some(31.638695))," >> $out 
+  echo "              List(Some(330.555054), Some(39.478039))))" >> $out
 
   if (scala_assert "drumb.scala" "drumb_test3.scala")
   then
     echo "  --> success" >> $out
   else
-    echo "  --> test failed" >> $out
+    echo "  --> ONE OF THE TESTS FAILED\n" >> $out
   fi
 fi
 
+### get_delta_test
+
+if [ $tsts -eq 0 ]
+then
+  echo "  get_delta(None, None) == None" >> $out
+  echo "  get_delta(Some(50.0), None) == None" >> $out
+  echo "  get_delta(None, Some(100.0)) == None" >> $out
+  echo "  get_delta(Some(50.0), Some(100.0)) == Some(1.0)" >> $out
+
+  if (scala_assert "drumb.scala" "drumb_test4.scala")
+  then
+      echo "  --> success" >> $out
+  else
+      echo "  --> ONE OF THE TESTS FAILED\n" >> $out
+  fi
+fi
+
+
 ### get_deltas_test
 
-#if [ $tsts -eq 0 ]
-#then
-#  echo "  get_deltas(get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012)) == " >> $out
-#  echo "    List(List(Some(-0.03573992567129673), Some(0.5399749442411563)), " >> $out
-#  echo "         List(Some(0.10103412653643493), Some(0.2477771728154912)))" >> $out
-#  
-#  if (scala_assert "drumb.scala" "drumb_test2.scala") 
-#  then
-#    echo "  --> success" >> $out
-#  else
-#    echo "  --> test failed" >> $out
-#  fi
-#fi
+if [ $tsts -eq 0 ]
+then
+  echo -e "  get_deltas(get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012)) == " >> $out
+  echo -e "    List(List(Some(-0.03573991804411003), Some(0.539974575389325)), " >> $out
+  echo -e "         List(Some(0.10103414222249969), Some(0.24777764141006836)))" >> $out
+  echo -e "" >> $out
+  echo -e "  get_deltas(get_prices(List(\"BIDU\"), 2004 to 2008)) == " >> $out
+  echo -e "    List(List(None), List(None),                          " >> $out
+  echo -e "         List(Some(0.9277165354330709)), List(Some(2.119679764725104)))) " >> $out
+  
+  if (scala_assert "drumb.scala" "drumb_test5.scala") 
+  then
+     echo "  --> success" >> $out
+  else
+     echo "  --> ONE OF THE TESTS FAILED\n" >> $out
+  fi
+fi
 
 
-### yield_tests, investment_test
+### yield_tests
+
+if [ $tsts -eq 0 ]
+then
+  echo -e "  val ds = get_deltas(get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012))" >> $out
+  echo -e "  yearly_yield(get_deltas(ds, 100, 0)) == 125" >> $out
+  echo -e "  yearly_yield(get_deltas(ds, 100, 1)) == 117" >> $out
+  
+  if (scala_assert "drumb.scala" "drumb_test6.scala") 
+  then
+      echo "  --> success" >> $out
+  else
+      echo "  --> ONE OF THE TESTS FAILED\n" >> $out
+  fi
+fi
+
+
+### investment_test
 
-#if [ $tsts -eq 0 ]
-#then
-#  echo "  yearly_yield(get_deltas(<<GOOG+AAPL 2010 - 2012>>), 100, 0) == 125" >> $out
-#  echo "" >> $out
-#  echo "  investment(rstate_portfolio, 1978 to 2017, 100) == 30895" >> $out
-#  echo "  investment(bchips_portfolio, 1978 to 2017, 100) == 349597" >> $out
-#  
-#  if (scala_assert "drumb.scala" "drumb_test3.scala") 
-#  then
-#    echo "  --> success" >> $out
-#  else
-#    echo "  --> test failed" >> $out
-#  fi
-#fi
+if [ $tsts -eq 0 ]
+then
+  echo -e "  All results need to be in the range of -/+ 1% of the given values."   >> $out
+  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2000, 100) == 100"   >> $out
+  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2001, 100) == 27 "   >> $out
+  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2002, 100) == 42 "   >> $out
+  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2003, 100) == 27 "   >> $out
+  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2004, 100) == 38 "   >> $out
+  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2005, 100) == 113"   >> $out
+  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2006, 100) == 254"   >> $out
+  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2007, 100) == 349"   >> $out
+  echo -e "   investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 1990 to 2017, 100) == 11504"   >> $out
+  
+  
+  if (scala_assert "drumb.scala" "drumb_test7.scala") 
+  then
+    echo "  --> success" >> $out
+  else
+    echo "  --> ONE OF THE TESTS FAILED\n" >> $out
+  fi
+fi
 
--- a/testing1/drumb_test1.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/drumb_test1.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,7 +1,5 @@
-
-assert(get_january_data("GOOG", 1980) == List())
-
-assert(get_january_data("GOOG", 2010).head == "2010-01-04,311.349976")
+assert(CW6b.get_january_data("GOOG", 1980) == List())
+assert(CW6b.get_january_data("GOOG", 2010).head == "2010-01-04,312.204773")
 
 
 
--- a/testing1/drumb_test2.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/drumb_test2.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,141 +1,12 @@
-#!/bin/bash
-set -e
-
-out=${1:-output}
-
-echo "" > $out
-
-echo "Below is the feedback for your submission for drumb.scala" >> $out
-echo "" >> $out
-
-# compilation tests
-
-function scala_compile {
-  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala "$1" 2>> $out 1>> $out) 
-}
-
-# functional tests
-
-function scala_assert {
-  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -i "$1" "$2" -e "") #2> /dev/null 1> /dev/null)
-}
-
-# purity test
-
-function scala_vars {
-   (egrep '\bvar\b|\breturn\b|\.par|ListBuffer|mutable' "$1" 2> /dev/null 1> /dev/null)
+/*def myassert(cond : => Boolean) = {
+  try {
+    assert(cond)
+  } catch { 
+    case _ : Throwable => System.exit(1)
+  }
 }
-
-
-# var, .par return, ListBuffer test
-#
-echo "drumb.scala does not contain vars, returns etc?" >> $out
-
-if (scala_vars drumb.scala)
-then
-  echo "  --> fail (make triple-sure your program conforms to the required format)" >> $out
-  tsts0=$(( 0 ))
-else
-  echo "  --> success" >> $out
-  tsts0=$(( 0 )) 
-fi
-
-
-# compilation test
-if  [ $tsts0 -eq 0 ]
-then 
-  echo "drumb.scala runs?" >> $out
-
-  if (scala_compile drumb.scala)
-  then
-    echo "  --> success" >> $out
-    tsts=$(( 0 ))
-  else
-    echo -e "  --> SCALA DID NOT RUN DRUMB.SCALA\n" >> $out    
-    tsts=$(( 1 )) 
-  fi
-else
-  tsts=$(( 1 ))     
-fi
-
-### get january data
-
-if [ $tsts -eq 0 ]
-then
-  echo "  get_january_data(\"GOOG\", 1980) == List()" >> $out
-  echo "  get_january_data(\"GOOG\", 2010).head == \"2010-01-04,311.349976\"" >> $out
+*/
 
-  if (scala_assert "drumb.scala" "drumb_test1.scala")
-  then
-    echo "  --> success" >> $out
-  else
-    echo -e "  --> \n ONE TEST FAILED\n" >> $out    
-  fi
-fi
-
-### get first price
-
-if [ $tsts -eq 0 ]
-then
-  echo "  get_first_price(\"GOOG\", 1980) == None" >> $out
-  echo "  get_first_price(\"GOOG\", 2010) == Some(311.349976)" >> $out
-
-  if (scala_assert "drumb.scala" "drumb_test2.scala")
-  then
-    echo "  --> success" >> $out
-  else
-    echo "  --> test failed" >> $out
-  fi
-fi
-
-### get prices tests
-
-if [ $tsts -eq 0 ]
-then
-  echo "  get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012) ==" >> $out
-  echo "       List(List(Some(311.349976), Some(20.544939))," >> $out
-  echo "            List(Some(300.222351), Some(31.638695))," >> $out
-  echo "            List(Some(330.555054), Some(39.478039)))" >> $out
+assert(CW6b.get_first_price("GOOG", 1980) == None)
+assert(CW6b.get_first_price("GOOG", 2010) == Some(312.204773))
 
-  if (scala_assert "drumb.scala" "drumb_test3.scala")
-  then
-    echo "  --> success" >> $out
-  else
-    echo "  --> test failed" >> $out
-  fi
-fi
-
-### get_deltas_test
-
-#if [ $tsts -eq 0 ]
-#then
-#  echo "  get_deltas(get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012)) == " >> $out
-#  echo "    List(List(Some(-0.03573992567129673), Some(0.5399749442411563)), " >> $out
-#  echo "         List(Some(0.10103412653643493), Some(0.2477771728154912)))" >> $out
-#  
-#  if (scala_assert "drumb.scala" "drumb_test2.scala") 
-#  then
-#    echo "  --> success" >> $out
-#  else
-#    echo "  --> test failed" >> $out
-#  fi
-#fi
-
-
-### yield_tests, investment_test
-
-#if [ $tsts -eq 0 ]
-#then
-#  echo "  yearly_yield(get_deltas(<<GOOG+AAPL 2010 - 2012>>), 100, 0) == 125" >> $out
-#  echo "" >> $out
-#  echo "  investment(rstate_portfolio, 1978 to 2017, 100) == 30895" >> $out
-#  echo "  investment(bchips_portfolio, 1978 to 2017, 100) == 349597" >> $out
-#  
-#  if (scala_assert "drumb.scala" "drumb_test3.scala") 
-#  then
-#    echo "  --> success" >> $out
-#  else
-#    echo "  --> test failed" >> $out
-#  fi
-#fi
-
--- a/testing1/drumb_test2.sh	Tue Oct 29 11:11:44 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-#!/bin/bash
-set -e
-
-out=${1:-output}
-
-echo -e "" > $out
-
-echo -e "Below is the feedback for your submission advanced part of drumb.scala:" >> $out
-echo -e "" >> $out
-
-# compilation tests
-
-function scala_compile {
-  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala "$1" 2>> $out 1>> $out) 
-}
-
-# functional tests
-
-function scala_assert {
-  (ulimit -t 30; JAVA_OPTS="-Xmx1g" scala -i "$1" "$2" -e "" 2> /dev/null 1> /dev/null)
-}
-
-# purity test
-
-function scala_vars {
-   (egrep '\bvar\b|\breturn\b|\.par|ListBuffer|mutable|new Array' "$1" 2> /dev/null 1> /dev/null)
-}
-
-
-# var, .par return, ListBuffer test
-#
-echo -e "drumb.scala does not contain vars, returns etc?" >> $out
-
-if (scala_vars drumb.scala)
-then
-  echo -e "  --> fail (make triple-sure your program conforms to the required format)" >> $out
-  tsts0=$(( 0 ))
-else
-  echo -e "  --> success" >> $out
-  tsts0=$(( 0 )) 
-fi
-
-
-# compilation test
-if  [ $tsts0 -eq 0 ]
-then 
-  echo -e "drumb.scala runs?" >> $out
-
-  if (scala_compile drumb.scala)
-  then
-    echo -e "  --> success" >> $out
-    tsts=$(( 0 ))
-  else
-    echo -e "  --> SCALA DID NOT RUN DRUMB.SCALA\n" >> $out
-    tsts=$(( 1 )) 
-  fi
-else
-  tsts=$(( 1 ))     
-fi
-
-### get_deltas_test
-
-if [ $tsts -eq 0 ]
-then
-  echo -e "  get_deltas(get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012)) == " >> $out
-  echo -e "    List(List(Some(-0.03573992567129673), Some(0.539975124774038)), " >> $out
-  echo -e "         List(Some(0.10103412653643493), Some(0.24777709700099845)))" >> $out
-  echo -e "" >> $out
-  echo -e "  get_deltas(get_prices(List(\"BIDU\"), 2004 to 2008)) == " >> $out
-  echo -e "    List(List(None), List(None),                          " >> $out
-  echo -e "         List(Some(0.9277165354330709)), List(Some(2.119679764725104)))) " >> $out
-  
-  if (scala_assert "drumb.scala" "drumb_test5.scala") 
-  then
-    echo -e "  --> success" >> $out
-  else
-    echo -e "  --> \n ONE TEST FAILED\n" >> $out
-  fi
-fi
-
-
-### yield_tests
-
-if [ $tsts -eq 0 ]
-then
-  echo -e "  val ds = get_deltas(get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012))" >> $out
-  echo -e "  yearly_yield(get_deltas(ds, 100, 0) == 125" >> $out
-  echo -e "  yearly_yield(get_deltas(ds, 100, 1) == 117" >> $out
-  
-  if (scala_assert "drumb.scala" "drumb_test6.scala") 
-  then
-      echo -e "  --> success" >> $out
-  else
-      echo -e "  --> \n ONE TEST FAILED\n" >> $out  
-  fi
-fi
-
-### investment_test
-
-if [ $tsts -eq 0 ]
-then
-  echo -e "  investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2000, 100) == 100"   >> $out
-  echo -e "  investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2001, 100) == 27 "   >> $out
-  echo -e "  investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2002, 100) == 42 "   >> $out
-  echo -e "  investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2003, 100) == 27 "   >> $out
-  echo -e "  investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2004, 100) == 38 "   >> $out
-  echo -e "  investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2005, 100) == 113"   >> $out
-  echo -e "  investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2006, 100) == 254"   >> $out
-  echo -e "  investment(List(\"GOOG\", \"AAPL\", \"BIDU\"), 2000 to 2007, 100) == 349"   >> $out
-  
-  if (scala_assert "drumb.scala" "drumb_test7.scala") 
-  then
-      echo -e "  --> success" >> $out
-  else
-      echo -e "  --> \n ONE TEST FAILED\n" >> $out    
-  fi
-fi
-
--- a/testing1/drumb_test3.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/drumb_test3.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,3 +1,4 @@
+import CW6b._
 
 assert(get_prices(List("GOOG", "AAPL"), 2010 to 2012) ==
     List(List(Some(311.349976), Some(20.544939)), 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testing1/drumb_test4.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -0,0 +1,6 @@
+
+
+assert(CW6b.get_delta(None, None) == None)
+assert(CW6b.get_delta(Some(50.0), None) == None)
+assert(CW6b.get_delta(None, Some(100.0)) == None)
+assert(CW6b.get_delta(Some(50.0), Some(100.0)) == Some(1.0))
--- a/testing1/drumb_test5.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/drumb_test5.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,12 +1,19 @@
-
+/*def myassert(cond : => Boolean) = {
+  try {
+    assert(cond)
+  } catch { 
+    case _ : Throwable => System.exit(1)
+  }
+}
+*/
 // get_prices(List("GOOG", "AAPL"), 2010 to 2012)
-val urban_prices = List(List(Some(311.349976), Some(20.544939)), 
-                        List(Some(300.222351), Some(31.638695)), 
-                        List(Some(330.555054), Some(39.478039)))
+val urban_prices = List(List(Some(312.204773), Some(26.782711)), 
+                        List(Some(301.0466), Some(41.244694)), 
+                        List(Some(331.462585), Some(51.464207)))
 
 
-assert(get_deltas(urban_prices) == List(List(Some(-0.03573992567129673), Some(0.539975124774038)), 
-                                        List(Some(0.10103412653643493), Some(0.24777709700099845))))
+assert(CW6b.get_deltas(urban_prices) == List(List(Some(-0.03573991804411003), Some(0.539974575389325)), 
+                                          List(Some(0.10103414222249969), Some(0.24777764141006836))))
 
 
 //get_prices(List("BIDU"), 2004 to 2008)
@@ -15,6 +22,6 @@
                          List(Some(38.188)))
 
 
-assert(get_deltas(urban_prices2) == List(List(None), List(None), 
+assert(CW6b.get_deltas(urban_prices2) == List(List(None), List(None), 
                                         List(Some(0.9277165354330709)), 
                                         List(Some(2.119679764725104))))
--- a/testing1/drumb_test6.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/drumb_test6.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,9 +1,18 @@
 //val urban_deltas = get_deltas(get_prices(List("GOOG", "AAPL"), 2010 to 2012))
+/*
+def myassert(cond : => Boolean) = {
+  try {
+    assert(cond)
+  } catch { 
+    case _ : Throwable => System.exit(1)
+  }
+}
+*/
 
-val ds_urban = List(List(Some(-0.03573992567129673), Some(0.539975124774038)), 
-                    List(Some(0.10103412653643493), Some(0.24777709700099845)))
+val ds_urban = List(List(Some(-0.03573991804411003), Some(0.539974575389325)), 
+                    List(Some(0.10103414222249969), Some(0.24777764141006836)))
 
 
 
-assert(yearly_yield(ds_urban, 100, 0) == 125)
-assert(yearly_yield(ds_urban, 100, 1) == 117)
+assert(CW6b.yearly_yield(ds_urban, 100, 0) == 125)
+assert(CW6b.yearly_yield(ds_urban, 100, 1) == 117)
--- a/testing1/drumb_test7.scala	Tue Oct 29 11:11:44 2019 +0000
+++ b/testing1/drumb_test7.scala	Tue Oct 29 14:12:24 2019 +0000
@@ -1,9 +1,24 @@
+/*
+def myassert(cond : => Boolean) = {
+  try {
+    assert(cond)
+  } catch { 
+    case _ : Throwable => System.exit(1)
+  }
+}
+*/
 
-assert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2000, 100) == 100)
-assert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2001, 100) == 27)
-assert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2002, 100) == 42)
-assert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2003, 100) == 27)
-assert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2004, 100) == 38)
-assert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2005, 100) == 113)
-assert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2006, 100) == 254)
-assert(investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2007, 100) == 349)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2000, 100) == 100)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2001, 100) == 27)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2002, 100) == 42)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2003, 100) == 27)
+assert(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2004, 100) == 38)
+
+// 113
+assert((112 to 114).contains(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2005, 100)))
+// 254
+assert((252 to 256).contains(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2006, 100)))
+// 349
+assert((346 to 352).contains(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 2000 to 2007, 100)))
+//11504
+assert((11389 to 11619).contains(CW6b.investment(List("GOOG", "AAPL", "BIDU"), 1990 to 2017, 100)))