DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
UNIVERSITY OF CALIFORNIA, SAN DIEGO


CSE 134A: Web Service Design and Programming

Fall 2001

 Click here for the Fall 2002 version of 134A.

NEWS AND NOTES

The final exam was on Thursday December 6, from 3pm to 6pm, in Center Hall 109.  Here is a chart of the distribution of scores.  Here are the grading guidelines used for the midterm, including sample answers.  Sample answers are not available for the final.

We have a Discus discussion board for 134A.  Please use this for any and all questions of general interest concerning the course.

The fourth and last project description is now available.  The project is due at noon on Monday December 3.  See Discus and the
November 16 section notes for help.  Here are grading criteria for the fourth project.

Here are grading criteria and comments for the third project, and grading criteria and comments for the second project.  These will explain the score you received for each project.

See these important notes written by Greg Hamerly about ieng9 and MySQL accounts for 134A.
 
 

LECTURE NOTES

Lecture notes for each class meeting will be published here on the class web page.  See here for lecture notes from Spring 2001.  This quarter's notes are different because some topics are different, and the order in which topics are covered is changing.
 
date
topics
 Sept 24 Course policies, web services, role of PHP and MySQL
 Sept 26 PHP and Apache, forms in HTML and PHP, GET versus POST, functions
 Oct 1 Web design mistakes, three-tier architecture, using the MySQL server, declaring and querying tables in SQL
 Oct 3 Clauses in select queries, delete/update/insert SQL commands, summary and join select queries
 Oct 8 The team self-evaluation form, database indexes, use for query evaluation, efficiency and scalability
 Oct 10 How cookies in the browser and with PHP.  Sessions and how to use them with PHP.
 Oct 15 Session variables, cookies and URL rewriting for session propagation, storage methods for sessions
 Oct 17 When to use table indexes, good database design, avoiding redundancy.
 Oct 22 Enforcing database constraints.  Regular expression (RE) basics.
 Oct 24 Leftmost, longest RE matching and efficiency.  Using REs to extract or replace parts of a string.
 Oct 29 Voice server architecture, VoiceXML syntax, forms and fields, telephone-based user interface design
 Oct 31 In-class midterm exam (PDF, revised to increase clarity)
 Nov 5 Web site design objectives and architecture.  Security zones, firewalls.
 Nov 7 UI principles.  Page-based versus component-based application servers. 
 Nov 12 No class because of Veterans' Day.
 Nov 14 Introduction to XML, document type definitions (DTDs), and SOAP
 Nov 19 SOAP requests, payloads, and responses.  XML namespaces and data types.
 Nov 21 DTDs: internal and external, entities such as images, attribute definitions.
 Nov 26 Basics of XSLT, the XML stylesheet language
 Nov 28 Limitations of SOAP and web service needs, Microsoft .NET.  The Google pagerank measure.

 The following section notes are in HTML or Acrobat Portable Document Format (PDF).
 

date
topics
 Sept 28 MySQL tutorial, Using PHP with MySQL (PDF)
 Oct 5 A sample solution for Project 1
 Oct 12 Sockets in Unix and PHP.  Advice for building a server to check spelling.
 Oct 19 (PDF) Threaded discussions in MySQL and PHP.  Sessions.
 Oct 26 Retrieving and extracting data from web pages in PHP, Unix crontab file
 Nov 2 Project 2 returned, XML intro, VoiceXML examples and PHP, more on Unix cron. 
 Nov 9 Software and report guidelines, more on VoiceXML
 Nov 16 Project 4 help: Overview, XSL, BLOBs in MySQL, sending email and calling POST forms from PHP
 Nov 23 No section due to Thanksgiving.
 Nov 30 How to code a SOAP client and server in PHP

 

OVERVIEW

CSE 134A teaches students how to develop web-based applications that deliver information dynamically, either to human users or to other applications.  The main programming technology used in the course is the PHP scripting language.  The main database system used is MySQL.

The course will cover architectures for server-side web-based systems that scale to thousands and even millions of users.  The topics discussed will be related to Windows DNA, Microsoft .NET, and Sun ONE, but will not be vendor-specific.  Standards for information exchange over the Internet including XML and SOAP will be covered.

If time permits, the course will also cover algorithms for organizing and searching web-based information, such as those used by the Google search engine.

Topics that will be mentioned in 134A but not covered systematically include IP networking, relational database systems in general, the internals of web servers, HTML and Javascript, and user interface design.
 
 

ORGANIZATION

CSE 134A is open only to CSE upper-division majors and non-CSE graduate students.  134A is not recommended for CSE graduate students, because it is not graduate-level.  The essential prerequisite is CSE 12, Data Structures.  CSE 100 and CSE 134B are recommended but not required.  For registration in Fall 2001, the section id is 420662

Lectures will be on Mondays and Wednesdays from 4:40pm to 6pm in Center Hall, room 109.  Students must also be available for a discussion section between 4:40pm and 5:30pm on Fridays, in the Cognitive Science Building, room 001.

The course has one instructor and three excellent teaching assistants (TAs):
 

Name Email Office Hours Office Location
Charles Elkan  elkan@cs send email for an appointment APM 4856
Joe Drish  jdrish@cs Friday 11am-noon APM 3337D
Gyozo (Victor) Gidofalvi  gyozo@cs MW 10-11am APM 3337A
Greg Hamerly  ghamerly@cs TuTh 5-6pm APM 3349A

There is a Discus web-based message board for questions that would be of interest to other students also.

The Fall 2001 offering of 134A is now full, with over 140 students registered.  The course will be offered again in 2002/2003.  You may add 134A now only if you will graduate in June 2002 or earlier.  To add the course, you must bring proof of your graduation date to the CSE undergraduate affairs office.  Pat Raczka will verify your documentation and then enroll you immediately in 134A for this quarter.
 
 

EXAMINATIONS

The final exam will be on Thursday December 6, from 3pm to 6pm, in Center Hall 109.  The in-class midterm was on October 31.

Here are the Spring 2001 midterm and final examination.  Sample solutions are not available currently.  The Fall 2001 midterm was very similar.  The final will be similar in format and style, but the questions will be different.

For the exams you may bring and use the following materials: one PHP book and one MySQL book, your own personal hand-written notes, documents handed out in class, and a printed copy of the published lecture notes.  You may not use any other materials.

The midterm will count for 1/6 of your overall grade and the final for 1/3.   Your grade will therefore be based 1/2 on your individual work, as reflected in the exams, and 1/2 on your project work.

Grading will not be based on arbitrary numerical standards, nor will there be a fixed "curve." There is no fixed correspondence between letter grades and numerical scores on the assignments or on the exams.  You can evaluate your performance in the class by comparing your scores with the means and standard deviations, which will be announced.  However there is also no fixed correspondence between letter grades and standard deviations above or below the mean.  If all students do well in the absolute and compared to previous years, then all students will get a good grade.

You should not drop CSE 134A just because you are unhappy with the score that you receive on the midterm or on a project assignment.  Instead, you should make an appointment to discuss with the instructor or with a TA how you can do better on the final and on following projects.
 
 

PROJECTS

There will be four projects using PHP and MySQL.  The first project was a small individual assignment, distributed on Wednesday September 26 and due on Wednesday October 3.

The second and later projects require you to work in a team of exactly three people and to write a good quality project report.  Attached to the report for each project should be one filled-in team self-evaluation form.  Complete academic honesty is required.  You must understand and follow these general guidelines for each team project.  Also, be sure to learn from these notes on the first projects and these general comments about the submissions for the Spring 2001 first projects.

The submission instructions for the second project say that the report is due on Monday October 23, while your software is due before 4:40pm on Tuesday October 23.  We canceled the part of the project where you must implement your own server for spell-checking.  The reason is that this part of the project requires different knowledge that we haven't covered in lecture yet.  If you have worked on this part already, please don't be upset. You will be able to use your work and what you have learned in the third team project.  The rest of the current project is unchanged. You now have more time to an excellent job on all the other project parts, including interfacing with the server on rick.ucsd.edu, and the report.

Here are grading criteria and comments for the second project.

For the third project you will retrieve news items from the web, and republish them through a toll-free telephone voice-based interface.  This project is due on Wednesday November 14.  Follow these submission instructions.  Here are grading criteria and comments for the third project.

The fourth and last project description is now available.  The project is due at noon on Monday December 3.  Here are grading criteria for the fourth project.

The first warm-up project will be worth 5% of your total grade.  Each of the three team projects will be worth 15%.  Both parts of each project (your working code and your team report) will be due before class begins on the due date.  If a project is late, you will lose 20% of the maximum possible score for that project, for each day or part of a day that the project is late.
 
 

READINGS

Two reference books will be used extensively: The following documents are good references for topics not covered in the PHP and MySQL books: You should read and understand the parts of these documents that cover topics discussed in class and mentioned in the online lecture notes, in the same way that you study relevant parts of the PHP and MySQL books.

Quite a few of the topics discussed in class will not be in either book, or will be explained differently. Coming to lectures and taking notes carefully is important.  As the quarter progresses, it is your responsibility to locate relevant chapters of the books and to study them.  Use the indexes of the books!  Examinations will be based mainly on the projects and the online lecture notes, but may ask questions that involve knowledge in the books.
 
 

USEFUL LINKS ON PROGRAMMING

For all sorts of information on server-side programming for the web, see the links in this directory.

Are expensive database systems worth the money? on Slashdot.

Scripting: Higher Level Programming for the 21st Century by John K. Ousterhout, IEEE Computer, March 1998.

How to Write Unmaintainable Code by Roedy Green.
 


Most recently updated on December 13, 2001 by Charles Elkan, elkan@cs.ucsd.edu