CSCI 4900 (Web programming)

Maymester 2001

3 semester hours

In this course we'll practice using various programming languages which are useful in Web design.

Course meetings:

Maymester starts Wednesday, May 16 and ends Wednesday, June 6. This course will meet for four hours each day:

Lecture:

9:15 till 10:15 AM in GSRC 306

Lecture:

10:30 till 11:30 AM in GSRC 306

Lab:

1:00 till 2:00 PM in room 306 or 307

Lab:

2:15 till 3:15 PM in room 307

The last day, June 6, is our final exam.

Prerequisites:

If you meet these requirements but have not finished CSCI 2720, please see me for a prerequisite override.

Course content:

Client-side technologies:

Server-side technologies:

-- and no whining about VBscript and ASP! Microsoft happens! :-)

Grading:

Programming assignments

50%

But, you don't pass if you cannot write programs on the final.

In-class tests

20%

Final exam

30%

In addition, grad students will be required to complete a paper on a
  • reading assignment.

    Texts:

    Academic Honesty Policy

    All assignments are individual assignments. There will be no group projects.

    You may discuss ideas about page and program design with your fellow students. You may not share code or help others with their code. In particular, you must not look at the source code of other students' pages, or look at their work while they are writing code in the lab.

    It is normal practice to adapt code from the text or from informational Web sites. However, you must always give proper attribution for adapted code in the form of comments in your Web pages.

    Penalties: any suspected cases of academic dishonesty will be pursued through the University's academic honesty program. For unintentionally allowing code to be copied, I will ask for a zero on the assignment. For intentionally copying code, I will ask for an F in the course and a transcript notation.

    Tentative daily schedule (in progress)

    Day

    Date

    Topic

    Readings

    W

    May 16

    Client-side and server side scripting; the Document Object Model

    Halata, Ch. 1 and 2

    Th

    May 17

    Javascript and VBscript

    Halata, Ch. 3 and 4

    F

    May 18

    More JavaScript and VBScript

    Halata, Ch. 5 and 6

    M

    May 21

    Server-side scripting with ASP; Forms and CGIs

    Halata, Ch. 7 and 8

    T

    May 22

    Cookies and state

    Halata, Ch. 9

    W

    May 23

    ASP components; Perl; Test 1

    Halata, Ch. 10

    Th

    May 24

    Java Server pages (JSP)

    JSP Tutorial from Sun Microsystems

    F

    May 25

    Extensible Markup Language (XML)

    XML in 10 points
    XML activity statement

    M

    May 28

    Memorial Day Holiday! Have fun!

    T

    May 29

    Database-enabled applications with ASP; Introduction to PHP

    Halata, Ch. 12, 13

    W

    May 30

    PHP and databases Test 2

    TBA

    Th

    May 31

    PHP and XML

    --

    F

    June 1

    More PHP; document object models

    --

    M

    June 4

    Dynamic HTML

    --

    T

    June 5

    Dynamic HTML

    --

    W

    June 6

    Final exam and programming party!

    Assignments:

    Please check this list frequently, as I will be adding more assignments to the list. All assignments are due at 8:00 AM.
    Late homework will not be accepted!

    Do not submit assignments. All assignments should be displayed on the course Web server at the URLs

    http://128.192.101.200/~your-name/Secret-Directory/Assnn.html.

    See below for the explanation of "Secret-Directory".

    For example, the files for Assigment 1 should be named

    in your public_html directory.

    Assn

    Due

    Assignment

    1

    Thursday, May 17

    a:Project 1-4, Halata pp. 35-36
    (note: color attribute does not work in part 7)
    b:Project 1-6, Halata pp. 37-38

    c:Project 2-1, Halata p. 66
    d:Project 2-2, Halata pp. 66-67

    2

    Friday, May 18

    a:Project 3-1, Halata pp. 120-121
    b:Project 3-2, Halata p. 121
    (note: works easily under IE but Navigator is hard)

    c:Project 3-3, Halata pp. 121-122
    d:Project 3-4, Halata pp. 122-123

    3

    Monday, May 21

    a:Project 5-1, Halata pp. 201-202
    b:Project 5-2, Halata p. 202

    c:Project 5-3, Halata pp. 203-205
    d:Project 5-4, Halata p. 205

    4

    Tuesday, May 22

    a:Project 6-1, Halata pp. 240-241
    b:Project 6-2, Halata pp. 241-242

    c:Project 6-3, Halata pp. 242- 243
    d:Project 6-4, Halata p. 243

    5

    Wednesday, May 23

    Construct a page using rollover image menus to control its content.

    The page should consist of a navigation frame and a content frame. The navigation frame should have three menus with two menu items each. You can use PaintShop Pro, available in room 307 GSRC, to create the menu images. Clicking on a menu item should alter the document displayed in the content frame.

    Work from scratch rather than adapting the code we have shown in class (or any other code). You will need the HTML tags IMG, FRAME, WINDOW, and A (and perhaps more).

    --

    Thursday May 24

    No homework! Yippee!

    6

    Friday, May 25

    a:Project 4-1, Halata pp. 162-163
    b:Project 4-2, Halata p. 164

    c:Project 4-3, Halata p. 164
    d:Project 4-4, Halata p. 164

    --

    Tuesday May 30

    Homework Amnesty -- turn in any missing homework for full credit (please mail bill@billnet.org to notify)

    --

    Wednesday May 31

    No homework! Yippee!

    7

    Thursday May 31

    Write a calendar page which allows the user to select a month from a drop-down list and type in a year. Upon submission, the page should show a calendar of that month and year, in an attractive table format.

    The table should be on the same page as the input form, so that the user can select a new month and year. Catch any number-format or out-of-range errors which occur when the user enters the year. (Dates after the year 2037 may cause out-of-range errors because Unix stores the time as a long integer, which is 32 bits on our system.)

    Initially, the page should display the current month and year. The current date should always be displayed at the top of the page.

    Hint: Start by perusing the PHP date-related functions. Initially, have your page just display the current month and year; then add the functionality to let the user select a month and year.

    8

    Friday June 1

    Create an interesting and fun page using DHTML elements such as Cascading Style Sheets and absolute positioning. This page will be graded using Netscape 4, so you may use layers.

    9

    Monday June 4

    Write a simple bulletin board using PHP and mySQL.

    Your bulletin board program should have the following basic functionality:

    • Present the user with a list of message headers, where a message header contains the author, date posted, and subject;

    • Allow the user to select a message from the message header list, and view the message contents;

    • Allow the user to post a new message;

    • Allow the user to post a reply to an existing message.

    Later, you may add support for discussion threads and other cool features if you like.

    A suggested data model is shown in How to create a MySQL database. Be sure to familiarize yourself with the MySQL manual, especially chapter 7 (the language reference).

    An example of using an anchor tag to fake a submit to a PHP server script is showh here. The text of the PHP script which receives the query is shown here.

    10

    Monday June 4

    (Due at the end of the day) Enhance your bulletin board program with whatever extra features you find attractive and doable. Include thread support if at all feasible. (A new message has a new thread ID; a reply message has the same thread ID as the message to which it is replying. Thread support should allow the users to view messages organized by threads, or view all the messages in the thread belonging to a particular message.)

    Composition windows which disappear after entry

    To be continued...

    Web server accounts are here!

    Please get your login name and password from me. You are encouraged to change your password.

    The IP address for the Mystery Host is 128.192.101.200. It can only be accessed through ssh (secure shell) and scp (secure copy), both of which are installed on gemini and Arches.

    How to securely publish your Web pages

    You are responsible for not allowing your work to be copied. Please let us know if you need help following these directions (or if the directions don't make sense, which is always a possiblity).

    1. Enter chmod 711 . to allow others to search (but not read) your home directory.
    2. Create a public_html directory inside your root directory.
    3. Enter chmod 711 public_html to make it impossible for others to read your directory.
    4. Inside public_html, create a "mystery directory". Its name should have at least 6 letters and be hard to guess, e.g.goofy_A23Z.
    5. Put your web pages inside the mystery directory. From gemini or Arches, the easy way to do this is to use scp:
      scp Assn3a.html 128.192.101.200:public_html/goofy_A23Z
      -- where goofy_A23Z is the name of your secret directory.
    6. Send email to dme@cs.uga.edu with your login name on 128.192.101.200 and the name of the mystery directory. Don't give this out to anyone.

    In theory, these precautions should ensure that no-one but you and we can see your Web page.

    Useful links:

    Secret directories still needed:

    I do not have secret directories for the following students:

    -- please send me your login id on "200" and your secret directory name write away. Send this info to dme@cs.uga.edu.

    I will not ask Bill to grade any student submissions for homework assignments 1 through 8 which are not in place by this Friday, June 1.

    Interesting news items:

    NEW RECRUITS FOR THE INTERNET: GET 'EM WHILE THEY'RE YOUNG

    In a pilot program described as "the wave of the future," a California hospital and the Namezero.com domain name provider are giving new parents a domain name for their baby. The chief executive of Namezero explains: "Individuals realize domain names are a way for people to stake out a permanent identity on the Web. We're starting at ground zero with newborns," and says that a personal Internet domain name is "the single worldwide standard for finding content, people and places on the Web." (San Jose Mercury News 24 May 2001)

    Lecture notes: