46
Introduction to Embedded and Real-Time Systems School of Architecture, Civil and Environmental Engineering EPFL, SS 2008-2009 http://disal.epfl.ch/teaching/embedded_systems/

Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

  • Upload
    lamhanh

  • View
    246

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Introduction to Embedded and Real-Time Systems

School of Architecture, Civil and Environmental Engineering

EPFL, SS 2008-2009

http://disal.epfl.ch/teaching/embedded_systems/

Page 2: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Team beyond this course

http://disal.epfl.ch• Distributed Intelligent Systems and Algorithms Laboratory:

• Main instructor: Alcherio Martinoli• Guest lecturers: Grégory Mermoud, Sven Gowal, Pierre Roduit• Teaching assistants (office hours on the web):

– Grégory Mermoud (head TA, PhD student)‏– Sven Gowal (PhD student)‏– Amanda Prorok (PhD student)‏

• Support staff:– Yvan Bourquin (senior software engineer)– Thomas Lochmatter (PhD student)‏– Pierre Roduit (post doc)‏‏

Page 3: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Course Rationale, Content, and Prerequisites

Page 4: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Rationale (1)‏• Well-balanced course: theory, algorithms, tools

and practical exercises• Understanding the fundamentals of signal

processing • Understanding the fundamentals of embedded and

real-time systems• This course must allow you to become an power

user of the key instruments in environmental engineering used nowadays (sensor networks, meteorological stations, data loggers, etc.) and in the future (exploratory and cleaning robots, robotics sensor networks, etc.)‏

Page 5: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Rationale‏ ‏(2)• This course can be considered as an elevator to the master

course “Distributed Intelligent Systems” (available form the AY 2009-2010) for SSIE/SGC/SIN/SSC (and sometimes students from STI)‏

• It should get SSIE/SGC students prepared for carrying out a semester/master project at DISAL

• Being a power user means not only being an advanced user but also understand enough to collaborate with EE/CS/ME engineers to design the instruments of the future in environmental engineering; idea: complexity shifted more and more from hardware to software → a lot of domain knowledge can be transferred to the instruments at software level

Page 6: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

What this course is about• Fundamentals of signal processing:

– Analog/Digital signals, Time/Frequency domains, Filters, Converters

• Fundamentals of computer science (from an embedded systems perspective):– Basics of computer architecture– UNIX (crash course)‏– C programming (vs Java, Matlab)‏

• Fundamentals of embedded and real-time systems:– Microprocessors, microcontrollers, memory– Sensors and actuators– Basic control techniques and concepts

Page 7: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Course Prerequisites

• Basic Matlab knowledge• Fundamentals on programming (you learned

Java/Matlab, you will also learn C)‏• Fundamentals on probability calculus• Fundamentals on analysis (ODE, Fourier

transform)‏

Page 8: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Organization of the Course

Page 9: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Credits and Workload• 3 ECTS• 1 ECTS = 30 h workload → 90 h workload total• Rough breakdown

– 60 h lecture (including reading, exam preparation)‏– 30 h hwk+lab (including preparation + reporting)‏

• 5 hwk+lab of 6 h effort each:– Basics of signal processing (paper/pencil and Matlab)‏– UNIX and C programming– Webots lab– e-puck lab (as static sensor node)‏– Advanced e-puck lab (as robotic sensor node)‏

Page 10: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Grade• Final written exam, summer; 120 minutes• 1/3 performance during semester, 2/3

performance during the exam (compromise US/Europe style)‏

• During semester: performance of lab+hwk(total average), graded exercises returned ‏

• During exam: all covered material is subject to examination, but the exam is open book (no electronic equipment allowed though) ‏

Page 11: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Lecture Notes & Reading• Policy: no manuscript, but slides and your own notes• Preliminary lecture slides in pdf format available for

download on the course web site possibly before each lecture (Thursday early morning, handout format), definitive ones after lecture (couple of days max)‏

• Reading will be added on Moodle as the course progresses

• Moodle URL: http://moodle.epfl.ch/course/view.php?id=4611

• Enrollment key for Moodle: introsyst09

Page 12: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Labs and Hwk (1) • Lab session 08:15-10:00 on Thu, GR B0 01 (possibly

GR C0 02) biweekly, odd weeks (first lab session: week3) ‏

• Mini-tutorial (5-10 min) by the main lab designer at the beginning of the lab

• 2h lab + 4h hwk (including assignment reading and write-up)‏,

• 5 lab + hwk sets total (= 60 h total)‏• Download/upload via Moodle server (see student area

on the course web site). • [email protected] for ANY issue!

Page 13: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Labs and Hwk (2) • Wed noon deadline, 13 days time to get write-

ups done; no late submission accepted unless motivated by provable health problems

• Specific projectable issues in attending a lab session/submitting a write-up should be mentioned in advance to the TAs

• Network/moodle server problems → TAs immediately notified

Page 14: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Labs and Hwk (3) • Labs and hwk individually reviewed, distributed

in a timely fashion (target 1 week after submission, commented pdf) ‏

• No official solution of lab+hwk distributed; TAs available during office hours for discussion

• In 2 weeks: lab 1 (signal processing with paper&pencil and Matlab)‏

Page 15: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Suggestions for a Successful Exercise Series

From our teaching experience:• Read the assignment in advance (i.e. before the lab,

you have always a “free” evening), in this way you will be more efficient when the TAs are around for helping you on the toughest questions…

• Have an idea of the point distribution: this roughly correspond to the breakdown in time you should have; if your time is tight invest where it is worth!

• You do not have to achieve always 100/100: bonuses, exam are also great opportunities to round up…

Page 16: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Collaboration Policy

• Lecture and exam preparation: encouraged• Lab and hwk: discussion encouraged but

problem solved and submitted individually! We will be very strict in penalizing too similar write-ups copies because 1/3 of the grade is acquired with lab&hwk (n copies = # of points/n)!

Page 17: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

A Final Note

Page 18: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

1st course in ENAC (1) ‏• For us, this course is a novel experience for several reasons:

– First course given at bachelor level– First course given in ENAC (new flavor, new focus)‏– First iteration of the course in its current form

• Be indulgent and do not hesitate to provide feedback• Experimental tools shall be reliable and stable (debugged in

prior courses in IC):– 100 e-puck robots– Webots robotic simulator

• Big thanks to CRAFT and EPFL for sponsoring two FIFO projects (Fond d’Innovation pour la FOrmation; simulation and robotic tools)! See http://craft.epfl.ch

Page 19: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

1st course in ENAC (2) ‏• Our general goals for this first iteration:

– Get an insight into the background and the interests of SSIE/SGC students at the bachelor level

– Shape up the course for next year (it is going to become a 5 ECTS compulsory course for SSIE students and optional for SGC; it will be taught in English) ‏

– A first attempt to shape up a new generation of environmental and civil engineers with a deep understanding of the instruments used in environmental/structure monitoring and perhaps even controlling

Page 20: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Crash Course in Embedded and Real-Time Systems ‏

Page 21: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Goal of the lecture

• Giving a brief overview of the course• Motivation: why this course is useful to

environmental and civil engineers ‏• Short description of each topic• Key concepts briefly explained (further

detail in the upcoming weeks) ‏• Quick presentation of the team

Page 22: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Applications of Embedded Systems (ES) in Environmental

and Civil Engineering

Page 23: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

App #1: Seismic• Interaction between ground motions and

structure/foundation response not well understood.

– Current seismic networks not spatially dense enough to monitor structure deformation in response to ground motion, to sample wavefield without spatial aliasing.

• Science– Understand response of buildings and

underlying soil to ground shaking – Develop models to predict structure response

for earthquake scenarios.• Technology/Applications

– Identification of seismic events that cause significant structure shaking.

– Local, at-node processing of waveforms.– Dense structure monitoring systems.

• ES will provide field data at sufficient densities to develop predictive models of structure, foundation, soil response.Source: D. Estrin, UCLA

Page 24: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Field Experiment

⎜⎯⎯⎯⎯⎯⎯⎯ 1 km ⎯⎯⎯⎯⎯⎯⎜

• 38 strong-motion seismometers in 17-story steel-frame Factor Building.• 100 free-field seismometers in UCLA campus ground at 100-m spacing

Source: D. Estrin, UCLA

Page 25: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Contaminantplume

App#2: ES Research Implications• Environmental Micro-Sensors

– Sensors capable of recognizing phases in air/water/soil mixtures

– Sensors that withstand physically and chemically harsh conditions

– Microsensors• Signal Processing

– Nodes capable of real-time analysis of signals.

– Collaborative signal processing to expend energy only where there is risk.

Source: D. Estrin, UCLA

Page 26: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

App#3: Ecosystem MonitoringScience• Understand response of wild populations (plants and animals) to habitats

over time.• Develop in situ observation of species and ecosystem dynamics.

Techniques• Data acquisition of physical and chemical properties, at various

spatial and temporal scales, appropriate to the ecosystem, species and habitat.

• Automatic identification of organisms(current techniques involve close-range human observation).

• Measurements over long period of time,taken in-situ.

• Harsh environments with extremes in temperature, moisture, obstructions, ...

Source: D. Estrin, UCLA

Page 27: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

The Need of a Network of Embedded Systems

• Diverse sensor sizes (1-10 cm), spatial sampling intervals (1 cm - 100 m), and temporal sampling intervals (1 ms - days), depending on the target environment.

• Naive approach → Too many sensors → Too many data.– In-network, distributed information processing

• Wireless communication due to climate, terrain, thick vegetation.

• Self-Organization to achieve reliable, long-lived, operation in dynamic, resource-limited, harsh environment.

• Mobility for deploying scarce resources (e.g., high resolution sensors).

This course: only one node! Advanced master course: multiple networked intelligent nodes!

Source: D. Estrin, UCLA

Page 28: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Block I – Fundamentals of Signal Processing

• The concept of signal• Time- and frequency- domains

Page 29: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

The Concept of Signal

• A signal is any time- or space-dependent quantity.

• A signal can be (time-)discrete(sequence) or (time-)continuous(function).

• A continuous signal can be sampled, thus resulting in a discrete signal.

• An analog signal may take any continuous value over time; a digital signal can take only a discrete set of values.

Sampling of a continuous signal (in grey) resulting in a discrete signal (in red)‏

Quantization of a continuous signal (in grey) resulting in a digital signal (in red)‏

Page 30: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Some examples of signalsSignal Continuous

DiscreteAnalogDigital

Variation of the temperature during the day

Balance of your bank account

Live performance of Beethoven’s 5th symphony

MP3 of Beethoven’s 5th symphony

f(t) = 10*sin(t)

f(t) = floor(10*sin(t))

JPEG image

Average annual temperatures in Switzerland since 1950

Number of people on Earth since 1950

Page 31: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Some examples of signalsSignal Continuous

DiscreteAnalogDigital

Variation of the temperature during the day continuous

Balance of your bank account continuous

Live performance of Beethoven’s 5th symphony continuous

MP3 of Beethoven’s 5th symphony discrete

f(t) = 10*sin(t) continuous

f(t) = floor(10*sin(t)) continuous

JPEG image discrete (in space)

Average annual temperatures in Switzerland since 1950 discrete

Number of people on Earth since 1950 continuous

Page 32: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Some examples of signalsSignal Continuous

DiscreteAnalogDigital

Variation of the temperature during the day continuous analog

Balance of your bank account continuous digital

Live performance of Beethoven’s 5th symphony continuous analog

MP3 of Beethoven’s 5th symphony discrete digital

f(t) = 10*sin(t) continuous analog

f(t) = floor(10*sin(t)) continuous digital

JPEG image discrete (in space)

digital

Average annual temperatures in Switzerland since 1950 discrete analog

Number of people on Earth since 1950 continuous digital

Page 33: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Time and Frequency Domains• Any signal can be represented in time and in frequency.• One of the greatest discovery of the 20th century is that one

can mathematically switch from one domain to the other using a number of linear transformation (e.g., Fourier transform)

• These mathematical tools allow one to perform frequency analysis of signals and filters.

• Even better, for instance using using a Fast Fourier Transform (FFT), it is possible to compute the discrete Fourier transform and its inverse in an efficient manner.

Page 34: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Block II – Fundamentals of Computer Science

• Computers are Discrete and Digital• Basics of computer architecture• Programming of Embedded Systems

Page 35: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Computers are Discrete and Digital• Whatever quantity a computer processes, it has to be

digital (i.e., it belongs to a finite set of discrete values).– 32-bit signed integers go from −2,147,483,648 to

+2,147,483,647 on most computers• For instance, one can not represent π explicitly in a

computer: we need an approximation (e.g., rounding to the closest discrete value in the set).

• Whatever signal a computer processes, it has to be discrete, otherwise it would require an infinite amount of memory.

• Therefore, any physical signal has to be sampled and digitized in order to be processed by a computer!

Page 36: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Basics of computer architecture• Any computing entity (ranging from a laptop to a wireless

sensor network node) is composed of three fundamental entities:– Processing unit (microprocessor or microcontroller)– Memory (RAM, magnetic disks, flash memory)– I/O (input/output) ports

• A computer is a machine, not a magical entity. Keep in mind the following fundamental and universal limitations:– Processing is limited (in terms of operations per second)– Memory is finite – I/O bandwidth (bits per second) is limited– Energy and power is limited (especially important in

embedded systems, but remains true for any computer)

Page 37: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Programming for Embedded Systems• Embedded systems are limited both in terms of

computation and in terms of memory:– Understanding memory vs computation trade-offs is

crucial!• Embedded systems cannot afford (to date) the price of a

virtual machine and/or an interpreter such as those used by Java and Matlab:– You will need to use (and learn) the C language for

programming embedded systems.• C is quite similar, from a syntax point of view, to Java.

However, C does not manage memory automatically:– You will need to understand the concept of pointer and

memory management.

Page 38: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Block III – Fundamentals of Embedded and Real-Time

Systems

• Example of embedded systems• Webots realistic simulator• Perception-to-action loop

Page 39: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

e-puck Block Schema

ActuatorsSensors

Computation and memoryCommunication

I/O

Page 40: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

SensorNode (meteo station at EPFL)‏Features:- Very low sampling frequency < 1Hz- Very low power consumption: 25mW- Solar panel- Radio communication

Sensors:- Air Temperature and Humidity- Infrared Surface Temperature- Anemometer- Solar Radiation- Pluviometer- Soil moisture- Soil pressure

Similar architecture (computation, memory, I/O) as

the e-puck, but not mobileVisit http://sensorscope.epfl.ch for further details!

Page 41: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

WebotsTM

fast prototyping and simulationsoftware for mobile robots

professional mobile robot simulation

Page 42: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

e-puck Simulated Robot

• Discrete sensor and actuators• Noise and nonlinear characteristics faithfully reproduced• Single and multi-robot simulator• Different levels of simulation (different accuracy/faithfulness trade-

offs)‏

Page 43: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Perception-to-Action Loop

Computation

Perc

eptio

n

Act

ion

Environment

Reactive + memoryless (e.g., nonlinear transform, single loop)‏Reactive + memory (e.g., filter, state variable, multi-loops)‏Deliberative (e.g. planning, multi-loops)‏

sensors actuators

Note: real-time aspect emphasized!

Page 44: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Conclusion

Page 45: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Take Home Messages1. First iteration of the course: please give feedback!2. Balanced theoretical contents and hands-on

exercises/laboratories3. Do not worry about C and UNIX! We are here to help

and this is a great opportunity for your to get your hands on these tools!

4. For today, remember:– Discrete vs continuous and digital vs analog– Basics of computer architecture, and fundamental

limitations– Perception-to-action loop

Page 46: Introduction to Embedded and Real-Time Systemsdisalw3.epfl.ch/teaching/signals_instruments_systems/ay_2008-09/... · Introduction to Embedded and Real-Time Systems School of Architecture,

Additional Literature – Week 1Books• Alan V. Oppenheim, Alan S. Willsky, with S. Hamid, "Signals and

Systems: International Edition 2nd Edition – Paper", Prentice Hall, 1996.