ITA 343

Skip to main content.
Distance Learning Design Banner

ITA 343
Server-Side Programming and Web-Data Integration

Course Introduction

Required Reading
  • Larry E. Ullman, PHP and MySQL for Dynamic Web Sites, 2nd ed. (Berkeley, CA: Peachpit Press, 2005). ISBN 0321336577
Optional Reading
  • Hugh E. Williams, Web Database Applications with PHP and MySQL, 2nd ed. (Sebastopol: O'Reilly, 2004). ISBN No. 0596005431

Welcome to the Server-Side Programming and Web-Data Integration course. This course is designed to show you how to develop server-side programming techniques using the Linux/Unix, Apache, MySQL, PHP (LAMP) technology framework. Servers are the workhorses for the Internet since they "serve" or distribute all the Web pages that make up the World Wide Web.

Servers also provide access to database management systems and other resources which help make the Web such a compelling learning resource and business environment. Whether your objective is to publish information so that others may learn, or to support online business operations, you will need to manage data in an effective manner. Database management is at the foundation of virtually all nontrivial Web applications, and server-side programming provides the dynamic capability to access and manage databases. In short, learning server-side programming and data integration technology will provide you with the most important Web development skills.

Benefit to You

The benefit to you of knowing server-side programming and data integration is that you can create or help others create custom Web applications that integrate data management technology with Web pages viewed by users. This capability increases your value to your organization and its managers as well as on the job market. Data is the raw material for information, and information is the basis for decision-making. Executives and other managers compete with each other based on their decision-making success. When you possess effective data management capabilities, you can reliably create Web sites that manage data and information, and you become more valuable to your team and organization.

Is This Course for You?

You will benefit from this course if you desire to incorporate the power of servers to leverage dynamic Web solutions—whether your interest stems from a planning, project management, or programming perspective. Servers are the backbone of the Internet and provide the critical capability to produce dynamic Web sites, publish information based on user input, and control access to centralized resources.

You will gain the conceptual framework needed to understand the important differences in capability between server-side environments, and client-side environments such as Web browsers. In addition, the course will increase your hands-on capability to plan, document, and build Web technology solutions using PHP and MySQL technologies. The material is designed for the non-programmer, so extensive programming experience or expertise is not required.

Prerequisites for Taking this Course

Either successful completion of "Introduction to SQL and Data Storage Technologies," or familiarity with Hyper Text Markup Language (HTML) programming, database connection techniques, and relational database design and implementation as a result of coursework or experience constitute the prerequisite(s) for this course.

to top

Course Objectives

Course Preview
  • 8 lessons
  • 7 assignments: 3 types—
    • Programming Competency Demonstrations
    • Capstone Component Prototypes
    • Capstone Design Documents
  • 1 Capstone Project Package
    • Capstone Project Report
    • Capstone Project Code Documentation
    • Functional Web site on course server
  • 4 review exercises
  • 8 labs

When you have finished this course, you will be able to

  • integrate server-side programming concepts and techniques, database technologies, and client-side scripting to design and implement a dynamic Web application;
  • demonstrate your competency in server-side technologies to project managers, colleagues, and potential employers;
  • use design documents and component prototyping techniques to reduce the risk of Web project failures or delays;
  • work more effectively in team-based Web development projects;
  • document Web applications architectures and component interfaces;
  • document the server environment and architecture of data-driven Web applications;
  • apply the basics of server-side programming using PHP;
  • use PHP with MySQL technologies to create data-driven Web applications;
  • leverage XML and RSS with PHP to create flexible and extensible storage and display of data;
  • address issues of Web security that relate to PHP.

Professional Context

To help you meet these objectives effectively, we have designed the course to be consistent with the professional context in which most Web development actually occurs.

We assume two professional contexts:

  • team-based software development
  • project management

You will learn the technology skills in this course in a conceptual framework consistent with professional environments for doing this type of work for an employer or client. The benefit to you (and your career) is that you will be better prepared to be immediately effective, and have less to learn (and fewer bad habits to unlearn) when you go to work on your next project.

to top

Course Materials

In this course, you will need one textbook and a computer workstation with Internet access and a SSH terminal client (see "Technology Requirements and Skills" section below).

Required Textbook

Larry E. Ullman, PHP and MySQL for Dynamic Web Sites, 2nd ed. (Berkeley, CA: Peachpit Press, 2005). ISBN 0321336577

We selected the textbook (referred to as PHP and MySQL) to provide a good exposure to the PHP and MySQL concepts required in our server-side programming course. An additional feature of the book is the many clear code examples showing both the correct syntax of particular statements, and how the results will appear in the context of your server-side scripts and Web pages. This is of tremendous benefit when learning this material. The optional book we've selected offers a rather in-depth look into creating more complex MySQL and PHP Web applications. It is our hope that these two resources, coupled with this instruction, will provide the vital foundation you'll need to master the concepts.

Readings

Each lesson includes a reading assignment from the text. You are expected to complete the readings before working through the lesson or attempting the lesson assignment. See "Study Tips" below for my recommendations on how to integrate the reading into your study strategy for the lessons.

Technology Requirements and Skills

In addition to the technology requirements and skills noted in the Online Student Handbook, for this course for this course we will be working primarily on a course Linux server set up with an installation of MySQL, a leading free database server. Since the majority of what you will be doing is done on the course server, the need for specific hardware or software on your machine is minimal. You can use any operating system of your choosing as long as there is a Secure Shell (SSH) terminal client for it.

SSH terminal clients are available for download as part of the University of Washington Internet Connectivity Kit (UWICK). Please follow their instructions for downloading and installing the software. You will need your UW NetID in order to download the software. The instructions and software are located at University of Washington: Software Guide, UWICK CD Contents for Autumn 2006: https://www.washington.edu/uware/uwick/contents.html

As a University of Washington student you can receive free technical support with the UW Internet Connectivity Kit by e-mailing: help@cac.washington.edu. Please only send e-mail to that address if you need assistance installing the SSH terminal client from UWICK. For other technical assistance, e-mail the online learning technical support staff at: dlTechSupp@extn.washington.edu.

Additionally, you need to have experience with a computer operating system such as Windows, Macintosh, or Unix/Linux. You should feel comfortable using a Web browser and have an Internet connection.

to top

About the Online Environment

Additional Online Resources

Links to references on writing, research, and a variety of other topics.

Your online course offers several advantages to the traditional classroom—you can work at your own pace, you get more individualized assistance from the instructor, and you can use online technologies to create a community. For additional resources that will help you in your online learning experience, please see the Online Student Handbook.

Your online course also provides the ability to communicate electronically with other students in the course and with your instructor. While you will primarily interact with the instructor via e-mail and possibly telephone, you can also interact with your instructor other students in a discussion forum to share ideas, hints, tips, and questions.

to top

About the Course

This Capstone Course examines the architecture and technologies of data applications for the Web. Modern data applications for the Web require server-side programming (using PHP or another server-side scripting language) and effective data management technologies such as MySQL, a relational database technology you should be familiar with from previous course work. The course introduces concepts and technologies that, combined with the knowledge and skills gained in previous courses, provide the ability to design and build basic data-driven Web applications.

While you learned specific coding technologies and techniques in your previous courses, they were primarily technology survey courses. The capstone course format is different from the technology survey format. Capstone courses are designed to be integrative learning experiences by requiring work that culminates in a final project. The application development process used in this capstone course is designed to expose you to, and prepare you for, the professional interactions that occur between Web developers and project managers as they both strive to create valuable data driven applications to assist decision makers. They expose you to the broader set of perspectives and considerations that reflect the management and professional motivations for the Web application. The course Capstone Project, "Pet Satisfaction Survey," was designed to be relevant from both development and management perspectives.

The course is organized to give you hands-on experience right from the start and includes eight lessons in which you apply your skills by following along on your own computer, eight assignments, and one Capstone Project package. The course also includes Key Terms, practice Review and Lab Exercises, and a discussion forum where you can read and contribute to discussion threads with other students and the instructors.

Key Terms

Key Terms

You will find key terms and abbreviations in sidebars in each lesson.

Each lesson includes terms that are important to the concepts you will learn in the lesson and are intended to serve as guides to your study; these terms are boldfaced and italicized where they appear in the text, and are also shown in a sidebar. You will not be held responsible for key term definitions per se, but you will be expected to use the terms in your written work and presentation material whenever possible. You will find the terms defined either in the lesson commentary, the assigned readings, or both.

Practice Review and Lab Exercises

Practice Exercises

You do not need to submit practice exercises.

Learning programming takes practice. The first lesson provides four review exercises for you to complete on your own. Moreover, each lesson includes several lab exercises that are designed to allow you to practice your programming skills in a guided fashion. The practice review and lab exercises are optional, but we strongly recommend you complete them to prepare for the assignments and develop your mastery of the topics. The practice exercises are not turned in or graded, but you may of course contact the instructors for help if you are unclear on concepts.

Course Discussion Forum

You should plan to check the forum weekly to ensure you don't miss any critical updates or other important information.

Course Discussion Forum

We use an online discussion forum for this course. This forum is primarily for students to discuss among themselves issues, problems, and solutions regarding the course topics, exercises, or related matters. Participation is voluntary and is not graded. I will not participate extensively in this forum since instructor participation tends to inhibit student discussions. However, I will occasionally post a question or outline a discussion topic to enhance your learning or stimulate relevant discussion of course topics. This forum also provides a place for me to post updates to course materials, respond to frequently asked questions, and explain or clarify common issues that students may be encountering.

You should plan to check the forum weekly to ensure you don't miss any critical updates or other important information. Please don't ask or expect individual responses. For personal course-related matters, please e-mail your instructor directly.

to top

About the Lessons

Lesson One: Introduction to the LAMP Technology System

In this lesson, you will review and practice HTML form construction from the viewpoint of a PHP developer, be introduced to server software architecture with particular emphasis on the role of PHP, and learn the component based systems framework.

For Assignment 1, you will demonstrate your competency in HTML form construction and PHP script design, prototyping, and documentation. You will also submit a prototype HTML and PHP communication script.

Lesson Two: PHP Abstraction. Server-Side Includes, Functions, and Self-Pointing PHP Scripts

In this lesson, you will review and practice applying PHP programming syntax and debugging techniques to create logically structured PHP server-side scripts. This lesson extends your understanding of PHP syntax and programming to incorporate programmer developed functions, accessing SERVER hash contents, and incorporating Server-Side Includes (SSI) into scripts.

For Assignment 2, you will demonstrate competency in Part 1 by designing and applying your own functions in PHP, drafting additional PHP scripts, importing them using SSI, and applying self-reference PHP scripts in your forms. In Part 2, you will develop your own SSI scripting and extend your prototype development by adding your SSI scripts.

Lesson Three: Design Documents and Database Connectivity

In this lesson, we will learn the benefits and processes involved to create design documents. We'll cover topics such as Application Architecture, Site Maps, ERD, User Interfaces, and Functional Requirements Documents. Later in the lesson, we'll create a MySQL connection script in PHP and begin to incorporate our database into our scripts.

For Assignment 3, you will demonstrate competency in Part 1 by creating PHP scripts to view, add, and delete content to a database. In Part 2, you will develop a complete ERD and database structure for your Capstone Project.

Lesson Four: Implementing Your Database Connection Prototype and Preparing Your Capstone Design Proposal

In this lesson, we will examine prototype development process as you continue to integrate the scripting capabilities of PHP with the data management capabilities of MySQL.

For Assignment 4, in Part 2 you will implement your database connection extension into your prototype and write a memo reporting on the success of your application extension design and implementation effort. In Part 3, you will prepare a Capstone Project design document to guide your Capstone Project implementation efforts.

Lesson Five: Application Maintenance—Adding Security and Authentication Features to Your Application

In this lesson, you will learn the main security technique, user authentication. In response to the request of the project manager, you develop and document security enhancements to your Capstone Project design and submit your design document to the project manager.

For Assignment 5, you will demonstrate competency in user authentication techniques. You will also document design changes in your Capstone Project resulting from a change request in application requirements.

Lesson Six: Introduction to PEAR and Server-Side Programming Techniques for Maintaining State—Cookies and Sessions

This lesson focuses on how to manage sessions and maintain state in multi-page Web sites. Material covers the two technologies available for session management in PHP, cookies and session variables. You will also be introduced to the PHP Extension and Application Repository (PEAR) library.

For Assignment 6, you will demonstrate competency in maintaining state on PHP pages by using session variables that track user pagination through your site. You will also document design changes in your Capstone Project design resulting from a change request to incorporate state maintenance capability.

Lesson Seven: Application Extension—Parse and Publish XML and RSS feeds

This lesson introduces publishing data in XML format using the optional SimpleXML component of PHP.

For Assignment 7, you will demonstrate competency in XML data publication, and you will deliver your Capstone Project Package.

Lesson Eight: Where to Go from Here? Ajax

This lesson focuses on how to extending your knowledge of current trends in Web Data Integration by covering the newly touted Ajax method. Through the lesson, you'll learn what Ajax is, what it isn't, where its pit-falls are, and how to implement a simple Ajax Application to pull data off a server.

There is no Assignment for this lesson. You will deliver your final Capstone Project Package for the course.

to top

About the Assignments

In addition to the practice exercises (in the textbook and lessons) and the course Capstone Project package, this course has seven graded assignments of three types: : Part 1) Programming Competency Demonstrations, Part 2) Capstone Component Prototypes, and Part 3) Design Documents. Most assignments require only two of the three types.

Part 1: Programming Competency Demonstrations

For you to get an opportunity to work on a server-side programming project, you must first demonstrate your programming competency to a project manager, technical lead, or other hiring manager. Hiring server side programmers is risky for managers since hiring unqualified or poorly prepared programmers can spell disaster for a project and damage the reputations of team members and managers. One way to protect against such risk is to require applicants and other potential team members to demonstrate their competency in specific programming tasks.

The competency demonstration assignments in this course are designed not only to help you practice your server-side programming skills, but also allow you to rehearse demonstrating your competency in each of the programming skills. These competency demonstration assignments help prepare you to enter the professional culture of software project teams.

Part 2: Capstone Component Prototypes

Prototyping means testing or "trying out" a software idea before deciding to include it in the final server side software application delivered by the project team. While competency demonstrations help mitigate the "hiring risk" of hiring you onto a project, component prototyping is a technique for mitigating the "implementation risk" of particular software idea or component in your proposed server side programming solution. Prototypes are used to test and assess ideas that could be useful in the final delivered project. Prototypes are NEVER part of a final delivered project.

The four prototyping assignments require you to try out and practice programming ideas and components before deciding on your design for the course Capstone Project.

Part 3: Capstone Project Design Documents

Several assignments, the Capstone Project proposal, and the portfolio design proposal require you to submit your Design Documents for review and grading by the instructors. Design proposal documents should include brief sections on:

  • Planning (motivation for design, feasibility of using existing components)
  • Analysis (specific requirements, evaluation of existing components)
  • Logical System Design (system architecture to the component level)
  • Detailed System Design (component interface signatures and internal specifications)
  • Work Plan (implementation and testing milestones, and proposed schedule)
  • Risk Assessment

Good design documentation is the key to producing effective technology solutions and stable systems. Your three Design Documents will be evaluated for completeness, coherency, technical feasibility, and risk assessment.

Assignment Submission Guidelines

See the Assignment Submission Guidelines on the "About Your Instructor" page for file naming, late policy, and other requirements.

For Programming Competency Demonstrations, you should prepare and submit for grading a summary document with your name, date, a restatement of the assignment description in your own words, a listing of your commented code, and any problems you encountered doing the assignment. Also be sure to include in the submission document active links (URL's) pointing to any functional Web pages required in the assignment.

For capstone component prototype assignments, you should prepare a summary design document with one or two paragraphs on planning, analysis, logical system design, detailed system design, a listing of your commented code, and any problems you encountered implementing your prototype. Include a short statement of what you learned by constructing the prototype. Be sure to include in the submission document active links (URLs) pointing to any functional Web pages required in the assignment.

to top

Capstone Project

The professional context of this capstone course is to integrate server side database and scripting language technology components into a data driven Web application that has value to a business decision maker. The course culminates in your delivery of a documented, functional Capstone Project, the "Pet Satisfaction Survey." Your professional role in this scenario is that of the Web developer, a key role on the project team.

The Capstone Project is structured to simulate the progression of an actual project from a Web developer's perspective. Design precedes implementation, and design changes are required after original design approval.

In Lesson Five, you will submit your Capstone Project design proposal (see the description of design proposal requirements in the introduction).

In Lesson Six, you will revise your design to reflect a change in requirements and submit an Engineering Change Order (ECO), which is a design document that changes an existing design.

In Lesson Seven, you will submit another ECO reflecting yet another change in requirements from the client.

In Lesson Eight, you will submit the final project deliverable: the Capstone Project Package.

The Capstone Project Package

The Capstone Project Package is the comprehensive project deliverable for the course and has three major components. To satisfy the project requirements, this package should include the following elements of project report and documentation, as well as links to your functioning project Web site:

  1. The Capstone Project Report
    • a paragraph describing your "Pet Satisfaction Survey" project
    • a one-page summary describing what you learned from the course
    • a drawing of your Capstone Project architecture
    • a table with brief descriptions and links to all the Web pages in your project (to the functioning Web site on the course server)
    • a one or two page commentary on the effectiveness (or ineffectiveness) of component prototyping in server-side software system development
    • an appendix containing the project design proposal and ECO's
    • Capstone Project code documentation
    • functional Web site on course server
  2. Project Code Documentation
    • the commented code listings for data collection pages, scripts, and components in your project
    • the schema for your relational database design
    • the data dictionary for your relational database design
    • a table listing name and purpose for all variables in your data collection forms
    • a table showing which HTML form variables are stored in which database attributes
    • the architecture of your solution to the data publication requirements
    • a final list of functional requirements to implement your application
  3. Functioning Web site

"Pet Satisfaction Survey" Project Scenario

The "Pet Satisfaction Survey" project consists of several major components that require you to

  • implement a secure Web-based survey instrument;
  • store individual respondent data in a relational database;
  • provide administrative access to retrieve all the currently valid responses in XML and RSS format.

Note that in the typical business setting, extensive statistical data analysis is conducted on Web survey data. You are not required to perform or provide any data analysis.

As a final note, this course is designed not only to help you develop server-side programming skill, but the capability to coordinate that skill with other professionals as part of a professional team. In addition, we will ask you to demonstrate competency in each of the programming skills before allowing you to work on the final project.

to top

Assessment and Grading

This course is graded on a Credit/No Credit basis. You receive either a Successful Completion (SC) or an Unsuccessful Completion (USC) based on completing all assignments and successfully completing the final project. Failure to complete at least 80% of the final project requirements will lead to an USC grade in the course.

Assessment Criteria

The following table shows the breakdown towards your final grade.

7 Assignments 45 %
Capstone Project Package 45 %
Portfolio Design Proposal 10 %
100%
to top

Study Tips

When you develop Web data applications you will benefit from a broader appreciation of the technology environment than was required when you were doing client side programming. An appreciation of how the complementary technologies (operating system, Web server software, RDBMS, and scripting language) interact to deliver functionality is important for you to be effective in your studies and your career.

Web Designers and Web Developers are detail-oriented individuals who must juggle many tasks and wear many hats. Try compartmentalizing your projects and tasks so that you're not constantly "switching gears" from one type of task to another. Expect to spend at least 8–15 hours on every lesson if you truly wish to get everything you can out of this course.

My advice to you is to complete each lessons reading before attempting the lesson or assignments. Reflect on the reading, perhaps sleep on it, then read over the lesson. Try to see how the lesson fits into the project. Try to see why the class project is a good learning exercise for server-side programming and Web data integration.

View your class project as an opportunity to orchestrate the interaction of several software technologies distributed over multiple machines, not as simply a programming task focused on getting the statement syntax correct.

Do not rush through the material since this often leads to a shallow understanding and ultimately frustration.

Don't wait to do your homework or project work. It can and will pile up quickly.

Good luck!

to top

About the Developer

Lincoln Mongillo is an experienced PHP and Flash developer specializing in fusing coding, interface design, usability, marketing, and business logic to create great user experiences. While in college, he majored in Comparative Literature, which didn't lend itself to hot job markets. Thankfully, Flash 5 was soon introduced, and the world of interactivity on the Web began to open up with new and engaging ideas. In many respects, Flash was a new mode of filmmaking and communication, where he, like the Lumiere brothers, could see a new medium. Lincoln latched on and learned all he could to enter this field. He thought, if Fellini began as a cartoonist, so could he! From a paradigm perspective, ActionScript lead him to JavaScript, and eventually, to PHP and Ruby. It is in this arena, with these languages, that the ability to affect the user experience truly opens up the Web as an informative, interactive environment. Several years on, he's plied his trade as an independent User Experience and Multimedia Developer at Sense Method Media, LLC. While his aim is no longer strongly tied to film, the pursuit to affect and engage people's emotions through media remains. He now works with leading agencies and creative corporate clients, such as Cranium, University of Washington, and Children's Hospital on robust PHP, Flash, and Ajax application conceptualization, architecture and implementation. In his spare time, what little of it there is for a developer, he tends to fail at golf, play soccer, and read.

to top