diff --git a/Assignments/A1/A1.pdf b/Assignments/A1/A1.pdf
index feebae1d242db08386c0b8a8838e58fde0e31178..a5754ccc316ac2b9250dc2be4fa7322f63f2b53a 100644
Binary files a/Assignments/A1/A1.pdf and b/Assignments/A1/A1.pdf differ
diff --git a/Assignments/A1/A1.tex b/Assignments/A1/A1.tex
index 3f5aedbb740d9e7c7e2c10ee65478caf9d24e733..323bde540fcd0a36aa6d8dd72ffb78b15f7d9b9a 100644
--- a/Assignments/A1/A1.tex
+++ b/Assignments/A1/A1.tex
@@ -197,23 +197,24 @@ push any input data files you created for testing purposes.  For Part 1, the
 only files that you should modify are the Python files and the only ``new''
 files you should create are the input data files.  Changing other files could
 result in a serious grading penalty, since the TAs might not be able to run your
-code and documentation generation.  You should NOT sumbit your generated
+code and documentation generation.  You should NOT submit your generated
 documentation (html and latex folders).  In general, files that can be
 regenerated are not put under version control.
 
 After the deadline for submitting your solution has passed, your partner files,
-{\tt SeqADT.py} and {\tt CurveADT.py}, will be pushed to your repo.  The date
-when this will occur is given at the beginning of this assignment description.
+{\tt SeqADT.py} and {\tt CurveADT.py}, will be pushed to your repo.
+\textbf{Including your name in your partner code files is optional.}
 
-\section *{Part 2}
+\section*{Part 2}
 
 \section *{Step \refstepcounter{stepnum} \thestepnum}
 
 After you have received your partner's files, replace your corresponding files
-with your partner's.  Do not make any modifications to any of the code.  Run
-your test module and record the results.  Your evaluation for this step does not
-depend on the quality of your partner's code, but only on your discussion of the
-testing results.
+with your partner's.  Do not initially make any modifications to any of the
+code.  Run your test module and record the results.  Your evaluation for this
+step does not depend on the quality of your partner's code, but only on your
+discussion of the testing results.  If the tests fail, for the purposes of
+understanding what happened, you are allowed to modify your partner's code.
 
 \section *{Step \refstepcounter{stepnum} \thestepnum \label{StepReport}} 
 
diff --git a/Assignments/A2/A2.pdf b/Assignments/A2/A2.pdf
index 102f4a97935cacce7f73aa761d514f9007a9447d..d6698e3fb583cf6df5d1e38ce616bca6fbda3f19 100644
Binary files a/Assignments/A2/A2.pdf and b/Assignments/A2/A2.pdf differ
diff --git a/Assignments/A2/A2.tex b/Assignments/A2/A2.tex
index 5f25300d0c98106d60749543cd21383a0894c8ad..382ce8935b69bf83899b2431d25769437aedd232 100644
--- a/Assignments/A2/A2.tex
+++ b/Assignments/A2/A2.tex
@@ -19,7 +19,7 @@
 
 \newcounter{stepnum}
 
-\title{DRAFT Assignment 2}
+\title{Assignment 2}
 \author{COMP SCI 2ME3 and SFWR ENG 2AA4}
 
 \begin {document}
@@ -49,7 +49,7 @@ deadline will be the ones graded.
 \section{Introduction}
 
 The purpose of this software design exercise is to write a Python program that
-creates, uses, and tests ADTs, an Abstract Object and libraries related to
+creates, uses, and tests an ADT, an Abstract Object and libraries related to
 processing and plotting curves and sequences of curves.  As for the previous
 assignment, you will use doxygen, make, LaTeX and Python (version 3).  In
 addition, this assignment will use PyTest for unit testing.  This assignment
@@ -68,213 +68,190 @@ break under a specified blast load.
  \end{center}
  \end{figure}
 
-All of your code (all files) should be documented using doxygen.  Your report
-should be written using \latex.  Your code should follow the given specification
-exactly.  In particular, you should not add public methods or procedures that
-are not specified and you should not change the number or order of parameters
-for methods or procedures.  If you need private methods or procedures, please
-use the Python convention of naming the files with the double underscore
-(\texttt{\_\_methodName\_\_}) (dunders).
+ All of your code, except for the testing files, which are optional, should be
+ documented using doxygen.  Your report should be written using \latex.  Your
+ code should follow the given specification exactly.  In particular, you should
+ not add public methods or procedures that are not specified and you should not
+ change the number or order of parameters for methods or procedures.  If you
+ need private methods or procedures, please use the Python convention of naming
+ the files with the double underscore (\texttt{\_\_methodName\_\_}) (dunders).
+ \textbf{Please follow specified naming EXACTLY.  You do not want to lose marks
+   for a simple mistake.}
+
+ For the purpose of understandability, the specification provided at the end of
+ the assignment uses notation that is slightly different from the Hoffman and
+ Strooper notation.  Specifically the types for real and natural numbers are
+ represented by $\mathbb{R}$ and $\mathbb{N}$, respectively.  Also, subscripts
+ are used for indexing a sequence.  For instance, $x_i$ means the same thing as
+ $x[i]$.
+
+\section*{Part 1}
 
 \section *{Step \refstepcounter{stepnum} \thestepnum}
 
 Write a module that creates a Curve ADT.  It should consist of a Python code
 file named {\tt CurveADT.py}.  The specification for this module is given at the
-end of the assignment.
+end of the assignment.  Hint: The implementation will be easier if you use the
+scipy function
+\href{https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp1d.html}{\texttt{interp1d}}.
 
 \section *{Step \refstepcounter{stepnum} \thestepnum}
 
-Write a module that implements an abstract object called Data.  It
-should consist of a Python file named {\tt Data.py}.  The new module should
-follow the specification  given at the end of the assignment.
-Although efficient use of computing resources is always a good goal, your
-implementation will be judged on correctness and not on performance.
+Write a module that implements an abstract object called Data.  It should
+consist of a Python file named {\tt Data.py}.  The new module should follow the
+specification given at the end of the assignment.  Although efficient use of
+computing resources is always a good goal, your implementation will be judged on
+correctness and not on performance.
 
 \section *{Step \refstepcounter{stepnum} \thestepnum}
 
-Modules for sequence services, plotting and loading.
+Write a library module that provides services for processing sequences.  It
+should consist of a Python code file named {\tt SeqServices.py}.  The
+specification for this module is given at the end of the assignment.
 
 \section *{Step \refstepcounter{stepnum} \thestepnum}
 
-Write a module, using PyUnit, that tests all of the other modules together.  It
-should be an Python file named {\tt ...py} that uses all of the
-other modules.  Use given makefile {\tt Makefile} to run {\tt ..} via
-the rule \texttt{test}.  Each procedure should have at least one test case.
-Record your rationale for test case selection and the results of using this
-module to test the procedures in your modules.  (You will submit your rationale
-with your report.)  Please make an effort to test normal cases, boundary cases,
-and exception cases.  Your test program should compare the calculated output to
-the expected output and provide a summary of the number of test case that have
-passed or failed.  Use pytest.  Clarify which modules to test.
+Write a library module for plotting curves.  It should consist of a Python code
+file named {\tt Plot.py}.  The specification for this module is given at the end
+of the assignment.  You should use matplotlib for your implementation.
 
 \section *{Step \refstepcounter{stepnum} \thestepnum}
 
-Add to your makefile a rule for {\tt doc}.  This rule should compile your source
-code documentation into an html and LaTeX version.  Your documentation
-should be generated to the \texttt{A2} folder. - not necessary
+Write a library module for loading curves into the abstract object Data.  It
+should consist of a Python code file named {\tt Load.py}.  The specification for
+this module is given at the end of the assignment.
 
 \section *{Step \refstepcounter{stepnum} \thestepnum}
 
-Submit the files {\tt ...py}, ... and {\tt Makefile} using git.  You should NOT
-sumbit your generated documentation (html and latex folders).  In general, files
-that can be regenerated are not put under version control.  You should tag your
-final submission of part 1 of the assignment with the name \texttt{A2Part1}.
+Write a module (named {\tt testAll.py}), using PyUnit, that tests the following
+modules: {\tt CurveADT.py}, {\tt Data.py} and {\tt SeqServices.py}.  The given
+makefile {\tt Makefile} will have the rule \texttt{test} for running your tests.
+Each procedure should have at least one test case.  Record your rationale for
+test case selection and the results of using this module to test the procedures
+in your modules.  (You will submit your rationale with your report in
+Step~\ref{StepReport}.)  Please make an effort to test normal cases, boundary
+cases, and exception cases.  Your test program should compare the calculated
+output to the expected output and provide a summary of the number of test case
+that have passed or failed.
 
 \section *{Step \refstepcounter{stepnum} \thestepnum}
 
-Your {\tt ...py} file will automatically be pushed to your partner's repo
-and vice versa.  You actually do not have to take any overt action for this
-part.  I will happen automatically about a day after the deadline for part 1 of
-the assignment.  The location in your repo of your partner's file is given in
-the Notes section below.
+Test the supplied \texttt{Makefile} rule for {\tt doc}.  This rule should
+compile your documentation into an html and \latex version.  Your documentation
+will be generated to the \texttt{A1} folder.  Along with the supplied
+\texttt{Makefile}, a doxygen configuration file is also given in your initial
+repo.  You should change these files.
+
+\section *{Step \refstepcounter{stepnum} \thestepnum}
+
+Submit (add, commit and push) the files {\tt CurveADT.py}, {\tt Data.py}, {\tt
+  SeqServices.py}, {\tt Plot.py}, {\tt Load.py} and {\tt testAll.py} using git.
+Please \textbf{do not change} the names and locations for the files already
+given in your git project repo.  You should also push any input data files you
+created for testing purposes.  For Part 1, the only files that you should modify
+are the Python files and the only ``new'' files you should create are the input
+data files.  Changing other files could result in a serious grading penalty,
+since the TAs might not be able to run your code and documentation generation.
+You should NOT submit your generated documentation (html and latex folders).  In
+general, files that can be regenerated are not put under version control.
+
+You should tag your final submission of Part 1 of the assignment with the label
+\texttt{A2Part1}.
+
+\section*{Part 2}
+
+Your {\tt CurveADT.py}, {\tt Data.py}, {\tt SeqServices.py} files will
+automatically be pushed to your partner's repo and vice versa.
+\textbf{Including your name in your partner code files is optional.} 
 
 \section *{Step \refstepcounter{stepnum} \thestepnum}
 
 After you have received your partner's files, replace your corresponding files
-with your partner's.  Do not make any modifications to any of the code.  Run
+with your partner's.  Do not initially make any modifications to any of the code.  Run
 your test module and record the results.  Your evaluation for this step does not
 depend on the quality of your partner's code, but only on your discussion of the
-testing results.
-
-\section *{Step \refstepcounter{stepnum} \thestepnum}
+testing results.  If the tests fail, for the purposes of understanding what
+happened, you are allowed to modify your partner's code.
 
-Write a report and push it to your project repo.  The final submission should
-have the tag \texttt{A2Part2}.  The report should include the following:
+\section *{Step \refstepcounter{stepnum} \thestepnum \label{StepReport}} 
 
-- to be completed 
+Write a report using \latex (\texttt{report.tex}) following the template given
+in your repo.  The final submission should have the tag \texttt{A2Part2}.  The
+report should include the following:
 
 \begin{enumerate}
 \item Your name and macid.
-  \item Your {\tt pointADT.py}, {\tt lineADT.py}, {\tt circleADT.py}, {\tt
-    deque.py}, {\tt testCircleDeque.py} and {\tt Makefile}
-    files.
-\item Your partner's {\tt circleADT.py} file.  (You can push this to the repo in
-  the folder srcPartner.)
+\item Your {\tt CurveADT.py}, {\tt Data.py}, {\tt SeqServices.py}, {\tt
+    Plot.py}, {\tt Load.py} and {\tt testAll.py} files.
+\item Your partner's {\tt CurveADT.py}, {\tt Data.py}, {\tt SeqServices.py} files.
 \item The results of testing your files (along with the rational for test case
-  selection).
+  selection).  The summary of the results should consist of the following: the
+  number of passed and failed test cases, and brief details on any failed test
+  cases.
 \item The results of testing your files combined with your partner's files.
-  The summary of the results should consist of the following: the number of passed and
-  failed test cases, and brief details on any failed test cases.
 \item A discussion of the test results and what you learned doing the exercise.
   List any problems you found with
 \begin{inparaenum} 
 \item your program,
 \item your partner's module, and
 \item the specification of the modules.
-\end{inparaenum} How did using a formal module interface specification for this
-assignment compare to the informal specification provided for Assignment 1?
-What are the advantages of using a testing framework, such as PyUnit for testing
-your code?
-\item The specification for the last two access programs (totalArea() and
-  averageRadius()) is missing the definition for the output.  Please complete
-  the specification as part of your report.  You should write the
-  specification as LaTeX equations in your report.  You are not required
-  to implement these two access programs.
-\item Provide a critique of the Circle Module's interface.  In particular,
+\end{inparaenum}
+\item Answers to the following questions
+\begin{itemize}
+\item What is the mathematical specification of the \texttt{SeqServices} access
+  program isInBounds(X, x) if the assumption that X is ascending is removed?
+\item How would you modify \texttt{CurveADT.py} to support cubic interpolation?
+\item What is your critique of the CurveADT module's interface.  In particular,
   comment on whether the exported access programs provide an interface that is
   consistent, essential, general, minimal and opaque.
-\item What is the output of the mathematical specification of Deq\_disjoint()
-  when there is one circle in the deque?  Explain your answer.  Does this answer
-  make sense?  Is it the same result as calculated by your code?
+\item What is your critique of the Data abstract object's interface.  In
+  particular, comment on whether the exported access programs provide an
+  interface that is consistent, essential, general, minimal and opaque.
+\end{itemize}
 \end{enumerate}
 
-Your commit (push) to the repository should include the file \texttt{report.tex}
-as given in your initial folder structure.  You should also push the file
-\texttt{report.pdf} in the same folder.  Although the pdf file is a generated
-file, we'll make an exception to the general rule of avoiding version control
-for generated files.  The purpose of the exception is for the convenience of the
-TAs doing the grading.
-
-The final submission of your report, including your tex file, should be done
-using git by 11:59 pm on the assigned due date.  If you notice problems in your
-original {\tt *.py} files, you should discuss these problems, and what changes
-you would make to fix them, in your report.  However, the code files submitted
-on the first deadline will be the ones that are graded.
+Commit and push \texttt {report.tex} and \texttt{report.pdf}.  Although the pdf
+file is a generated file, for the purpose of helping the TAs, we'll make an
+exception to the general rule of avoiding version control for generated files.
+If you have made any changes to your Python files, you should also push those
+changes.
 
 \subsubsection*{Notes}
 
-Don't have to doxygen test driver program.
-
-Questions - rewrite isInBounds not assuming ascending
-- why isInBounds for Data, not for CurveT?
-- question about what is needed for cubic
-- what is needed for regression?
-- question about DX - what is wrong with this approach?  How would you do it
-differently?
-- why doesn't say that columns of data have to be the same length?
-
-- why doesn't the load module have a cannot find file exception - because other
-module has that responsibility
-
-- maybe add derivatives? integration?
-
-- explain index notation and notation for types
-
 \begin{enumerate}
 \item Your git repo will be organizes with the following directories at the
   top level: {\tt A1}, {\tt A2}, {\tt A3}, and {\tt A4}. 
 \item Inside the {\tt A2} folder you will start with initial stubs of the files
   and folders that you need to use.  Please do not change the names or locations
-  of any of these files or folders.  The structure of your project files and
-  folders should look like:
-\begin{itemize}
-\item A2
-\begin{itemize}
-\item[$*$] doxConfig
-\item[$*$] Makefile
-\item report
-\begin{itemize}
-\item report.tex
-\item report.pdf
-\end{itemize}
-\item src
-\begin{itemize}
-\item[$-$] srcPartner
-\begin{itemize}
-\item[$*$] circleADT.py
-\end{itemize}
-\item pointADT.py
-\item lineADT.py
-\item circleADT.py
-\item deque.py
-\item testCircleDeque.py
-\end{itemize}
-\end{itemize}
-\end{itemize}
+  of any of these files or folders.
 \item Please put your name and macid at the top of each of your source
-  files.
+  files, except for those that you share with a partner.  Including your name
+  and macid is optional for those files.
 \item Your program must work in the ITB labs on mills when compiled with its
-  versions of Python (version 2), LaTeX, doxygen and make.
-% \item If your partner fails to provide you with a copy of his or her files by
-%   the deadline, please tell the instructor via e-mail as soon as possible.
-% \item If you do not send your files to your partner by the deadline, you will be
-%   assessed a \textbf{20\% penalty} to your assignment grade.
+  versions of Python (version 3), LaTeX, doxygen and make.
 \item Python specifics:
 \begin{itemize}
 \item The exceptions in the specification should be implemented via Python
-  exceptions.  Your exceptions should have exactly the same name as given in the
-  specification (Full, EMPTY).  Your exceptions should inherit from the
+  exceptions.  Your exceptions should have exactly the same name, including
+  case, as given in the specification.  Your exceptions should inherit from the
   Exception class and they should only be used with one argument, a string
   explaining what problem has occurred.
 \item For the Python implementation of the abstract module, your access programs
-  should be called via, Deq.accessProg, not Deq\_accessProg, as shown in the
-  specification.  Some sample calls include the following: Deq.init(),
-  Deq.pushBack(c), Deq.pushFront(c), etc.
+  should be called via, \texttt{Data.accessProg}, not \texttt{Data\_accessProg},
+  as shown in the specification.  The call \texttt{Data.Data\_accessProg} is
+  also incorrect.  Some sample calls include the following: \texttt{Data.init()},
+  \texttt{Data.add(s, z)}, etc.
 \item Since the specification is silent on this point, for methods that return
-  an object, you can decide to either return a reference to the appropriate
-  existing object, or construct a new object.
+  an object, or use objects in their state, you can decide to either use
+  references or construct new objects.  The implementation will be easier if you
+  just work in terms of references to objects.
 \end{itemize}
 \item \textbf{Your grade will be based to a significant extent on the ability of
     your code to compile and its correctness.  If your code does not compile,
     then your grade will be significantly reduced.}
-
 \item \textbf{Any changes to the assignment specification will be announced in
     class.  It is your responsibility to be aware of these changes.  Please
     monitor all pushes to the course git repo.}
-
-\item
-  \href{https://www.python.org/dev/peps/pep-0008/#prescriptive-naming-conventions}{Python
-    coding convention}
 \end{enumerate}
 
 \newpage
@@ -322,6 +299,9 @@ eval & $x: \mathbb{R}$ & $\mathbb{R}$ & OutOfDomain\\
 \hline
 dfdx & $x: \mathbb{R}$ & $\mathbb{R}$ & OutOfDomain\\
 \hline
+d2fdx2 & $x: \mathbb{R}$ & $\mathbb{R}$ & OutOfDomain\\
+\hline
+
 \end{tabular}
 
 \subsection* {Semantics}
@@ -351,7 +331,7 @@ interpolation to select index values outside of where the function is defined.
 
 \item output: $out := \mbox{self}$
 \item exception: $(\neg \mbox{isAscending}(X) \Rightarrow
-  \mbox{IndepVarNotAscending} | |X| \neq |Y| \Rightarrow \mbox{SizeSeqMismatch}
+  \mbox{IndepVarNotAscending} | |X| \neq |Y| \Rightarrow \mbox{SeqSizeMismatch}
   | i \notin [1..\mbox{MAX\_ORDER}] \Rightarrow \mbox{InvalidInterpOrder})$
 \end{itemize}
 
@@ -480,7 +460,10 @@ Data\_init():
 \item output: $out := \mbox{CurveT}(Z, Y, i)$, where
   $Y = ||(i: \mathbb{N}| i \in [0 .. |Z|-1] : \langle S_i.\mbox{eval}(x) \rangle
   )$ or $Y = \mbox{ map } \mbox{eval}(x) \mbox{ } S$ \textit{\# in both cases
-    there is an abuse of notation}
+    there is an abuse of notation.  The idea is simply to convey that the
+    independent variable is the sequence $Z$ and the dependent variable is the
+    sequence where the $i$th entry is found by evaluating the curve
+    corresponding to $Z_i$ at $x$.}
 \item exception: None
 \end{itemize}
 
@@ -570,7 +553,7 @@ None, unless noted with a particular access program
 \noindent index($X, x$) \textit{\# assuming isAscending is True and isInBounds
   is True}
 \begin{itemize}
-\item output: $out := i \mbox{ such that } X_i \leq x \leq X_{i+1}$
+\item output: $out := i \mbox{ such that } X_i \leq x < X_{i+1}$
 \item exception: none
 \end{itemize}
 \newpage
@@ -627,16 +610,15 @@ None
 \noindent PlotSeq($X, Y$)
 \begin{itemize}
 \item transition: modify win so that it displays an x-y graph of the data points
-  showing X and the corresponding Y values.  X is the the independent variable
+  showing X and the corresponding Y values.  X is the independent variable
   and Y as the dependent variable.
-\item exception: $( |X| \neq |Y| \Rightarrow \mbox{SizeSeqMismatch})$
+\item exception: $( |X| \neq |Y| \Rightarrow \mbox{SeqSizeMismatch})$
 \end{itemize}
 
 \noindent PlotCurve($c$)
 \begin{itemize}
 \item transition: modify win so that it displays an x-y graph of the curve c
-  between c.minD to c.maxD for evaluating c at the points in between.  X is the
-  the independent variable and Y as the dependent variable.
+  between c.minD to c.maxD for evaluating c at the points in between.
 \item exception: none
 \end{itemize}
 \newpage
@@ -649,7 +631,7 @@ Load
 
 \subsection* {Uses}
 
-CurveT, DataT
+CurveADT, Data
 
 \subsection* {Syntax}
 
@@ -663,7 +645,7 @@ None
 \hline
 \textbf{Routine name} & \textbf{In} & \textbf{Out} & \textbf{Exceptions}\\
 \hline
-Load & $s: \mbox{string}$ & ~ & BadFormat\\
+Load & $s: \mbox{string}$ & ~ & ~\\
 \hline
 \end{tabular}
 
@@ -683,32 +665,33 @@ None
 
 \subsubsection* {Assumptions}
 
-The format of the input file.  The text file consists of a text file with the
-following format, where $z_i$ is the value for the $i$th curve, $x_j^i$ is the
-$x$ value for the $j$th point of the $i$th curve, $y_j^i$ is the
-$y$ value for the $j$th point of the $i$th curve, $m$ is the number of curves
-and $n_i$ is the number of data points in the $i$th curve.  All data values in a
-row are separated by commas.  Rows are separated by a new line.
-
-\begin{equation}
-\begin{array}{ccccc}
-z_1, & z_2, & z_3, & ..., & z_m \\
-x_1^1, & y_1^1, & ..., & x_1^m, & y_1^m\\
-x_2^1, & y_2^1, & ..., & x_2^m, & y_2^m\\
-x_3^1, & y_3^1, & ..., & x_3^m, & y_3^m\\
-..., & ..., & ..., & ..., & ...\\
-x_{n_1}^1, & y_{n_1}^1, & ..., & x_{n_m}^m, & y_{n_m}^m
-\end{array}
-\end{equation}
+The input file will match the given specification.
 
 \subsubsection* {Access Routine Semantics}
 
 \noindent Load($s$)
 \begin{itemize}
 \item transition: read data from the file infile associated with the string s.
-  Use this data to update the state of the Data module.
-\item exception: if the format does not match the expected format, generate a
-  BadFormat exception
+  Use this data to update the state of the Data module.  The text file consists
+  of a text file with the following format, where $z_i$ is the value for the
+  $i$th curve, $x_j^i$ is the $x$ value for the $j$th point of the $i$th curve,
+  $y_j^i$ is the $y$ value for the $j$th point of the $i$th curve, $m$ is the
+  number of curves and $n_i$ is the number of data points in the $i$th curve.
+  All data values in a row are separated by commas.  Rows are separated by a new
+  line.
+
+  \begin{equation}
+    \begin{array}{ccccc}
+      z_1, & z_2, & z_3, & ..., & z_m \\
+      x_1^1, & y_1^1, & ..., & x_1^m, & y_1^m\\
+      x_2^1, & y_2^1, & ..., & x_2^m, & y_2^m\\
+      x_3^1, & y_3^1, & ..., & x_3^m, & y_3^m\\
+      ..., & ..., & ..., & ..., & ...\\
+      x_{n_1}^1, & y_{n_1}^1, & ..., & x_{n_m}^m, & y_{n_m}^m
+    \end{array}
+  \end{equation}
+
+\item exception: none
 \end{itemize}
 
 \end {document}