SensorBlocks: The Wood-and-Nails of the Electronic Sensor World Frank Vahid* Department of Computer Science and Engineering University of California, Riverside.

Slides:



Advertisements
Similar presentations
Frank Vahid, UC Riverside 1 First Results with eBlocks: Embedded Systems Building Blocks Susan Cotterell, Frank Vahid*, Walid Najjar and Harry Hsieh Department.
Advertisements

Digitally-Bypassed Transducers: Interfacing Digital Mockups to Real-Time Medical Equipment Scott Sirowy*, Tony Givargis and Frank Vahid* This work was.
JustinMind: Dynamic Panels
Feature Extractors for Integration of Cameras and Sensors during End-User Programming of Assistive Monitoring Systems Alex Edgcomb Frank Vahid University.
Component Oriented Programming 1 Chapter 2 Theory of Components.
Linking A quick overview of how to configure PulseWorx UPB devices to control each other.
In Sonata TM, start with the layout of the system. Import a drawing in just about any format and start putting components on it.
WELCOME A Security Masterpiece. Control Panel Line-up Max Zones Basic Zones Max Zones Basic Zones n 1725EX14 6 (4 + 2) n 1728EX15 7 (5 + 2) n 1738EX16.
Microprocessor Motor Control Spring Introduction  Stamp projects Robots  Sensors  Motor control  Logic Rocketry  Reading acceleration (“g”
Applications and Experiments with eBlocks – Electronic Blocks for Basic Sensor-Based Systems Susan Cotterell*, Kelly Downey ŧ, Frank Vahid *¥ * Department.
PIC Programming with Logicator
Robot Soccer Challenge
Introduction to LabVIEW 8.5
Blogics! It’s a logic circuit simulator aimed at beginners. It introduces simple concepts in the design of interactive physical computing systems such.
Automated Generation of Basic Custom Sensor-Based Embedded Computing Systems Guided by End-User Optimization Criteria Susan Lysecky Dept. of Electrical.
Frank Vahid, UC Riverside 1 First Results with eBlocks: Embedded Systems Building Blocks Susan Cotterell, Frank Vahid*, Walid Najjar and Harry Hsieh Department.
EBlocks: Enabling Design of Basic Embedded Systems by Novice Users Susan Lysecky Dept. of Electrical and Computer Engineering University of Arizona
"Standard Binaries for FPGAs" & "eBlocks" Frank Vahid Professor Department of Computer Science and Engineering University of California, Riverside Associate.
"Standard Binaries for FPGAs" & "eBlocks" Frank Vahid Professor Department of Computer Science and Engineering University of California, Riverside Associate.
1 Electronic Blocks -- The “Wood and Nails” of Sensor-Based Embedded Systems Frank Vahid Professor Dept. of Computer Science & Engineering, University.
Basic Register Typically, we store multi-bit items
System Synthesis for Networks of Programmable Blocks Ryan Mannion, Harry Hsieh, Susan Cotterell, Frank Vahid * Department of Computer Science and Engineering.
EBlocks -- Electronic Building Blocks for Everyone Frank Vahid Professor Computer Science and Engineering University of California, Riverside (Also with.
Embedded Systems: Supercomputing in a Pencil Tip Frank Vahid* Department of Computer Science and Engineering University of California, Riverside
A Logic Block Enabling Logic Configuration by Non-Experts in Sensor Networks Susan Cotterell and Frank Vahid * Department of Computer Science and Engineering.
Introduction to LabVIEW Seth Price Department of Chemical Engineering New Mexico Tech Rev. 10/5/14.
EBlocks – Electronic Building Blocks for Sensor-Based Systems Frank Vahid Professor Dept. of Computer Science and Engineering University of California,
PROJECT PROPOSAL Lennie Giannone, Ryan Savino, Carrie Johnston, and Jessica Fernandes.
You Can Do It – eBlocks Enabling Regular People to Build Useful Customized Sensor-Based Systems Frank Vahid Professor Dept. of Computer Science and Engineering.
EIGHTH GRADE ROBOTICS KITTATINNY REGIONAL HIGH SCHOOL MR. SHEA Introduction to Robotics Day4.
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
Actuators & Their Applications
Energy Smart Room GROUP 9 PRESENTERS DEMO DATE SPECIAL THANKS TO ADVISOR PRESENTERS Thursday April 19, 2007 Department of Electrical and Systems Engineering.
XANTECH CORPORATION ● TELFAIR AVENUE ● SYLMAR, CA ● Product Spotlight ISM4 – Intelligent System Manager.
Use of Multimedia in Engineering. Mechatronics engineering is based on the combination from three basic engineering field that is mechaninal, electronics.
Chapter 9 Introduction to ActionScript 3.0. Chapter 9 Lessons 1.Understand ActionScript Work with instances of movie clip symbols 3.Use code snippets.
PLC introduction1 Discrete Event Control Concept Representation DEC controller design DEC controller implementation.
PLC: Programmable Logical Controller
Introduction to the Basic Parts of LEGO’s NXT Robotics
CSCI-235 Micro-Computers in Science Hardware Design Part I.
Logic Gates How Boolean logic is implemented. Transistors used as switches to implement Boolean logic: ANDOR Logic with Transistors.
 eBlock is an electronics block.  It can define as embedded system building block used in sensor based system.  Enable non-experts to build basic small-scale.
A Fast On-Chip Profiler Memory Roman Lysecky, Susan Cotterell, Frank Vahid* Department of Computer Science and Engineering University of California, Riverside.
Eclipse EHX System Logic Maestro. Module Objective Introduce Logic Maestro to the user Elements ► What is Logic Maestro ► How does Logic Maestro relate.
Usability of State Based Boolean eBlocks Susan Cotterell and Frank Vahid * Department of Computer Science and Engineering University of California, Riverside.
Programming Concepts (Part B) ENGR 10 Introduction to Engineering 1 Hsu/Youssefi.
XS26-2 Expandable Safety Controller.
Module 1: Introduction to PLC
Implementing software in IEC Languages in IEC IEC uses the following languages Instruction List – Assembly level programming using.
CSCI-100 Introduction to Computing Hardware Design Part I.
Introduction to LabVIEW 8.5
EBlocks – An Enabling Technology for Basic Sensor Based Systems Susan Cotterell, Ryan Mannion, Frank Vahid *, Harry Hsieh Department of Computer Science.
目录 8 in 1 Sensor ◆ 8 in 1 Sensor Unique Features ● Built in PIR motion sensor and light intensity sensor ● Built in 2 Dry Input Ports ● Built in 32 Logics.
Scott Sirowy, Chen Huang, and Frank Vahid † Department of Computer Science and Engineering University of California, Riverside {ssirowy,chuang,
On-Chip Logic Minimization Roman Lysecky & Frank Vahid* Department of Computer Science and Engineering University of California, Riverside *Also with the.
How to configure alarm system
Lego Mindstorm Robots 9797 kit.  Students will learn how to identify how to detect a change in a condition.  Students will learn where and how to identify.
Programming Concepts (Part B) ENGR 10 Introduction to Engineering
Build on a Breadboard Simulator
Power meter SB-DN-PM1P03 SB-DN-PM3P02.
CSCI-100 Introduction to Computing
Digital electronics and logic gates
Programming Concepts (Part B) ENGR 10 Introduction to Engineering
Frank Vahid and Walid Najjar
How Boolean logic is implemented
Exploring Computer Science Lesson 6-5
System Synthesis for Networks of Programmable Blocks
Programming Concepts (Part B) ENGR 10 Introduction to Engineering
Presentation transcript:

SensorBlocks: The Wood-and-Nails of the Electronic Sensor World Frank Vahid* Department of Computer Science and Engineering University of California, Riverside * Also with the Center for Embedded Computer Systems at UC Irvine This work is being supported by the National Science Foundation SensorBlocks are also known as "eBlocks" –

Frank Vahid UCR TechHorizons of 22 Seen this Problem?  Technology everywhere – Why no good solution? Not!Available

Frank Vahid UCR TechHorizons of 22 Introduction  1998: Simple Problem Garage door open at night  No simple solution Off-the-shelf solutions costly, hard to find, and/or not customizable Alarm system cost – overkill  Connecting existing sensors, logic, transmit/receive, LEDs is hard Electronics, programming 2-week project: 70% EE/CS unable  Countless similar applications go unrealized  Why can't I just connect those components like "Lego" blocks? LED receive contact switch light sensor AND transmit

Frank Vahid UCR TechHorizons of 22 Shrinking Processor Size/Cost Enables New Solution  Make sensors smarter By adding processor+battery Becomes a "block" easily connected to other blocks Courtesy of Joe Kahn

Frank Vahid UCR TechHorizons of 22 Shrinking Processor Size/Cost Enables New Solution – SensorBlocks Existing component viewNew "SensorBlock" view Button yes/no Light Sensor yes/no Magnetic Contact Switch yes/no LED yes/no Beeper Electric Relay yes/no

Frank Vahid UCR TechHorizons of 22 SensorBlocks  Just connect blocks, and they work No programming knowledge, no electronics knowledge Button yes/no LED yes/no Beeper yes/no Light Sensor yes/no

Frank Vahid UCR TechHorizons of 22 SensorBlocks Example  "Garage Open at Night" detector  <10 minutes to build Need to indicate garage open at night – use LED block LED Detect night-time – use Light Sensor block Light Sensor Detect garage door open – use Contact Switch block Magnetic Contact Switch Plug pieces together and the system is done! Use Combine block to combine light sensor and contact switch into one Combine AND OR yes no When A isyes no B is then the output is yes

Frank Vahid UCR TechHorizons of 22 What's Hard (The Research Part)  (1) Finding right set of building blocks Toggle Splitter Tripper 2-Input Logic 3-Input Logic Splitter 4-Input Logic Splitter Prolong (short) Prolong (long) Combine AND OR yes no When A isyes no B is then the output is yes Too many – Overwhelming (too much choice) 2 Yes detector 2 No detector Too few – Overwhelming (too much configuration) SuperBlock AND OR yes no When A isB is then the output is yes : Splitter :...

Frank Vahid UCR TechHorizons of 22 What's Hard (The Research Part)  (2) Making the blocks understandable People NOT likely to read directions Those that do are unlikely to understand ABOutput noyesno yesnoyes noyes no yes Logic Block configurable DIP switch A B Combine A is yes, B is yes A is yes, B is no A is no, B is yes A is no, B is no The output shouldbe yes when: yes no: Phrased truth table yes no the output should be AB When the input is out Combine A is yes, B is yes A is yes, B is no A is no, B is yes A is no, B is no Phrased truth table embedded in sentence yes no The output should be When the input is out AB AB AB AB AB Combine Colored truth table embedded in sentence Combine AND OR yes no When A is yes no B is then the output is yes Logic Sentence Example: Combine block Performed extensive user testing (over 500 students, kids, and adults) over two years Most success

Frank Vahid UCR TechHorizons of 22 What's Hard (The Research Part)  (3) Batteries must last years, yet performance should appear continuous Blocks are off 99.9% of the time Mean time between corrupted packets (days) 1 0 F reliability Block latency (seconds) 1 0 F latency Disconnect response (seconds) 1 0 F responsiveness Connect response (seconds) 1 0 F responsiveness Latency Disconnect Responsiveness Reliability Connect Responsiveness time ft f (a) (b) (d) (c) error << ftfff << interpreted as Developed theory to map SensorBlock events to continuous time Developed custom CAD tool to automatically find the best block parameter settings out of the billions of possibilities

Frank Vahid UCR TechHorizons of 22 Built >100 Prototypes  Size of deck of cards (eventually smaller)  2-3 years on 2 AA batteries (eventually longer)  Can communicate via wire >1.5 miles, 150 ft wireless  Hundreds of trial users

Frank Vahid UCR TechHorizons of 22 Graphical Simulator Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port.  User specifies and tests block design  Java-based simulator User chooses between pallets Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Motion Sensor Yes/No Button Light Sensor Sensors Green/Red Light Beeper Output Available eBlocks Advanced ModeHide this panel Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes

Frank Vahid UCR TechHorizons of 22 Graphical Simulator Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port.  User specifies and tests block design  Java-based simulator User chooses between pallets Blocks added by dragging Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Available eBlocks Advanced ModeHide this panel Green/Red Light Beeper Output Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Motion Sensor Yes/No Button Light Sensor Sensors Button

Frank Vahid UCR TechHorizons of 22 Graphical Simulator Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port.  User specifies and tests block design  Java-based simulator User chooses between pallets Blocks added by dragging Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Button Light Sensor

Frank Vahid UCR TechHorizons of 22 Graphical Simulator Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port.  User specifies and tests block design  Java-based simulator User chooses between pallets Blocks added by dragging Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Button Light Sensor Available eBlocks Advanced ModeHide this panel Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Combine AND OR yes no When A isyes no B is then the output is yes

Frank Vahid UCR TechHorizons of 22 Graphical Simulator Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port.  User specifies and tests block design  Java-based simulator User chooses between pallets Blocks added by dragging Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Button Light Sensor Available eBlocks Advanced ModeHide this panel Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Combine AND OR yes no When A isyes no B is then the output is yes Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Motion Sensor Yes/No Button Light Sensor Sensors Green/Red Light Beeper Output Beeper

Frank Vahid UCR TechHorizons of 22 Combine AND OR yes no When A isyes no B is then the output is yes Graphical Simulator Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port.  User specifies and tests block design  Java-based simulator User chooses between pallets Blocks added by dragging User is able to configure various blocks by clicking on switches Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Button Light Sensor Available eBlocks Advanced ModeHide this panel Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Motion Sensor Yes/No Button Light Sensor Sensors Green/Red Light Beeper Output Beeper

Frank Vahid UCR TechHorizons of 22 Graphical Simulator Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port.  User specifies and tests block design  Java-based simulator User chooses between pallets Blocks added by dragging User is able to configure various blocks by clicking on switches Connections created by drawing lines between blocks Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Button Light Sensor Available eBlocks Advanced ModeHide this panel Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Motion Sensor Yes/No Button Light Sensor Sensors Green/Red Light Beeper Output Beeper Combine AND OR yes no When A isyes no B is then the output is yes

Frank Vahid UCR TechHorizons of 22 Graphical Simulator Welcome to the eBlocks Simulator! In this area, you’ll find helpful hints on creating your own designs. Click and drag an eBlock off of the “Available eBlocks” panel to add it to your design. To connect two blocks, click and drag from an output port (colored circle) to an input port (gray circle). A connection can be destroyed by clicking on a connected port. To move a block around the workspace, click and drag its orange area. Blocks can be moved into the trash can to delete them. Green circles indicate that the port is sending a yes, red circles indicate that the port is sending a no, yellow Circles indicate that the port is sending an error signal, and gray circles denote an input port.  User specifies and tests block design  Java-based simulator User chooses between pallets Blocks added by dragging User is able to configure various blocks by clicking on switches Connections created by drawing lines between blocks User can create, experiment, test and configure design Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Light Sensor Available eBlocks Advanced ModeHide this panel Green/Red Light Beeper Output Motion Sensor Yes/No Button Light Sensor Sensors Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Available eBlocks Advanced ModeHide this panel Compute/Communications Prolonger seconds Once Yes, Stays Yes rst in Toggle Combine AND OR yes no When A isyes no B is then the output is yes Motion Sensor Yes/No Button Light Sensor Sensors Green/Red Light Beeper Output Beeper Combine AND OR yes no When A isyes no B is then the output is yes Light Sensor Button

Frank Vahid UCR TechHorizons of 22  Use virtual blocks in graphical simulator to describe desired sensor system behavior Intuitive due to spatial emphasis, not temporal emphasis  Automatically compile to code on programmable SensorBlocks SensorBlocks as a Programming Paradigm Programmable SensorBlocks Partitions

Frank Vahid UCR TechHorizons of 22 SensorBlock Tool Generates Code  Tool generates C code automatically #include #include “sci.h” #include “io.h” #include “constants.h” Unsigned char data_val = ERROR;... main(void) { unsigned I, j; TRISB = 0;... } main(void) { ORTA = 0xff; CMCON = 0x07; TRISA = 0x00; TRISB = 0x02; asm("CLRWDT");... } C Code  Download code to block with click of a button Ordinary users can “write” programs in minutes  Spatial vs. temporally-oriented language 20 high school graduates: eBlocks (spatial) vs. LEGO Mindstorms (temporal), 6 example systems, 40 minutes to build Programmable SensorBlock Type Average Success Rate Mindstorms0% eBlocks54%

Frank Vahid UCR TechHorizons of 22  SensorBlock technology nearly mature  Possible early-adoption applications Hearing impaired home monitoring Aging parent non-intrusive monitoring Middle-school early engineering experience kits  Trends work in favor each year Smaller, cheaper (<$5), longer battery life (or no battery?)  Eventual applications General blocks for home, stores, office Blocks as front-end devices to "smart home" New blocks and tools for intermediate/advanced users  Collaborators Ph.D students: Susan Lysecky, Ryan Mannion, David Sheldon; Profs. Harry Hsieh, Walid Najjar, Crista Lopes (UC Irvine); UG students: Andrea Coba, Margaret Ukwu, Caleb Leak, and several others Conclusions