CS 494 Special Topics:
Database/XML Client Programming

This course is no longer being offered
Last offering was Spring Semester 2007


Course Description

This course begins with an introduction to relational database design and implementation in industry-standard SQL. We then consider methods of interfacing application software to databases based on open specifications such as ODBC (Open Database Connectivity) and JBDC (Java Database Connectivity). Finally, we discuss, in depth, systems which interoperate with databases through higher-level platform-independent standards based on XML (Extensible Markup Language). XML will receive greater emphasis than the other topics. Throughout the course, the principles discussed will be illustrated in software demonstrated in class and developed in programming assignments.

This course is offered as CS 494 only; there is no 500-level version.


Prerequisites

CS 360 Unix Systems Programming plus some experience in C++ or Java.

Difficult bugs may be impossible to track down without gdb (or for Java, jdb). If you're not already well-versed in gdb or jdb, the following are recommended: gdb tutorial, gdb manual, gdb quick reference, jdb tutorial, jdb commands.


Logistics

CS 494 will meet Tuesdays & Thursdays, 2:10-3:25 p.m. Eastern Time / 1:10-2:25 Central Time, at two locations:

There are cameras and microphones at both ends, so you can see and hear me, and I can see and hear you and the others in the class. That means it's not just a one-way lecture, students in Knoxville can ask questions, participate in discussions, etc. We will use dual-video transmission, so that you'll be able to see me at the whiteboard simultaneously with a large display of my PC screen.


Textbooks

Elliotte Rusty Harold and W. Scott Means, XML in a Nutshell, O'Reilly & Associates, 3rd edition, 2004, ISBN: 0-596-00764-7

Chris Fehily, SQL: Visual QuickStart Guide, Peachpit Press.

These textbooks will be supplemented extensively with materials from the web.


Evaluation

Grade will be based primarily on 6 programming assignments, spaced at intervals of approximately 2 weeks throughout the semester. The first 3 programming assignments, involving markup language concepts, databases, and low-level interfaces to databases, can be written in C, C++, or Java (student's choice). The last 3 programming assignments, involving the eXtensible Markup Language (XML) and XML-based interoperability, can be written in C++ or Java (again, student's choice), but not ordinary C because we use XML client libraries with C++ and Java interfaces. Your code will need to run correctly under Linux, but can be developed on any convenient Unix system. (Since your code should be portable, it's fine to develop it under Solaris if that's most convenient for you - but keep in mind that Linux tends to be less tolerant than Solaris of memory allocation errors.) Evaluation criteria will be supplied with each assignment.

You are responsible for debugging your code, including bugs (such as memory allocation or pointer problems) that can cause your executable to crash at a completely different location than where your bug is. (For example, if a wild pointer or memory allocation bug in your own code clobbers some arbitrary memory location that happens to be used by a library loaded in your executable's address space, then your program may crash while executing a function in that library.) You are likely to need to use gdb or jdb (see ``Prerequisites'' above) to track down such bugs. To earn full credit for each assignment, you must debug it without assistance from the instructor.


For Further Information

Bruce Whitehead
Assoc. Prof., Computer Science
Univ. of Tenn. Space Institute
Tullahoma, TN 37388-9700

bwhitehe <AT> utsi <DOT> edu
931-393-7296