To Whom It May Concern: Here is the web site from my Winter 2004 Web Programming class. It's been pared down a little bit - because of the change in servers, the SSI and CGI scripts are no longer here, but pretty much everything else is -- assignments, links to external references, and examples of CSS, XML, DTDs, XSLT, JavaScript, and PHP.

I intend to leave this material available permanently but have no plans to extend or enhance it.

For any questions or problems, email me.

01/08/2004
Assignment 1: Developing a Web Page
01/20/2004
Assignment 2: Developing a Stylesheet
03/04/2004
Assignment 3: CGI to Serve Manual Pages
03/23/2004
Assignment 4: Designing and Processing XML Documents
2004-01-07
Here are some documents having to do with connecting to and using the oriole server:

You will probably need to know more about Unix/Linux usage than is covered in these brief notes. See the Unix and Linux subsection of the Links section, below, for some online references.

Have a look at my simple example XHTML page. Observe what happens when you click on the "W3C" graphic at the bottom of the page (or at the bottom of this page). Then, view the source code for the page; you can do this in most browsers by selecting the "source" item in the "View" pulldown menu.

It's time for you to start reading some material on HTML and XHTML. Links to Dave Raggert's introduction to HTML, and the W3Schools site, are given below.

2004-01-12
In order for the web document that you develop for your first assignment to be visible on the web, you should put it in your publicly accessible directory under the document root /var/www/html/. You also need to make the document world readable, using the chmod command. I've added a description of chmod to the Command Line Interface document.
Note:The oriole server does not support printing. In order to print the html source hardcopy that you are supposed to hand in, you need to copy the file to another machine and print it from there.
2004-01-20
Please read my Notes on Cascading Style Sheets. In particular, there is a reading assignment contained therein.
2004-01-22

I've put some links to information about SSI (Server Side Includes) in the Links section and have enabled SSI on the server, including the exec directive. You should read the Introduction to SSI tutorial on the Apache website. (You may skip the material on server configuration.)

2004-01-24

In addition to the Apache SSI, I've added a link to the complete Apache SSI documentation in the Links section.

2004-02-03

The next topic is CGI programming. Have a look at the tutorials I've posted in the Links section.

You'll be doing CGI programming using the Perl language. It is not assumed that you have any previous exposure to Perl, but it is assumed that you have sufficient computer science background to pick up details of a programming language largely by self-study. Therefore, I'll spend very little time discussing Perl in class (maximum of two lectures), and you'll need to rely on your own reading to pick up the language details you'll need. For that purpose, I've posted some links to Perl material that should be sufficient. At some point, you'll probably want to read the Chapter on CGI programming in PERL that's included in A. D. Marshall's online textbook.

2004-02-05

Be your own webmaster! If you're feeling ambitious, you can download the Apache webserver and install it on your PC. It's free. Apache comes with recent standard Linux distributions, and with Macintosh OS X, so if you have one of those platforms, you may already have Apache. You can download a Windows version from the Apache Download Page.

An advantage to doing this is that you can develop and test things that make use of server-side facilities such as SSI and CGI on your own computer. You will, of course, have to learn how to edit the Apache configuration file to enable the services that you want. (I can provide advice if you get stuck.)

For similar reasons, you might want to have Perl on your own computer. If you have a Linux, Unix, or Mac OS X platform, it's probably already installed. Free Windows implementations of Perl are available too. See the Perl links below for a link to one.

Perl Examples. I've started a repository of Perl examples on the oriole server. I'll add to it from time to time. There's a link to it in the Perl links section.

2004-02-12

Forms are the HTML/XHTML mechanism for supplying user input to a CGI script. I've constructed an example of a site registration form of the kind found frequently on the web. (Clicking the "submit" button will give an error at this time because the CGI script to process it doesn't exist yet.)

Please read the W3C's Forms in HTML 4.0 document. This is a technical specfication of the form facility in HTML. (Note that to be correct XHTML, tags must be in lower case. Other than that, the specification applies to XHTML as well as HTML.)

2004-02-18

You can view the CGI scripts discussed in Tuesday's class here:

Note: My copy of MS Internet Explorer botches the display by trying to render the scripts as HTML documents even though they clearly are not. If you have this problem, my advice is to switch to another browser. On a Windows platform, Mozilla, Firefox, and Opera should all do a better job. If you're involved in web programming or web design, you should have a variety of browsers on hand anyway for testing your work.

2004-02-20

Have a look at my CGI Notes page. They provide step-by-step instructions for installing CGI scripts on the server, a summary of what CGI scripts need to do, and a pointer to some Perl code for parsing form data.

Your CGI assignment will appear in a few days.

2004-03-11

As you know from last Thursday's class, there is now a CGI assignment. Due date is Thursday, March 25.

I've put up some XML links. At this point, you should read through the XML and DTD tutorials on the W3 Schools website. There will be an XML project; details forthcoming. Also, I've put up a small XML example of my own for hypothetical "interoffice memo" documents:

(Note: The errors in the xml and dtd documents have been fixed.)

2004-03-15

A couple of followup notes to previous notes:

  1. Some browsers try to interpret XML and so might not display the tags in the my_memo.xml document listed earlier. If that's the case with your browser, try selecting the view source option in the View menu.
  2. Two typos in the parsecode.txt form-parsing Perl code that were called to my attention are now fixed. If you find others, please let me know.
2004-03-16

Oops. I found another error in the memo.dtd document. It's been fixed. Take a look.

XPath and XSLT are two XSL standards for denoting locations within XML documents and transforming XML documents to other formats, respectively. I've put links to the W3 Schools tutorials in the XML Links section. Read through them.

Here are some examples of how to style XML documents:

What you see in a browser when you click on the links above depends on what support the browser has for XML and XSL. Some browsers (e.g. the latest versions of MS Internet Explorer and Firefox) have reasonably complete support and will actually render the document as specified in the stylesheet. Some browsers (especially older versions) won't. To see the actual document without rendering, select "View document source" from the View menu in your browser.

An XSL stylesheeet that transforms XML documents to HTML can also be applied on the server side, the result then being sent to the browser. With this method, the browser does not have to have its own XML/XSL support. Of course, the server has to have the necessary software. On Oriole, the xsltproc command can be used: xsltproc Style/memo_style.xsl my_memo.xml,
for example.

2004-03-18

JavaScript is the leading client-side scripting language in use on the Web today. Developed by Netscape to enable dynamic content in web pages, it is now supported by all modern full-featured browsers. The language has a strong family resemblance to C, C++, and Java, so the syntax should not be difficult to master. I've put links to two tutorials in the JavaScript part of the Links section. Read the first, then the second.

2004-03-23

I've developed a small collection of JavaScript examples. Click on each link, then view the page source to see how JavaScript is used.

There is now a link to a complete manual on JavaScript 1.5 in the JavaScript links section.

A couple of pages that have nice examples of use of JavaScript "onMouseOver" events are the Eastern Michigan University Homepage and the DevEdge Netscape Sidebar Tabs page.

Your XML Assignment is now available. Have a look!

2004-03-25

As an example of how to use the XSLT transformation language, I've created a DTD, an XML document that conforms to the DTD, a stylesheet for translating conforming documents to XHTML, and the XHTML result. You can see them all in this directory. Studying these files should give you some clues to approaching the XML assignment.

2004-03-30

For some amazing examples of what can be done with Cascading Style Sheets, check out the CSS Zen Garden website.

2004-04-13

I've started a directory of PHP examples. (Currently it contains just one example. ;-) You can view them on the web by clicking on the links in the directory listing. To see the actual PHP code, you need to log into the server, go to the /var/www/html/remmers/PHP/ directory, and view the files with a text viewer such as more.

General references

W3Schools Online Web Tutorials
Numerous tutorials on web technology, including HTML, XHTML, CSS, XML, and JavaScript.
The Computer Technology Documentation Project
A collection of documentation on a lot of things, including Linux, Unix, web technology, database technology. Parts of this site are under construction, but the Linux and web technology sections appear to be well-developed. From time to time I'll ask you to read specific sections of this site.

Unix and Linux

Duke University Unix Guide
See especially:
UNIXhelp for Users
A guide from the University of Edinburgh.
UNIX Tutorial for Beginners
Another Unix tutorial from the UK.
Unix Reference Guide
This one's from Australia.
Unix History
A nice reference on Unix history, featuring a detailed family tree and an excellent collection of links to other Unix-related sites.

HTML and XHTML

Dave Raggett's Introduction to HTML
A quick introduction to HTML concepts, by one of the standards-setters. After reading through this, go to his "Advanced HTML" and "Adding a Touch of Style" pages.
W3Schools Online Web Tutorials
This site has a number of tutorials on web technologies (plus a lot of advertising). Start with their HTML and XHTML tutorials.

Tools

The W3C MarkUp Validation Service
On this site, you can enter the URL of a web page in a form, and it will tell you if it is valid (X)HTML. It runs the same validator that is linked to on this site's web pages.
The W3C CSS Validation Service
This site can be used to validate CSS stylesheets, both those that are stored in a separate file and those defined by a <style> tag in a HTML or XHTML document.

CSS

CSS2 Specification
The official specification for Cascading Style Sheets, level 2, from the World Wide Web Consortium. This document is a complete reference to all the standard features.
The CSS Pointers Group
A wide-ranging collection of information, examples, and links to other resources.
Dave Raggett's Introduction to CSS
A very readable introduction to the CSS concepts, with plenty of examples and good advice.
Learning CSS
A collection of CSS resources from the W3C.
CSS tips & tricks
A how-to guide for doing things like figures and captions, changing the look of scrollbars, centering, shadows, and other effects. A nice resource if you're looking for ways to add interest to your web pages.
W3C Core Styles
A collection of style sheets from W3C. Try pointing your documents to various ones.
CSS Zen Garden
Amazing examples of CSS design by professional designers. You can view the same page with several dozen different stylesheets.

SSI

Apache Tutorial: Introduction to Server Side Includes
A brief introduction to SSI, with examples of some things they can be used for. Doesn't explain every feature; for that, see the next link.
Apache Module mod_include
Complete Apache SSI documentation.

HTTP

The CTDP HTTP Reference
Details of HTTP requests and responses. Essential background for writing CGI scripts.
RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1
The full official specification of the latest version of the HTTP protocol. This is one of many RFC's (Requests for Comment) that define internet standards.

CGI

CGI Scripting
Introductory manual from the Computer Technology Documentation Project.
Apache Tutorial: Dynamic Content with CGI
The Apache 2.0 CGI tutorial. Web server configuration for CGI, a simple example explained in detail, and links to other CGI resources.
The Common Gateway Interface
Another informative tutorial, this one from the NCSA (National Center for Supercomputer Applications).

Perl

Perl Tutorial: Start
A tutorial on Perl by Nik Silver, from the University of Leeds. Good readable introduction to the basics, with exercises that test understanding. No coverage of CGI applications, however.
Picking Up Perl
Another good online textbook, but without coverage of CGI.
Practical Perl Programming
A very thorough Perl textbook, by A. D. Marshall, that includes advanced topics such as exception handling, object-oriented features, Perl modules, and network programming. The chapter on CGI Programming in Perl is especially relevant to this course.
ActivePerl
ActivePerl is a Perl implementation for Microsoft Windows platforms. You can download it from this site.
Perl Examples
Repository of Perl examples. When logged into the server, you can access it via its full path name, /var/www/html/Perl .

XML

The W3 Schools XML Tutorial
A good place to start learning about XML.
The W3 Schools DTD Tutorial
A good quick overview of document type definitions, with examples.
XML Core Working Group Public Page
The XML Core Working Group, part of the World Wide Web Consortium, is responsible for establishing XML standards. You can find links here to the specifications of XML 1.0, XML 1.1, XML namespaces, XML stylesheets, and other XML-related standards and recommendations.
Cover Pages: Extensible Markup Language
The "Cover Pages" site, maintained by Robin Cover, has a vast collection of links to XML material.
The W3 Schools XPath Tutorial
XPath is the standard for specifying locations within an XML document tree.
The W3 Schools XSLT Tutorial
XSLT is a language for transforming XML documents to other formats.

JavaScript

The W3 Schools JavaScript Tutorial
Gives a good overall view of the structure of JavaScript but is a bit light on applications. Good place to start, though.
Thau's JavaScript Tutorial
Gets off to a slow start (the author assumes that the reader doesn't know much about programming) but gets farther into applications and the deeper aspects of JavaScript. In particular, see the discussion of the Document Object Model (DOM) in Lesson 3.
Core JavaScript Guide 1.5
Complete specifications for JavaScript 1.5.

PHP

PHP: Hypertext Preprocessor
The official website, maintained by the PHP developers. Here you can find a tutorial, a complete manual, and links to other PHP resources.
Paul Wang and Sanda S. Katila, An Introduction to Web Design + Programming. Thompson Brooks/Cole, 2004. ISBN 0-534-39528-7
Up-to-date coverage of numerous topics in web design and programming. More focused on web design issues than this course is, but contains good coverage of programming-related topics such as CGI and Javascript.
Molly Holzschlag, Cascading Style Sheets: The Designer's Edge. Sybex, 2003. ISBN 0-7821-4184-6
An excellent textbook for those seriously interested in web design. No coverage of programming issues, though.

Valid XHTML 1.1! Valid CSS!