Instructor's Manual for
M.B. Feldman and E.B. Koffman, Ada 95 Problem Solving and Program Design, 2nd edition. Copyright 1996, Addison-Wesley Publishing Company. All Rights Reserved.
Questions and comments to mfeldman@seas.gwu.edu
last revised Aug. 1996
The student will
computer |
John Atanasoff |
ENIAC |
John von Neumann |
stored-program computer |
late 1930s |
computer program |
1946 |
minicomputer |
microcomputer |
mainframe |
supercomputer |
workstation |
|
input device |
hardware |
secondary storage |
central processor unit (CPU) |
memory address |
output device |
computer terminal |
memory cells |
keyboard |
control unit |
hard-copy output |
monitor |
main memory |
data files |
problem solving |
problem specification |
problem inputs |
problem outputs |
constraints |
simplifying assumptions |
software development method |
specification |
analysis |
design |
test plan |
coding |
implementation |
testing |
refinement |
divide and conquer |
predictable performance |
|
programming languages |
higher-level language |
assembly language |
machine language |
binary string |
binary string |
Fortran |
COBOL |
Pascal |
Ada |
C |
C++ |
portability |
compiler standard |
source file |
editor program |
compiler program |
compilation error |
object file |
linker program |
binder program |
load file |
executable image |
loader program |
operating system |
control language |
timeshared computer |
personal computer |
booting |
logging on |
This chapter contains primarily general information about computers, the history of computers and languages, and the program development process. For students with some previous experience in computers, sections 1.1 and 1.2 can be assigned as background reading.
It is never too early to start emphasizing that, while in the computing milieu we tend to focus much attention on differences between computers, languages, and so on, there is much that is fundamental and similar. An educated computing professional must try to understand both the similarities and the differences, and distinguish that which is fundamental from that which is only a detail of an operaying system or language.
Sections 1.3 through 1.7 introduce some terminology that is used in the sequel, especially the steps in the Software Development Method used throughout the book. You should point out that this method is similar to that used in industry to develop "real" systems. A software project is much more than just a program, and while the projects to be assigned in the course are "small," it is expected that they will understand and provide all the elements of a real project, not just a source listing.
The student should understand that such tools as compilers, editors, linkers, and loaders are just programs which process the text of other programs. I'm reminded of a certain purchasing official who asked me once whether a compiler was a large piece of equipment. How was he to know otherwise?
I thought I'd pass on some advice about computer terminology in general, especially in introductory courses. My students often have no computer experience at all, or only a bit on a word processor. Such students, especially female ones, often lack confidence and feel overwhelmed at the start, swamped with terminology and acronyms and other abbreviations. (The male students may be equally overwhelmed, but are less prone to admit it.) They preface their questions with "Do you mind if I ask a stupid question?" or similar. One of my favorite sayings is "inexperience is not equivalent to stupidity." In the book, I've included some stories about naive computer users, otherwise intelligent and educated people who make humorous assumptions in their use of computers. How were they to know otherwise?
Not in the book is a recent story from the technical support group in a large company, describing a user who called to complain about a broken "cup holder" on his PC. Asked to describe this "cup holder," the user said it slides out from the PC and says "4X" on the front. This user, confusing the CD-ROM tray with the cup holder in his car, had set down a heavy bug of coffee and broken the tray off. How was he to know otherwise?
I've also starting collecting and showing comic strips from the daily press about peoples' trials and tribulations with computers. It fascinates me that there is so much material in the dailies about computers and the Internet; it's an indication of how pervasive computers are now, and a leap of faith that readers will understand the jargon. Last year, "Cathy" tried to buy a computer, and went through an exaggerated version of every crazy experience we've ever had in computer stores. It was hilarious.
We are not born learning everything; the students are taking an introductory computing course precisely to learn things they did not know already. While this may seem obvious, teachers and students alike tend to forget this principle. Try to give the students confidence that they can succeed in this, and even though they feel swamped at the start, at the end they will be amazed at how much they've accomplished. Let them know you understand that the terminology is forbidding at first, and that you are on their side in guiding them through the thicket.