Read Latex

Thursday, March 28, 2019

Computing and the Future HW 8 - TRIZ to STRIZ Method

Introduction

Before I answer the homework questions I want to briefly comment on two topics that came up in our previous class:

Boeing 737 Max Catastrophe
The first topic was the Boeing 737 Max catastrophe whose status has largely been addressed by this Seattle Times article. Our in-class analysis using the TRIZ method was very interesting also. 

My comment is this: When I first started thinking about the causes of the two accidents, first of the low-cost Indonesian Lion Air, then the Ethiopian event, I wondered if there was something about the location, the climate, or the ENVIRONMENT that the aircraft were being operated in that could have led to the problem. One example where environment is important is in the case of dissimilar metal corrosion. When two metals of different electrochemical oxidation reduction potential are used in a design, galvanic corrosion can lead to parts failure. A second example for turbomachinery, especially helicopters is sand and grit in the environment. I kept thinking over and over, "What makes the environment of these two crashes different that the typical US and Western European environments?" 

Well it turns out that Boeing CHARGED EXTRA for an additional attitude indicator, a switch and a panel light that enabled pilots to easily turn off the MCAS system when it started ratcheting them into an uncontrollable dive as described in the Seattle Times article.

So the difference was environmental all right, but it was the FINANCIAL ENVIRONMENT in which the aircraft were being operated that was different. I found this realization absolutely stunning - and sickening.

Speaking of Financials
The second comment I wanted to make was on the advent of PredictIt being a useable tool for predicting election outcomes. Prediction Markets are financial instruments that have a 'put your money where your mouth is' validation mechanism. This has gotten me to thinking about finances and cryptocurrencies. This week, Jack Dorsey, CEO of Square took an action that catalysed my thinking on this. The headline is: 'Shorting Banks' and here is my post:


In reality this post may be over-optimistic, but sovereign personal banking may become a long term trend.

Now on with the homework!


1a. TRIZ contains a 39x39 table for identifying things to improve about a particular technology. The 39 rows enumerate conflicts that an improvement tends to create. The 39 columns, which have the same labels as the rows, suggest solution strategies for each improvement/conflict pair.

  • Propose three improvements (table rows) to a technology relevant to your project topic.
  • Identify one or more conflicts (table columns) that each improvement will tend to create.
  • Based on the cells of the table, suggest solution(s) to each improvement and conflict.

The technology I am going to suggest an improvement to is TRIZ itself. I am going to use the 40 TRIZ Principles to overcome limitations in the method. I will make three such improvements:
  • Streamlining the Feature Vector by reducing it from length 39 to 20.
  • Streamlining the Principle Vector, reducing it from length 40 to 23.
  • Streamlining the TRIZ Matrix, reducing it from size 1521 to 400.
Then I will apply the improved technology which I called STRIZ for 'Streamlined TRIZ' to a technology, Machine Learning, which is relevant to my project.
In a way I am using TRIZ to improve TRIZ which is recursive. For the sake of completeness I will cite three worsening features of the current TRIZ, and then with the goal of improving them, find applicable cells in the TRIZ matrix. These three  cases are slightly contrived in that I actually improved the method by using the 40 TRIZ principles rather using than the specific trade-offs enumerated in the TRIZ matrix, but for the sake of using TRIZ to improve TRIZ, that is, for the sake of a recursive view of the problem and also for the sake of fulfilling the assignment requirements I will enumerate the three cases where the matrix could have been used. You can skip these three cases if you want to cut to the case.
Case 1:
Worsening Feature 36:
  • Feature 36 of TRIZ is 'Device Complexity'.
    TRIZ is complex.
Improving Feature 33:
  • Feature 33 of TRIZ is 'Ease of Operation'.
    We wish to ease TRIZ operation.
Solving Principle 17:
  • Principle 17 'Another Dimension'We will reduce the dimensionality of
    TRIZ Features, Principles and Matrix

Case 2:

Worsening Feature 25:
  • Feature 25 of TRIZ is 'Loss of Time'.
    TRIZ complexity makes it time intensive.
Improving Feature 33:
  • Feature 33 of TRIZ is 'Ease of Operation'.
    We wish to speed, and therefore ease TRIZ operation.
Solving Principles 28, 10, 34:
  • Principle 28 'Substitution'
  • Principle 10 'Preliminary Action'
  • Principle 34 'Discarding and Recovering'
    In these cases, logical substitution (as opposed to mechanical)
    is used to simplify TRIZ Features, Principles and Matrix.
    This simplifications constitute a 'Preliminary Action' done
    before the method is employed.
    In the process we discard one version of the method and
    recover another version of the method.
Case 3:

Worsening Feature 35:
  • Feature 36 of TRIZ is 'Versatility/Adaptability'.
    TRIZ complexity reduces its versatility.
Improving Feature 38:
  • Feature 38 of TRIZ is 'Extent of Automation'.
    We wish to automate TRIZ more fully.
Solving Principle 1 and 35:
  • Principle 1 'Segmentation'
  • Principle 35 'Parameter Changes'
  • Segmentation, Merging and Parameter Changes are the Core of
    the TRIZ to STRIZ Transformation

TRIZ to STRIZ 
I want to make a few comments on the TRIZ method and suggest some simplifying transformations that are both semantic and mathematical in nature. I called the simplified TRIZ method STRIZ where the leading 'S' character implies both simplification and streamlining.
The fact that the rows and columns have the same labels indicates that what is an improvement in one context can be a conflict or liability in another. In software engineering, programmers commonly quip that,  "That's not a bug, it's a FEATURE", implying that a bug (worsening feature) in one context can be an improving Feature in another. 

In common engineering/design parlance the Feature space enumerates "trade-offs". Genrich Altshuller called them "technical contradictions". I admire Altshuller for attempting to make the invention process more deterministic. Said again, inspecting this set of phrases reveals design 'virtues' in one context are 'vices' in another. 'Features' is a very significant term in the Machine Learning - the topic I have chosen to apply TRIZ to. More on that after we streamline the method.

TRIZ Feature Vector Transformational Rules --> 39 Labels to 20 Labels

Here are the original 39 Feature Labels that TRIZ uses:


1           Weight of moving object
2              Weight of stationary
3           Length of moving object
4              Length of stationary
5             Area of moving object
6                Area of stationary
7           Volume of moving object
8              Volume of stationary
9                             Speed
10                            Force
11               Stress or pressure
12                            Shape
13          Stability of the object
14                         Strength
15        Durability of moving obj.
16    Durability of non moving obj.
17                      Temperature
18           Illumination intensity
19          Use of energy by moving
20      Use of energy by stationary
21                            Power
22                   Loss of Energy
23                Loss of substance
24              Loss of Information
25                     Loss of Time
26        Quantity of substance/the
27                      Reliability
28             Measurement accuracy
29          Manufacturing precision
30          Object-affected harmful
31         Object-generated harmful
32              Ease of manufacture
33                Ease of operation
34                   Ease of repair
35      Adaptability or versatility
36                Device complexity
37          Difficulty of detecting
38             Extent of automation
39                     Productivity

On disciplined examination the 39 labels can be transformed to 20. This gives us one to bind to each finger and toe! Here are the principles I used for the transformation:
a) Since these features can apply to objects (nouny things) OR processes (verby things) we can use the following substitution chain: Wherever we see the term 'Object' we substitute the term 'Object or Process'. Wherever we see the term 'Object of Process' we can substitute the term 'Entity'. Wherever we see the term 'Entity' we can delete it, with the understanding that it is there. This is similar to the idea used in tensor notation where repeated indices indicate summation, except we are using substitution and deletion. This removes superfluous uses of the word 'object/, which is explicit in 7 of the features and implied in the remaining 32. This transformation is more tersely stated:
Object --> Object or Process --> Entity --> (null)

b) We can eliminate the distinction as to whether an object is moving or stationary for brevity. If it is moving at a velocity of zero it is stationary. This fact when combined with the next transformation cuts the first eight Features to four.
c) We can include changes in the Feature along with the Feature. Mathematically we are lumping the Feature along with its derivatives in the same group.
d) We can denote the Features  of Force as being 'ON or BY' and Harm being 'TO or BY'. This collapses four Features to two.
e) We can merge concepts that have the same dimensions or units. For example stress, pressure and strength all have the same units of force divided by area. Invariably when we Stress an object or process we want to know if it has the Strength to survive it. So this merge makes physical sense via dimensional analysis.
f) Accuracy and Precision can be lumped, provided they are combined with the additional figures of merit, 'Bias' and 'Spread'.
After applying these transformations we obtain the streamlined list of twenty features:

A) 1&2&23&26) Mass and Changes in Mass
B) 3-8,41,42) Length, Area, Volume and Changes in Same
C)  40, 9,40) Position, Velocity, Acceleration
D)        10) Force (on or by)
E)     11&14) Stress or Strength
F)        12) Shape
G)        13) Stability
H)     15&16) Durability
I)        17) Temperature
J)     18-22) Energy Consumption/Production/Changes
K)     24&38) Information Change
L)        25) Time Loss
M)        27) Reliability
N)  28&29,43) Accuracy, Precision, Bias, Spread
O)     30&31) Harm (to or by)
P)        32) Manufacturability
Q)     33-35) Operability, Maintainability, Adaptability
R)        36) Complexity
S)        37) Detection Difficulty
T)        39) Productivity


When we merge table entries for simplification we simply merge their corresponding table entries. The transformation I have proposed reduces 1521 possible entries to 400. We also note that the table is symmetric, it is identical to its transpose. We further note that the principal diagonal is always empty, meaning the original table had a maximum of 1482 cells containing various problem-solving entries and the transformed table had 380 cells. This is a 3.9 fold reduction in complexity of the TRIZ matrix. Completing the transformation according to the rules listed above we have:

Streamlined TRIZ Features - Twenty STRIZ Features


1                    Mass
2              Dimensions
3               Positions
4                  Forces
5       Stress & Strength
6                   Shape
7               Stability
8              Durability
9             Temperature
10                 Energy
11            Information
12                   Time
13            Reliability
14    Accuracy, Precision
15                   Harm
16      Manufacturability
17            Operability
18             Complexity
19          Detectability
20           Productivity



TRIZ Principle Vector Transformation

For brevity I would prefer to stop here, but revision of the TRIZ Feature Vector is only the first part of a three-part streamlining process. For each entry in the Cartesian Product of the TRIZ Feature Vector there are one or more TRIZ Principles that can be invoked to solve the contradiction. There are 40 TRIZ Principles. Let us discover to what degree, they can be transformed and compacted. 

Definitions: A pronym is the original word, an antonym has the opposite meaning of the pronym. This definition is necessary because there is no single-word antonym of the actual word antonym. If this befuddles you as it did me, you can pretend I didn't say it.

Our transformational rules are as follows:
  • When not present add antonym principle to pronym principle.
  • Combine pronym and antonym versions of each principle to form a complementary pair of principles.
  • When antonym and pronyms are already present combine them as complementary pairs.
  • Purge or eliminate redundant Principles.

As before we enumerate the 40 Principles and prepare them.

The 40 Principles of TRIZ Annotated

 
1                                                                Segmentation
2                                           Taking Out / Separation / Removal
3                           Local Quality / Locality / Separation of Concerns
4                                                                   Asymmetry
5                                          Merging / Opposite of Segmentation
6                                      Universality / Combination of Concerns
7                                                   Nested Doll / Telescoping
8                                                      Anti-Weight / Add lift
9                                                     Preliminary Anti-Action
10          Preliminary Action / Like Preprocessing / Suggests Postprocessing
11                                             Beforehand cushioning / Backup
12                                           Equipotentiality / Counterweight
13                                        The Other Way Round / Invert Action
14                             Spheroidality / Curvature Instead of Linearity
15                                 Dynamics / Allow Object or Process to Move
16      Partial or Excessive Actions / Slightly Less or Slightly More of Same
17                                        Another Dimension / Add a Dimension
18                                                       Mechanical Vibration
19                                                            Periodic Action
20                                Continuity of Action / Operate continuously
21                                          Skipping / Operate Intermittently
22           Blessing in Disguise / Eliminate Harm by Amplifying or Combining
23                                      Feedback / Introduce or Modify Amount
24                       Intermediary / Use an intermediary object or process
25        Self-service / Make an object or process serve or perpetuate itself
26                                  Copying / Make lots of copies or simulate
27                 Cheap short-life objects / Disposability / Use Disposables
28      Mechanics substitution / Replace mechanical method with sensor method
29     Pneumatics and Hydraulics / Use gas and liquids instead of solid parts
30               Flexible Shells and Thin Films / Membranes instead of bricks
31                                      Porous materials / Introduce Porosity
32             Color changes / Change the color or transparency of an object 
33                        Homogeneity / Make objects out of the same material
34                                                  Discarding and Recovering
35         Param. Change / State Change, Conc., Temperature, Flexibility, etc
36                                                          Phase Transitions
37                          Thermal Expansion / Suggests Thermal Contraction 
38    Strong Oxidants   / Strong Reactivity / Conc. Variation / Param. Change
39     Inert Atmosphere / Weak   Reactivity / Conc. Variation / Param. Change
40                            Composite materials / Antonym of 33 Homogeneity

We note:
TRIZ 34 is already a complementary pair.
TRIZ 35 subsumes 36 as variants of parameter change/state change idea
TRIZ 35 and 38 are variants of the same idea

TRIZ to STRIZ Transformation


A)    1&2&5) Segmentation & Separation/Merging & Combining
B)      3&6) Separation of Concerns / Combination of Concerns
C)        4) Asymmetry / Symmetry
D)        7) Nested Doll / Telescoping
E)        8) Add or Subtract Weight or Lift
F)     9&10) Preprocess/Postprocess / Preliminary Anti-Action or Action
G)       11) Beforehand cushioning / Backup / Protect
H)       12) Equipotentiality / Gradient / Counterweight / Dead weight
I)       13) The Other Way Round / Invert Action or Order of Process
J)    14&30) Spheroidality / Curvature / Flexible Shells / Thin Films
K)       15) Dynamics / Allow Object or Process to Move or Enforce Stationarity
L)       16) Partial or Excessive Actions / Slightly Less or Slightly More
M)       17) Embed or Project / Add or Subtract a Dimension
N)    18&19) Mechanical Vibration / Periodic Action
O)    20&21) Operate continuously / Operate Intermittently
P)       22) Blessing in Disguise / Eliminate Harm by Amplifying or Combining 
Q)       23) Feedback / Introduce or Modify Amount
R)       24) Intermediary / Use an intermediary object or process
S)    25&26) Self-perpetuating / Copy, serve or perpetuate itself
T)    27&34) Increase/Decrease Lifetime 
                 Make Disposable or Reusable 
                 Discard or Recover
U)       28) Mechanics substitution / Replace mechanical method with sensor method
V) 29&31&32&
   35&36-38&
         39) Parameter Change / State, Color, Transparency, Concentration,
             Temperature, Porosity, Reactivity, Flexibility,
             Thermal Expansion, Contraction, etc,
             of Object, Process, or Environment.
W)    33&40) Homogeneity / Composite / Make out of the same or diff. material

The 23 Streamlined TRIZ Principles
Most of these 23 principles can be suffixed with the phrase,
'object, action, or process' therefore it is eliminated as superfluous. Consolidating these principles for compactness we obtain:


 
1                  Segmentation or Combination
2        Separation or Combination of Concerns
3                        Asymmetry or Symmetry
4               Recursive Packing or Unpacking
5               Add or Subtract Weight or Lift
6     Preprocess or Postprocess Action or Bias
7                   Cushion / Backup / Protect
8                     Add or Subtract Gradient
9                      Invert Order of Process
10      Add or Subtract Curvature or Thickness
11           Constrain or Unconstrain Movement
12                Titrate Actions or Processes
13                 Add or Subtract a Dimension
14             Add or Subtract Periodic Action
15      Operate Continuously or Intermittently
16      Reduce Harm by Amplifying or Combining
17                    Add or Subtract Feedback
18                Add or Subtract Intermediate
19                 Add or Subtract Duplication
20               Increase or Decrease Lifetime
21                         Method Substitution
22                            Parameter Change
23                    Homogeneity or Composite



TRIZ Matrix Transformation into STRIZ Matrix


Again for brevity I would prefer to stop here, but if one more step is taken, the entire TRIZ method is simplified. We are done with the conceptually hard part, all that is left is the horrific bookkeeping transformation necessary to transform the original TRIZ Matrix to the streamlined STRIZ Matrix. To do this we need some mapping vectors that map TRIZ Features into STRIZ Features, TRIZ Principles into STRIZ Principles. Then finally we can construct the STRIZ Matrix.

The original TRIZ Matrix had 1521 cells generated by the Cartesian product of the TRIZ Feature Vector. The TRIZ Matrix contained 4202 Principle references.

Construction of the STRIZ Matrix will be done in three steps:

  • Lumping the TRIZ Principle References into the small STRIZ Matrix
  • Translating the TRIZ Principle References to STRIZ Principle References
  • Eliminating duplicate STRIZ Principle References
  • Sorting the STRIZ Principles and Hyphenating Continuous Ranges
The resulting STRIZ Matrix has 400 cells generated by the Cartesian product of the STRIZ Feature Vector. The STRIZ Matrix contains 2347 Individual Principle References which when hyphenated into contiguous references is transformed to 1559 Principle References. This reduces the size of the TRIX matrix by nearly two thirds. Here is the STRIZ Matrix:


Three Proposed Improvements in Machine Learning
Besides using TRIZ to improve itself, I will discuss briefly a technology relevant to my project in Machine Learning. There are a couple of levels of abstraction that are very important to distinguish. We could improve Machine Learning in General, (MLG) or we could improve Machine Learning in Specific, that is a specific application (MLS).

If we were to improve the MLG case, we might:
  • make development faster
  • make it function with less loss of information,
  • improve its accuracy and precision while reducing its bias
  • make it easier to create, use, repair or adapt 
  • reduce its complexity
  • improve productivity with faster, better and cheaper neurons 
  • reduce the harm of unexplainable algorithms
  • ease development of ML applications

Harm can be done by employing algorithms whose chain of reasoning are not explainable, as in firing someone using a machine-learning program that pares extra employees off a roster.  One area that really needs some attention is the mapping of problems to algorithm in a rapid and efficient way, to wit, ease of development of ML apps.

If we were to improve the MLS case, we might:
  • make execution faster
  • change the topology of the neural network itself, that is, we might change the number of neurons and the way in which they are interconnected. 
  • change the hyperparameters that determine how long the training session will take. These hyperparameters include the learning rate, the neuron type, the basis functions used to model certain features, the number of training sessions or epochs and so forth. 

Since we are asked to pick three proposed improvements, let's choose one from the MLG case and two from the MLS case.

TRIZ for the MLG Case: Faster Development and Harm Reduction


One of the things that makes development faster, as in a Classifier described below, is to train and test, that is train and use, similar neural nets for each output parameter we want to report . This means taking an ensemble of inputs and producing a single value label as output. Said in ML parlance: This means training a set of identical input features to output a single label in a classified learning situation. The only thing that is different is the type of label, everything else is the same. For this we apply the Streamlined TRIZ Principle 1 of segmentation and duplication. We segment by output parameter, and duplicate the networks, specializing each of them to output a specific parameter. This creates the disadvantage that we have all these copies to maintain. We go to the TRIZ table and note that we can consolidate those portions of the network that are the same (Streamlined Principle 1) and segment those portions of the network that are different. (Streamlined Principle 1)

For the MLG Case we choose to reduce the harm of unexplainable algorithms.
Because of the complexity of deep layer neural networks, there rapidly reaches a point where neural nets can effectively classify their inputs, but they cannot tell you how they have done so. This is Streamlined TRIZ Feature 17, COMPLEXITY. This problem is solved using Streamlined TRIZ Principle 17, FEEDBACK in the Tensorflow Playground by showing the input features that each neuron in each layer is processing using visualization of what each neuron in each layer is processing. I will point this out in my class project demonstration.

TRIZ for the MLS Case: Faster Execution

MLS Faster Execution

To speed execution MLS Case we will choose the hyperparameter optimization problem. For this situation we will invoke the Streamlined TRIZ Principle (STP) 19 of copying, self-duplication and self-perpetuation, as well as STP 12 parameter change, and titration. We will make identical versions of the network and run them with different values of learning rate, different numbers of training sessions and different train/test splits. The train/test split is how much of the original data is held separate from the training cases for evaluating or 'testing' how well the neural network functions.

1b. Pick a certain technology (existing or future) relevant to your project topic or any other topic.  Suggest how an implementation of it could "branch out" and do something else. For example, pencils are a technology that "branched out" to also have erasers, storage bins for extra lead, clips for attaching it to a pocket, and so on. []

The branch-out of Machine Learning is exemplified in a strawman proposal I just wrote for an 'Aircraft Classifier'. This tool takes as its input 'features', aircraft geometry, mass properties, power and outputs performance such as top speed, rate of climb and service ceiling. This is a supervised learning problem in that the outputs it gives are labels that correspond to  performance characteristics. Each performance type like range, top speed, rate of climb, service ceiling and so on will require their own neural network. The Classifier can then create interpolated designs that are more optimal than the existing aircraft it is trained on. Combining two such aircraft in a dogfight with a GAN, a Generative Adversarial Network, would allow a more optimal aircraft to be designed. What I'm really interested in is the applied optimal design, the almost real-time design evolution, that AI and ML can facilitate. This constitutes a major BRANCHING OUT that could affect the design of every industrial commodity.

2. For your project, write up 399 words and post to your blog, or do the equivalent in effort on something other than writing and explain briefly.

vTMS™ Progress I have collected most, if not all of the parts for my vTMS™ device and vBrain™ simulator. The vTMS™ work is of three kinds:
  1. Mechanical Engineering
  2. Electrical Engineering
  3. Component Acceptance Testing
Mechanical Engineering Even with this prototype device the tolerances are extremely close - in some cases less than a millimeter makes a difference. For two of the difficult parts, first the rotor, and then the the lamp holder, I utilized 3D printing via ShapeWays. The costs are very reasonable, only eight dollars for the LED holder shown below. The tolerances here are around a hundredth of a millimeter. The lamp holder looks simple enough, but has to allow for cooling of the LED panel, clearance of the wires from the rotor and clamping with adequate structural strength.



I have used Rhino™, a 3D modeler, for  the design work. Here is a typical design image:



Which after some work, leads to a functioning assembly. Using a modeling program saves enormous amounts of time and money. This project would simply not be possible in this time frame without it.


In the process I have found that is is possible to 'supercharge' the permanent magnet (PM) assemblies by stacking them four deep on the rotor. Since PM's are weaker than the magnetic field generated by a traditional inductive TMS pulse I am literally 'stacking the deck' in favor of having an effect. When two rotor faces stick together, it takes many pounds of force to separate them. When the two rotors turn in proximity to each other they induce significant movement in each other. So some technique will be necessary in use to keep them from getting too close to the simulated brain. My rationale for using two rotors is that it is the interaction of the two fields that will allow for precise placement and increase the likelihood of induction of in-brain magnetic fields. Hair, skin, skull, fascia and the three meninges of the brain present a significant magnetic obstacle to a single rotor system. Using two rotors puts a changing field between them.
In addition to the rotor and motor assembly, there is a motor controller, an LED lamp driver, four controls and all the associated wiring. Fitting this unit into its protective housing was the most labor-intensive step so far. Literally millimeters count. You can also notice modeling shortcuts in these pictures. I do not model every thread on the screws or the bevels in the LED plate. This saves time.



Here is a shot of the controls, conveniently on the back. The silver knob powers up the unit which contains a power supply in the base. It turns the LEDs on, which backlight the rotor, and enable power to go to the controller. The red knob controls the speed of rotation with clockwise being faster. The green and red buttons are forward and reverse, respectively. They are momentary switches and must be depressed for the unit to operate. Once the units are operational and stable, the red/green buttons will be replaced with a double pole, double throw switch that leave the unit running without the need to keep holding the switch down. The remaining holes are for cooling the controller, LEDs and heat sink. A gentle breeze wafts through the unit. The motor uses about 3 watts of power. I have measured this using a power supply at 15 V which showed a current consumption of 200 mA. The LED panel is about 4 watts, so the total power consumption is 7 watts. Heating should not be a significant problem. The rotor itself generates a centrifugal flow of air.


Electrical Design
The electrical design is just as important as the mechanical design. It was roughed out on paper like this:


This was then transformed using eDraw™ into a clearer diagram. I find the additional rehearsals that come from codifying the drawing help to reduce the errors I make in assembly. This is especially true on a project that has never been done. Planning needs rehearsal to be successful. Here's the cleanup. The control circuitry is separate, omitted here for brevity.


An unlikely ensemble of tools is necessary for the surgery of assembly:



3. Grad students only: continue with the book you obtained. Read the next 20 pages. State what page numbers you have read. Explain what you agree with, disagree with, and how your views compare with those of other reviewers on Amazon or elsewhere. I have moved this answer to my ongoing review of the book, "The Human Race to the Future" a single curated document that is here. In the Spring Break session for this question I read and reviewed five chapters, 15-19, of the book.

No comments: