This course ended on May 10, 2009

CPSC 271 (Topics in Computer Science):
Web Site Programming

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Spring, 2009.

   Instructor:  David J. Eck
   Course Handout:

   Monday, Wednesday, Friday,  11:15--12:20, Room Merritt 200.

Homework 1:
Introduction to
Homework 2:
Computer lab on
NetBeans and JavaScript
Homework 3:
Two JavaScript
Homework 4&5:
Two ongoing
Homework 6:
Computer Lab on
Timers and DOM
Homework 7:
Computer Lab on
Homework 8:
Lab 4 and Lab 5
Server-Side Programming
Homework 9:

Student Web Reports (Homework 5)
Samuel Belton
CSS3 and/or HTML5
Tomas Carvalho e Silva
Gregory Cavalieri
Jonathan Correa
Meghan Cox
Dojo JavaScript Toolkit
Annica Crouse
Graphics with <canvas>
Nathan Davidoff
Joshua Davis
XML for Web Content
Kevin Guay
Robert Hendry
Reynaldo Kelly
Lex Kridler
Cloud Computing
Chandler Moss
ASP and .NET
Travis Pierce
Sunkyung Shin
Web Image Formats
Keenan Simons
Enterprise JavaBeans
Katelyn Tyson
YUI JavaScript Toolkit
Alexander Walbridge
Web Services and SOAP

Week 15 and End of Term: May 4 and 10

On Monday, the last day of classes, we will have the last few student presentations. Also, you will fill out course evaluations.

The scheduled final exam period for this course is Sunday, May 10, from 11:00 to 2:00. Although we will not have a final exam, final projects are due at that time, and we will use the final exam period for student presentations of their final projects.

Week 14: April 27 and 29; May 1

This is the last full week of classes. On Monday, we will meet in the computer lab in Lansing 312 to work on final projects. There is a handout about finishing up the project.

I have now said everything that I think absolutely needs to be said in the course, so on Wednesday and Friday, I will give an overview of what we have done and what we have not done on the topic of web site programming. (It is also possible that we will spend Friday in lab.)

Week 13: April 20, 22, and 24

You should continue to work on your final projects. Hopefully, you can have much of the server-side programming done this week. On Wednesday, we will meet in the Lansing computer lab, so you can work on your program or discuss it with the rest of your group.

On Monday, I will finish talking about the JSP Standard Template Library (JSTL). On Friday, I hope to cover container-managed connection pools.

Week 12: April 13, 15, and 17

We start the week with some information about XML. Josh Davis will present some basic information, and there might be some other presentations about technologies that use XML. I will talk a little about the web.xml web application deployment descriptor file and how XML syntax is used in JSP tags.

On Wednesday, people will work in groups on the final project. The goal this week is to get a good idea of the server-side architecture and work assignments for server-side programming.

Aside from that, we will be looking at some of the features of the JSTL (JSP Standard Template Library). The reading is Chapter 11 in Murach.

Week 11: April 6, 8, and 10

The main point of the course for the rest of the term will be the final project, but we will continue to cover other topics that might be useful for the project or that are good to know about in general. This week, we'll look at JavaBeans and at the JSP Expression Language (EL), and we will begin an overview of JSP tags. For the EL, the reading is Murach, Chapter 10.. For JavaBeans, you can read the first part of Chapter 9. While I will talk about the later parts of Chapter 9 in class, in practice you won't have to use that material.

Homework 9 is due on Friday. The written part can be turned in in class, and your index.jsp file can be copied into your homework folder in the directory /classes/s09/cs271/homework. (I'll also accept index.jsp by email. I won't look for the index.jsp file until Saturday morning.)

On Wednesday, each of the final project teams should turn in a functional design for their project. Your will spend the day on Wednesday working on the design of the database and data access classes for your project.

Week 10: March 30; April 1 and 3

There is a test on Wednesday of this week. An information sheet is available.

We will start covering JDBC on Monday, but anything that we cover on Monday will not be on the test. On Friday, you will work on your final projects, as discussed in the March 23 handout. The final regular homework assignment was handed out last Friday and will be due sometime around the middle of April.

A handout for Friday's class.

Week 9: March 23, 25, and 27

As we pick up after Spring break, we will turn to using databases for storing the data needed by a web application. The reading is Chapters 13 and 14 in Murach.

There will be a handout on Monday, with information about the final project and the rest of the course. This handout is also assigned reading.

The second test is coming up next week, on Wednesday, April 1.

Week 8: March 9 and 11

There is no class on Friday of this week. On Monday, we will complete Chapter 8 of Murach. On Wednesday, there will be a computer lab in Gulick 208. In the lab, you will be working with sessions.

The client-side programming project is due before Spring break. The work from labs 4 and 5 will be due after the break. After the break, we will start working with databases, Chapters 13 and 14 of Murach.

Week 7: March 2, 4, and 6

We continue with server side programming. We have already begun talking about servlets and the MVC design pattern. We will continue this on Monday and then will move on to the use of sessions in Java web applications. On Wednesday, we will be in Gulick 208 for a tutorial lab on using Netbeans to program web applications. You should read Chapters 6 and 7 in Murach, and you should start Chapter 8.

Week 6: February 23, 25, and 27

We turn to server side programming this week, concentrating on JSPs, but also with an overview of servlets, web applications, and the HTTP protocol. The reading is Chapter 5 of Murach. You should also review the material on HTML forms from Chapter 4 (pages 120 -- 134), if you haven't already.

On Monday, I showed an example of the Scriptaculous Ajax.Autocompleter and some Scriptaculous animation effects. This example can be found in the js-work directory, under the name scriptaculous.html. You are welcome to use the animation examples as models for the exercises in Lab 3..

Week 5: February 16, 18, and 20

There is a test this week, on Wednesday. An information sheet is available.

On Friday, we will be in Gulick 208 for another lab. The exercises from the previous lab are due at that time.

We still have to spend some time on client-side JavaScript for manipulating the DOM. However, you will also encounter a bit of server-side programming and some AJAX in lab on Friday, so we will have to prepare for that. In particular, we will start looking at the Prototype toolkit and how it implements AJAX.

Week 4: February 9, 11, and 13

We will be spending some more time on the DOM and on CSS properties this week, especially positioning properties. You should read Chapters 15 and 16 in JavaScript: The Definitive Guide. Here, by the way, is nice summary page about the DOM that lists both the w3c standard and the Internet Explorer variations. (Click on a word for more information.)

I have handed out a pair of longer term assignments. You will need to meet with me to talk about what you need to do for these assignments.

On Friday, class will meet in Gulick 208 for a lab.

Reminder: The first test is coming up next Wednesday, Februrary 18.

Week 3: February 2, 4, and 6

The lab from last Wednesday is due on Wednesday, February 4. The next homework, Assignment 3, is another pair of relatively short JavaScript exercises and will be due next Monday.

You should be reading Chapters 7, 8, and 9 from JavaScript: The Definitive Guide. These chapters cover objects, arrays, functions, and classes in JavaScript. Although you will not need to know everything in these chapters, it's good to read them so that you will know what is available.

In the meantime, the homework uses new additional features of HTML and of client-side JavaScript. You will need to know something about using the <table> tag in HTML. You can read about tables on pages 113--115 of Murach's Java Servlets and JSP. You will also be using the client-side function setInterval, which is used in various examples in JavaScript: The Complete Guide and is documented on pages 931--933.

Week 2: January 26, 28, and 30

In the second week of the course, we will start looking at JavaScript. There will be a handout with an introduction to the basics of JavaScript. I also suggest that you look through Chapters 1 through 6 of JavaScript: The Definitive Guide.

Assignment 1 is due on Wednesday of this week. (Note: for help on selecting fonts for the font-family property, you might look here and here. Remember that has a lot of information on CSS.)

For Wednesday's class, we will meet for the computer lab in Gulick 208. This lab introduces NetBeans and has a few exercises on JavaScript.

Note added Jan. 29: I have put up a few samples of CSS style sheets that I have made for prizes.html, to show some of the things that you could have done for Assignment 1. The see the style sheets and image files that I used, go to the directories,, and

Week 1: January 19, 21, and 23

On the first day of the term, I will show some examples of web site programming and discuss some of the technologies that are used in them, such as the use of CSS styles in the course handout and the use of a JavaScript toolkit in this Blackjack game. Then, for the rest of the week, we will be talking mainly about basic HTML and CSS. Suggested readings include Chapter 4 of Murach's Servlets and JSP, pages 105 to 131, and Section 16.1 of JavaScript: The Definitive Guide, pages 345 to 354. It would also be a good idea to pick out some good on-line references for HTML and CSS and bookmark them in your web browser. One place to look for tutorials and references on Web technologies is As a homework assignment, I will ask you to start work on a home page for this course and to provide a style sheet for this department prize list.