[Origins]
[Who
Should Read this
Book?]
[Outstanding
Features]
[The Web
Site]
[Coverage
Overview]
[To
Instructors]
Origins
xxxPrior to the
summer of 1998, the Academic Innovations Group at
Lake Forest College called for proposals for new
and innovative courses. My proposal called for a
"from the ground up" introduction to programming
using the Internet. Perhaps the most significant of
the proposed features was that the course was to be
accessible to a general audience, including
students majoring in the Arts, Humanities, and
Social Sciences. While general audience computer
science courses exist, they are primarily geared
toward computer literacy, rather than toward
fostering any significant programming skills.The
proposal being accepted, I set out to find a
suitable text from which to base the course. On the
lower end, I found "Internet literacy" texts. These
texts spend whole chapters on topics such as
e-mail, news groups, and searching the Internet.
But these are the skills that more and more
students emerging from high school already possess.
On the upper end, programming texts in languages
like C++ and Java abound, but these are geared
toward computer science majors. Indeed, such
courses often turn unsuspecting general audience
students off from computer science, rather than
providing a gateway. In reality, students often
find such courses more difficult than calculus.
xxx Fitting into the
middle, and suited perfectly toward the general
audience, is HTML and JavaScript. All the
publications I found relating to these topics were
reference-type books, not constructed in such a
manner to support a college course. So, during the
summer of 1998, I wrote a 250-page manuscript from
which to base the new course. While teaching from
the manuscript during both semesters of the
'98&endash;'99 academic year, I developed a final
vision for the book based upon what worked and what
didn't. Student input was instrumental in
formulating the final plan.Upon the strength of the
course-tested proposal, I secured a contract with
John Wiley & Sons, Inc. in the summer of 1999.
The text you now see was written during the
'99&endash;'00 academic year, again while refining
it in the classroom setting both semesters. Thus,
this book is the culmination of two full years of
classroom testing. The course has gained
significant popularity on campus among both the
general audience and the science majors. In fact,
large waiting lists have resulted in additional
sections being opened. Popularity has even grown
beyond the student base, with other professors and
secretaries taking the course. I have even received
comments from my students' parents who like the
book, and have found its contents valuable.
[back
to
top]
Who Should Read this Book?
xxx The answer is
simple. Anyone who wishes to arm themselves for the
21st century with substantive Internet programming
skills. In short, this book covers the "nuts and
bolts" of programming on the Internet. To
skillfully publish information on the Internet, one
must gain a proficiency with HTML and web page
construction. To process information one must learn
programming fundamentals. This book provides the
fundamentals that one must learn in order to pursue
virtually any other programming endeavor on the
Internet. It is important to learn the fundamentals
now so that one has the tools necessary to learn
newer, emerging technologies as they become more
commonplace. Simply put, this book contains those
core fundamentals.The book assumes no prior
knowledge of HTML or a programming language.
xxx The prerequisite
skills can be summed up succinctly. As far as the
computer goes, the reader should be familiar with
word processing, creating, and organizing
documents. On the Internet side, the reader should
be familiar with surfing the Internet with a
browser.That gives considerable latitude. Advanced
high school students would be equipping themselves
well by arming themselves with the skills presented
in this book. Anyone in a general collegiate
audience would be remiss if he or she were to
graduate without possessing these skills. Anyone in
the professional setting wishing to be better
equipped for the Internet revolution will find the
skills fostered in this book indispensable. In
short, if you know how to use a computer, and wish
to develop your skills further in the Internet
environment, you should read this book. The reader
who has some knowledge of programming will
certainly find the HTML skills useful. Moreover,
the reader with some knowledge of a compiled
language like C++ will find the portable,
interpreted JavaScript language a refreshing
change, especially given the natural graphic user
interface that HTML forms provide for user input.
The only audience to which we would not recommend
this book, is that of the professional programmer.
Indeed, the highly skilled programmer may be better
suited reading a professional reference book on
HTML, and one on JavaScript.
[back
to
top]
Outstanding Features
The book is
designed to be platform independent. This means
that the reader can use virtually any type of
personal computer. All that is required is a basic
text editor, which any computer provides, and a
relatively current web browser, which can be
downloaded for free. Thus, it is not required that
the reader purchase any software. The HTML and
JavaScript coverage sticks to a subset of the
languages which will work on any version 3 or
higher of the Netscape or Internet Explorer
browsers. Moreover, other emerging browser types
also support this common subset of HTML and
JavaScript, and on virtually any computer type.
The book introduces
programming with objects. The Document Object Model
and HTML form objects provide a perfect setting for
using objects. So, not only does this book foster a
proficiency for using conventional programming
structures (variables, decisions, functions,
arrays, and loops), but also provides a gentle
introduction to objects. The book is, thus, a
perfect introduction for anyone wishing to learn an
object oriented programming language such as
Java.
The book covers the
basics of web server accounts and transferring
documents web servers. It also covers strategies
for maintaining and updating a web site on the
server. However, if a web server account is not
available to the reader, those topics can be
omitted with no difficulties whatsoever.
Each of the 18
lessons features a summary, review questions, and
exercises. The exercises feature both stand alone
exercises, and two project threads that run
throughout the book. The project threads guide the
reader through the construction of a structured web
site&emdash;a site that eventually evidences all of
those skills acquired through reading this book.
The first project thread, which features
development of a personal web site, is also ideal
for someone who wishes to read this book, but is
not formally enrolled in a course.
The book contains
several optional sections that may be used to
provide an extra challenge for the more advanced
reader. Often, a general audience contains a
variety of backgrounds. The optional material
provides extra latitude for confronting that
challenge.
The book is fully
supported by a web site.
[back
to
top]
The Web Site
The web site
contains all of the examples and figures of the
book for use in classroom demonstration. Moreover,
the interactive nature of many of the examples
warrants such on-line access so that a true feel
for the examples can be realized. The web site also
features reference to many on-line materials, such
as freeware and shareware applications, that can be
used as valuable tools while developing the
material of this book.
Some of the exercises
are inextricably bound to the web site. For
example, the reader may be asked to incorporate
downloadable materials from the web site into the
pages they construct, or may be asked to
approximately duplicate a page pictured on the
site. For another example, some exercises in Lesson
18, require the reader to submit HTML form data to
a CGI program on the web site. The web site also
provides a perfect place to provide newly designed
and updated exercises, making the text a
continually evolving instructional resource.
The book contains
reference appendices for both of HTML elements, and
JavaScript objects. These are valuable in a
reference capacity after the course is completed.
Moreover, HTML and JavaScript are constantly
evolving. So, as new features become uniformly
supported on all web browsers, the web site will be
updated with supplements to the reference
appendices. In this way, the text will remain
current in a reference capacity.
The solutions to the
exercises are available to instructors via a
password protected web site.
[back
to
top]
Coverage Overview
Lesson 1 gives a brief history of the
internet, and covers the fundamentals about how the
internet and world wide web work. The internet is
explained in terms of IP addresses, servers,
routers, and packets. The world wide web is
explained in terms of the URL, web protocols, and
domain names. In the process, a basic foundation of
internet vocabulary is developed.
Lesson 2 begins to explore the various types
of transactions on the internet. This includes
transferring web pages to browsers for viewing
(http), transferring web pages to web servers so
that they are available on the internet (ftp), and
talking to web servers to set passwords(telnet).
Lesson 2 also explores the nature of web server
accounts and public directories. This lesson may be
omitted if web server accounts are not
available.
xxx Lessons 3 through
8 provide a conceptual introduction to HTML and web
page construction. The coverage of HTML is not
exhaustive, but sticks to a subset of HTML that
works in virtually any browser. Moreover, topics
such as audio and video are omitted in favor of the
fundamental concepts. These core concepts are the
syntax of tags and attributes, linking and site
structure, various uses of images, and page
formatting with tables and frames. Mastery of these
concepts provides a perfect graphical user
interface for the last ten lessons of the book in
which JavaScript programming is used to support
HTML forms and web pages. While Lesson 7 mentions
the virtues of HTML editors, use of an editor
remains optional throughout the remainder of the
book. But when an editor is adopted, the core
concepts presented in Lessons 3 through 8 are
precisely those needed to skillfully use it.
Lesson 3 explores construction of web pages
using basic HTML tags. The basic syntax of HTML is
introduced.
Lesson 4 explores use of attributes in HTML
tags to more precisely control HTML markup
instructions. In the process, pixels, hexadecimal
colors, and fonts are discussed. (Appendix C
provides full detail on hexadecimal color
representations.) Lesson 4 also includes an
optional section which introduces style sheets.
Lesson 5 explores hypertext links in web
pages. Hierarchal and linear linking strategies for
web collections are explored. With potentially
larger collections of documents to deal with,
Lesson 5 also introduces strategies updating a web
site on a web server. Named anchors are also
covered in detail.
Lesson 6 explores the nature of images, and
their inclusion in web pages. In the process,
different types of images are explored as well as
different ways images can provide extra
functionality in a web page. Lesson 6 concludes
with an optional section which covers image maps.
Lesson 7 first covers lists, and then turns
to the more important notion of HTML tables. In
particular, tables are used to provide entire
layout structures for web pages.
Lesson 8 covers HTML frames as an
alternative page layout mechanism. Here the
differing functionalities of tables and frames are
compared and contrasted.
xxx The remainder of
the book is dedicated to JavaScript. Again, to
insure full browser support, the book adheres to a
standardized subset of JavaScript (and JScript).
The goal is a marriage of programming theory and
application. Indeed, the need for variables,
decisions, functions, objects, loops, and arrays is
motivated in a natural way using the graphical user
interface that web pages and HTML forms provide.
Throughout Lessons 9-18, the virtues of knowing
HTML fundamentals are overtly manifested. Moreover,
with the introduction to syntax and coding provided
in Lessons 3-8 by HTML already in place, the
transition to the rigors of actual programming is
not overly arduous.
Lesson 9 provides an overview of HTML forms,
and their roll in obtaining input from the user.
Moreover, Lesson 9 explores the nature of
JavaScript and its roll in processing form data in
the client-server model. This lesson also points
out that JavaScript is not Java.
Lesson 10 formally introduces JavaScript and
the use of variables to store user input. The
complex HTML form object structure is not yet
introduced, in favor of using the prompt box to
obtain user input. The nature of writing programs
and the types of potential programming errors are
explored.
Lesson 11 explores the ability of Javascript
to make decisions based on user input, again
obtained with prompt boxes. The decision making
capabilities are employed both to process
information based on user input, and to alert the
user if improper information is supplied.
Lesson 12 introduces the nature and syntax
of using objects in programming. This discussion
has proven both valuable and necessary in the
transition to using HTML forms to obtain user
input. Several hands-on objects are introduced with
the Document Object Model.
Lesson 13 turns to the use of HTML forms for
obtaining user input. This lesson introduces the
HTML input elements used for obtaining textual
input, and using HTML form buttons for calling
JavaScript functions to process the input. In the
process, the concept of local vs. global variables
is introduced. The theme of verifying that the user
has entered proper input is further emphasized.
Lesson 14 augments the input capabilities of
HTML forms by exploring checkboxes, radio buttons,
and pull-down menu's. These option-creating form
elements further emphasize the decision making
capabilities of JavaScript. Moreover, Lesson 14
introduces the necessity for using arrays.
Lesson 15 explores repetition in programming
using loops. The utility of looping is emphasized
by the need to process larger HTML forms, but
without undue redundant code. Looping over arrays
of HTML form elements further explores using
arrays--arrays of objects.
Lesson 16 covers the manual creation of
arrays, and their utility. The arrays used prior to
this lesson are created automatically when a
browser loads and HTML form. One of the main
applications of self-defined arrays presented in
Lesson 16 involves pre-loading images from the
server. The pre-loaded arrays of images are used
for purposes such as cycling image displays in web
pages.
Lesson 17 explores creating self-defined
functions that use parameters. The reader will have
been creating self-defined functions since Lesson
13, but ones without formal parameters.
Applications of the detailed discussion on
functions include creating image rollovers in web
pages, and creating functions to aid in
verification of the validity of user input into
HTML forms. To augment form verification, the
string object is also introduced.
Lesson 18, the final Lesson of the book,
introduces the security capabilities of JavaScript
and the password form element. JavaScript's
security weaknesses are discussed, together with
the associated necessity for submitting HTML form
data to the server. The submit button is explored,
and hidden form elements are employed to facilitate
the submission of "cleaned up" form data to the
server. No server-side programming is introduced.
Rather, the existence of server-side programs is
assumed, and the nature of the client-server model
(as introduced in Lesson 9) is further explored.
Several examples and exercises actually feature the
submission of form data to server-side Perl
programs on the web site for this book.
[back
to
top]
For the Instructor: Dependency and
Organization
xxx The following
diagram indicates how the Lessons depend upon
previous ones in terms of necessity of
coverage.
xxx The book has
been designed for flexibility of coverage. A course
for the most general of audiences requires
significant time and detail in Lessons 1 through 8,
perhaps half a semester. Such general audiences are
not only learning HTML, but bolstering their
general computer skills. The goal is then to cover
Lessons 9 through 14, and Lesson 18 if time
permits. This provides a gentle introduction to
programming and using objects. The end product is a
feel for programming and an understanding of the
nature and capabilities of HTML forms.
xxx If it is desirable
to cover programming in more detail, the HTML
lessons can be covered more quickly, perhaps in a
third of a semester. This level of coverage is
appropriate for a more advanced audience or one
with some prior knowledge of constructing web
pages. At any point after Lesson 14, Lesson 18 can
be covered as a fitting capstone for the course. In
this way, as many (or all) of the desired
programming concepts can be covered. The end
product is a proficiency with programming
fundamentals and a comprehensive grasp of the
capabilities of JavaScript as used to support web
pages and HTML forms.
xxx Upon a cursory
inspection, it might appear that the book jumps
around a bit in terms of covering programming
fundamentals. The first draft of this book did, in
fact, feature a more detailed coverage of
structures such as loops and arrays, before objects
and HTML forms were introduced. Several reviewers
commented that this approach failed to let the true
flavor of JavaScript come through until very late
in the text. The JavaScript presentation was
analogous to that of a Pascal text, for example.
With the added burden of early presentation of more
programming structures, it was difficult to do
justice to HTML forms in the allocated time of one
semester. Indeed, that approach didn't work as well
with the most general audience. The students left
with a feel for programming, but little feel for
objects, HTML forms, and the practical capabilities
of JavaScript.
xxx The organization
of the current text, as seen above, has proven
highly successful. Not only does the approach offer
significantly more latitude in terms of structuring
courses for varying audiences, but it ensures
coverage of HTML forms and the flavor of
JavaScript. A surprising by-product of this
organization is that the concepts of functions,
local variables, and arrays are covered in Lessons
10 through 14, but in a non-rigorous way. For
example, it is necessary to handle user events by
calling self-defined JavaScript functions, and to
access HTML form elements using the elements[
] array, which is created automatically by the
browser. Lessons 15 through 17 then add rigor to
these concepts in a natural way, and with practical
applications. Finally, regardless of the extent of
coverage, Lesson 18 provides a natural closure for
the course.
Craig D. Knuckles
[back
to top]
|