Electrical & Computer Engineering, Department of
Date of this Version
April 1993
Abstract
These notes were written to accompany a two-semester introductory course in Electrical Engineering. The primary goal of the course is to introduce you to the art of technical problem solving. Conventional Electrical Engineering curricula, in favorable cases at least, produce engineers who are reasonably adept at operating many of the tools important to the field, such as mathematics and circuit analysis. Often, however, these engineers lack skill in choosing which tools to use and in designing a plan of attack to solve problems which are new to them, even though they have all the information and skills needed to fabricate a satisfactory solution. Problem solving is more of an art than a science, and it can only be learned through experience. I hope these notes and the homework exercises will help you to develop this important ability early in your academic career.
The notes have two secondary goals. The first is to show you some of the ideas that you will encounter a little later in your academic career, and to solidify your grasp of some ideas you have seen already. Seeing the new ideas now and giving them time to "rattle around" in your head for a while will make them easier to master when you encounter them later in more specialized courses. For example Chapter 8 is devoted entirely to the analysis of simple circuits in order to determine currents and voltages. The purpose here is not to make you proficient at circuit analysis, but rather to introduce you to the basic ideas, such as just what is a current or a voltage. Then, when you encounter the subject again in considerably more detail, you will have some understanding and familiarity to fall back on.
The other secondary goal is to provide you with skill in using a computer. In the first semester of the course, your interaction with a computer will be almost entirely through a spreadsheet program. This is a pretty specialized program which turns out to be surprisingly useful in engineering. It allows you to graph data and functions, and to do rather complex arithmetic calculations on large quantities of data easily. I hope that you will come to view the spreadsheet as a tool you can use later to help you understand things and to avoid some of the arithmetic drudgery. This is the easiest goal of the course to achieve. I think you should find the spreadsheet easy to learn and entertaining to use (it was designed that way). In the second semester, you will be introduced to a more general-purpose program, called the C compiler. C is a computer language somewhat similar to FORTRAN, Pascal, or BASIC which allows you to write your own programs, and thereby to tell the computer exactly what you want it to do. You will probably not emerge from the course as a skilled C programmer, but I hope you will be able to use C to solve many of the problems which you are likely to encounter later in your career. Perhaps most importantly, I hope you will have a good idea about just what can be done with C, and what can’t, so that you will be able to further develop your skill at using C as the need arises.
Volume 2—CONTENTS
11. FINITE SUMS AND INTEGRATION § 11.1 HowMuch Water Can a Water Tower Hold? § 11.2 Numerical Solution § 11.3 Analytic Solution § 11.4 Just HowMuch Water Does the Notrees Tank Hold, Anyway? § 11.5 Connection with Integrals § 11.6 Numerical Evaluation of Integrals § 11.7 APPENDIX: Derivation of Formula for [summation Σ j2, from j = 0 to N – 1] § 11.8 Exercises
12. FINITE DIFFERENCES AND DIFFERENTIATION § 12.1 Velocities from a Table of Distances § 12.2 Connection with Derivatives § 12.3 The Numerical Evaluation of Derivatives § 12.4 Exercises
13. NUMERICAL SOLUTION OF DIFFERENTIAL EQUATIONS § 13.1 Population Growth—A Simple Differential Equation § 13.2 Analytic Solution of Differential Equations § 13.2.1 Classification of Differential Equations § 13.2.2 AMethod for Solving Some Differential Equations § 13.2.3 Comparison of Analytic and Numerical Solutions § 13.2.4 Initial Conditions § 13.2.5 For the Skeptics Among You § 13.3 Numerical Solution of Differential Equations § 13.3.1 Euler’s Method § 13.3.2 Modified Euler’s Method § 13.4 An Example from Electrical Engineering, a RC Circuit § 13.4.1 The Analytic Solution § 13.4.2 The Numerical Solution § 13.5 A Second Example: An RLC Circuit § 13.5.1 The t < 0 Era § 13.5.2 The t 0 Era § 13.5.3 The Numerical Method § 13.5.4 The Initial Value Problem § 13.5.5 Programming Quattro-Pro § 13.5.6 A Synopsis of the Analytic Solution § 13.5.7 Numerical Instability § 13.6 Exercises
14. COMPUTER ARCHITECTURE § 14.1 Memory Architecture § 14.2 The CPU § 14.3 Communication between the CPU and External Circuits § 14.4 More About Instructions § 14.5 Programming the CPU § 14.6 A Fictional CPU with a Simple Instruction Set § 14.6.1 The Move Instructions § 14.6.2 The Jump and Compare Instructions and the Condition Register § 14.6.3 Arithmetic Operations § 14.6.4 Logical Operations and HALT § 14.6.5 The Machine Instruction Column § 14.6.6 Some Simple Program Examples § 14.7 Higher Level Languages § 14.8 Appendix: The 80386 Architecture § 14.9 Exercises
15. SOME PROGRAMMING TECHNIQUES § 15.1 Using the PFW007 Emulator § 15.2 Shifting a Number n Bits and DO Loops § 15.3 Writing to a File and Character Strings § 15.4 A Program to Multiply Two Numbers § 15.5 Subroutines § 15.6 Stacks § 15.7 Subroutines and Stacks § 15.7.1 The Return Address § 15.7.2 Passing Arguments to Subroutines § 15.7.3 Recursion § 15.7.4 Automatic and Static Storage § 15.8 Reading a Number from the Input File § 15.9 Recursion and a Program to Calculate n! § 15.10 APPENDIX: Using the Turbo C Editor § 15.11 Exercises
16. PROGRAMMING THE CPU WITH C § 16.1 Elements of a C Program § 16.2 Getting Results Printed Out § 16.3 Compiling and Running C Programs § 16.3.1 Entering, Compiling, and Running a Program § 16.3.2 What’s Really Happening § 16.3.3 Compile-Time Errors § 16.3.4 Run-Time Errors § 16.4 Exercises
17. MORE PROGRAMMING THE CPU IN C § 17.1 Pointers § 17.1.1 Rear Window I: Addresses of Variables § 17.1.2 Rear Window II: Byte Ordering § 17.2 Arrays § 17.3 Conditionals, and Program Flow and Loops § 17.3.1 Conditionals § 17.3.2 Program Flow and Loops § 17.4 Two Examples § 17.4.1 Multiplying Integers “by hand” § 17.4.2 Reversing a Character String § 17.5 Rear Window III: A Program in the Raw § 17.6 Appendix: The Joy of Segmentation § 17.7 Exercises
18. PROGRAMMING IN C TO SOLVE PROBLEMS § 18.1 Functions § 18.1.1 A Function which Returns a Value. § 18.1.2 ANSI vs K&R C § 18.1.3 A Function which Returns Information Via an Argument § 18.2 Printf, Scanf, and Format Specifiers § 18.2.1 Printf and Format Specifiers § 18.2.2 Scanf § 18.3 Multi-Dimensional Arrays § 18.3.1 Adding Two Matrices § 18.3.2 A Program for Averaging Test Scores § 18.3.3 Arrays as Function Arguments § 18.4 Preprocessor Directives and Stdio § 18.5 Type Casting of Variables § 18.6 Exercises
19. C PROGRAM EXAMPLES § 19.1 Simulating a Random Walk and Memory Allocation § 19.2 Dynamic Memory Allocation § 19.3 Using C to Solve Differential Equations § 19.4 Recursive Function Calls § 19.4.1 n Factorial § 19.4.2 Determinant § 19.5 Exercises
Comments
Copyright © Frazer Williams, University of Nebraska-Lincoln, 1993