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


CSE 134A: Web Service Design and Programming

Fall 2002

 
Happy Thanksgiving!  Lecture, office hours, and section are canceled November 27, 28, and 29.

Scores for the midterm have been posted on Gradesource.  For more information, see the section notes for November 22 and this grading guide.

The deadline for the fourth and last project is 5pm, Friday December 6.  The bonus for early submission is 5% per day early, up to a maximum of four days. One day early means before 11:59pm on Thursday December 5, etc.  Use lessons from the explanation of scores for the second project to do well in the current project.

Here are important notes on computer accounts, on how to run PHP programs, and on how to submit each assignment.
 

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 intended for CSE upper-division majors only.  134A is not recommended for any graduate students, because it is not graduate-level, and because there is a waiting list of CSE majors.  The essential prerequisite is CSE 12, Data Structures.  CSE 100 and CSE 134B are recommended but not required.

For registration in Fall 2002, the section id is 444869.  As of September 25, the course is full with over 120 students registered.  The course will be offered again in 2003, so you may add 134A now only if you will graduate in June 2003 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.

Lectures will be on Mondays and Wednesdays from 5pm to 6:20pm in Center Hall room 109.  Students must also be available for a discussion section between 5pm and 5:50pm on Fridays, in Center Hall room 105.

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
Greg Hamerly  ghamerly@cs TuTh 5-6pm APM 3349A
Dana Dahlstrom dana+cse134a at cs dot ucsd dot edu M 11am-noon, F 4-5pm APM 3349A
Greg Chun  gchun@cs.ucsd.edu MW 4-5pm APM 3349A

There is a Discus web-based message board.  Please ask all questions here, ecept questions that are strictly personal.  See here for the message board from last year.
 
 

CALENDAR

day of week month date event person responsible
F September 27 first section (Unix basics) GC
M 30 first office hour (GC); first lecture; first project assigned CE
W October 2 lecture CE
F October 4 section GC
M 7 lecture CE
W 9 lecture; first project due (GC); second project assigned CE
F 11 section GC
F 18 section DD
F 25 section; second project due (GH); third project assigned DD
F November 1 section DD
W 6 in-class midterm (GH) CE
F 8 section GH
M November 11 no lecture because of Veterans' Day
F 15 section; third project due (DD); fourth project assigned GH
F 22 section GH
M 25 lecture; CAPE
W 27 no lecture due to Thanksgiving
F 29 no section due to Thanksgiving
M December 2 lecture
W 4 review session instead of lecture CE
F 6 review session; fourth project due (DD) all
M 9 final exam (GC) CE

 

LECTURES AND SECTIONS

Lecture notes for each class meeting will be published here on the class web page.  See here for lecture notes from Fall 2001.  Some topics may be different this quarter, and the order in which topics are covered may change.
 
date
topics
September 30 Course overview, web services, role of PHP and MySQL, a PHP example
October 2 Forms in HTML, using form variables in PHP, GET versus POST, connecting to MySQL, SQL commands
October 7 Top eleven usability mistakes, security and input validation, table declarations, queries, and updates in SQL 
October 9 Grouping in queries, big-O efficiency of queries, definition of scalability, using indexes to improve scalability
October 14 User-level design principles, indexes on multiple columns, guidelines for using indexes
October 16 Seeing how an SQL query will be executed, avoiding redundancy in db design, stating and enforcing constraints
October 21 Cookies and sessions
October 23 Alternative storage methods for session data, session callback functions.  Screen scraping
October 28 Regular expressions in PHP
October 30 Intro to VoiceXML: server architecture, traffic report appliance example, dialog elements
November 4 Voice user interface guidelines.  Leftmost, longest RE matching, efficiency with REs
November 6  In-class midterm
November 13 Team-work and real-world skills.  Intro to XML, document type definitions (DTDs)
November 18 XHTML, attribute and entity declarations in DTDs, ids and idrefs, namespaces
November 20 Remote procedure call (RPC) concept.  SOAP headers and payloads.
November 25 Introduction to XSLT.  Event-driven programming with templates.
November 27  No lecture due to Thanksgiving
December 2  Limitations and future of SOAP, application server types, web site architecture

Section notes will also be published here.  Notes may be in HTML or Acrobat Portable Document Format (PDF).
 

date
topics
 September 27  Unix basics relevant to 134A.
 October 4 MySQL tutorial, Using PHP with MySQL (PDF)
 October 11 Notes on debugging (PDF)
 October 18 Sockets and spell-checking, HTTP redirects in PHP, threaded discussions in MySQL
 October 25 Retrieving data from URLs, extracting content, and scheduling execution
 November 1 Design principles for voice interfaces
 November 8 Regular expression exercises
 November 15 Remote procedure calls and SOAP
 November 22 Using XSLT inside PHP, sending POST requests to a server.
 November 29  No section due to Thanksgiving.

 

EXAMINATIONS

The final exam will be on Monday December 9, from 7pm to 10pm, in Center Hall 109.  The date of the in-class midterm will be announced well in advance.

Here are the Spring 2001 midterm and final examination.  Sample solutions are not available currently.  The Fall 2001 exams were very similar.

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 is a small individual assignment, due on Wednesday October 9.  You can see and try a demo of how the first project should work.  Be sure to learn from these notes on the first projects from last year, and these general comments about the first projects last year.

Here are the grading criteria for the first project, and here is the explanation of scores for it.

The second project involved building a discussion board.  Here is a detailed explanation of scores.

All projects except the first one require you to work in a team of exactly three people and to write a good quality project report.  You must understand and follow these general guidelines for each team project.  Attached to the report for each project should be one filled-in team self-evaluation form.  Perfect academic honesty is always required.

The first 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.

How to Write Unmaintainable Code by Roedy Green.
 
 


Most recently updated on December 2, 2002 by Charles Elkan, elkan@cs.ucsd.edu