Class:
1 ·
2 ·
3 ·
4 ·
5 ·
6 ·
7 ·
8 ·
9 ·
10 ·
11 ·
12 ·
13 ·
14
Week 1: Introduction and The Basics
Topics:
Introduction to the Class
Web Hardware and Software Basics
Setting Up Your Production Environment
Creating "Hello, World" in PHP
Class Resources:
Class #1 Notes
Weekly Assignment:
Pick a website you admire and write a paragraph about what you like about it. If the site contains elements that you'd like to incorporate into your own projects this semester, please note them as well so we can discuss. Modify your "Hello, World" program to contain your analysis and a link to that website, and submit the url of your script to the class homework submission page (which is linked at the top of this page).
Recommended Reading/Reference:
Web Database Applications with PHP & MySQL
Pages 1-15 (Chapter 1: Database Applications and the Web)
DWD Bookmarks about HTML
DWD Bookmarks about basic UNIX
Week 2: PHP Basics and CGI: Script-Generated Pages
Topics:
PHP Basics, Variable Types, Statements, Examples
Functions
PHP & CGI - Interacting With The Web Server
POST and GET - Obtaining and Parsing Form Input
HTML Form Widgets - An Overview
Sample PHP Template
Basic File I/O
Webpages That Constantly Change
Class Resources:
Class #2 Notes
Class #2 PHP Template
DWD Bookmarks about basic PHP
Weekly Assignment:
Using the Class #2 PHP template shown above, create a web page that changes based upon user input. Please use at least two HTML widgets in addition to your submit button, and use the input from these widgets to create something useful or interesting for the end user. Please try to make your display cohesive by imagining how and why someone might use your web page.
Recommended Reading/Reference:
Web Database Applications with PHP & MySQL
PHP Variables, Operators, Expressions, Logic Flow (pps. 16-36), Functions and Include Files (pps. 45-56), Arrays, Strings and Dates (pps. 57-71, 76-87, 97-103)
Week 3: Database Design, MySQL, and the SQL Language - Part 1
Topics:
Introduction to Databases
Relationship Modeling
Using PhpMyAdmin To Create Your First Table
MySQL Data Types
Basic SQL Commands
Class Resources:
Class #3 Notes
PhpMyAdmin Database Tool
DWD Bookmarks about MySQL
MySQL Reserved Keywords
Weekly Assignment:
The basis of this week's assignment is to create and manipulate a table of your own creation, but also to show what you did and present it in a web page that is created by a PHP script. Thus, all SQL statements that you issue will be documented in your web page, as well as how each statement affected the data in your table. Here are more specific instructions:
- Create a table of your choosing which contains the following columns: an ID column, at least one numeric column (i.e. integer, double, or decimal), at least one string column (i.e. varchar, text, or blob), and at least one date or time column (i.e. date, time, datetime, etc). Show a visual representation of the columns of your table in your PHP-generated web page. You can use the "Print View" link on the PhpMyAdmin "Structure" page and take a snapshot of your table in PhotoShop and present it as an image, or you can cut and paste the HTML from the "Print View" link into your PHP script, or use whatever means necessary to show the structure of your table inside of your PHP-generated web page.
- Using the INSERT statement in the PhpMyAdmin SQL window, create at least 5 records.
- Inside of your PHP-generated web page, list the INSERT statements that were used to create your data set. Then show all records in your table. You can use the "Print View" link on the PhpMyAdmin "Browse" page and take a snapshot of your table in PhotoShop and present it as an image, or you can cut and paste the HTML from the "Print View" link into your PHP script, or use whatever means necessary to show the contents of your table inside of your PHP-generated web page.
- Using the SELECT statement in the PhpMyAdmin SQL window, make at three targeted queries. One should be based upon a numeric column (i.e. where id=5), one should be based upon a text query (i.e. where name='Jones') and one should be based upon a datetime column (i.e. where date>'4/1/2001'). Show each query and its respective results inside of your PHP-generated web page.
- Using the UPDATE statement in the PhpMyAdmin SQL window, change at least one of the records in your table. Show the statement and the new contents of your table inside of your PHP-generated web page.
- Using the DELETE statement in the PhpMyAdmin SQL window, remove at least one but not all of the records in your table. Show the statement and the new contents of your table inside of your PHP-generated web page.
Please try to choose your table columns and queries in some sort of coherent fashion. Think of some data in your life that you'd like to organize (address book, the weather, your CDs, etc), and how you might be able to keep track of it, and to obtain interesting results by querying it.
Recommended Reading/Reference:
Web Database Applications with PHP & MySQL
Chapter 5, SQL and MySQL, Database Basics (pps. 134-138), SELECT statements (pps. 152-160)
Teach Yourself MySQL in 21 Days By Anthony Butcher
Pages 42-46 (Relationship Modeling), 65-83 (Data Types), 109-112 (INSERT), 115-116 (UPDATE), 128-134 (SELECT), 151 (DELETE)
Week 4: Database Design, MySQL, and the SQL Language - Part 2
Topics:
Database Optimization - First 3 Forms of Normalization
Multiple-Table Queries
Advanced Single-Table Queries
MySQL Date and Time Functions
Class Resources:
Class #4 Notes
DWD Bookmarks about MySQL
Weekly Assignment:
Pick a raw data set of your choosing that contains at least 10 records, and normalize it through the three forms of normalization, making sure that the design changes with each step. The design of your raw data set is what will help demonstrate your knowledge of what defines each step of normalization, so choose it carefully. Your design must consist of several tables. Take snapshots of your design at each step and present them in a web page generated by PHP such that we can dissect them in class.
Recommended Reading/Reference:
An Introduction to Database Normalization By Mike Hillyer
Multiple Table Joins @ Wikipedia
Teach Yourself MySQL in 21 Days By Anthony Butcher
Pages 46-49 (Normalization), 127-139 (SELECT Queries), 156-161 (Multiple Table Queries), 188-196 (MySQL Date and Time Functions)
MySQL GROUP BY Functions
MySQL Date and Time Functions
Week 5: PHP Talks to MySQL: The Web to the Database and Back
Topics:
The PHP Interface To MySQL
Practical Considerations on Stage
Common PHP DB Methods
Example Scripts for the Four Main SQL Queries
Favorite Sites Demo
Handling One-To-Many Relationships
Handling Many-To-Many Relationships
Class Resources:
Class #5 Notes
Favorite Web Sites Demo - Submit & Vote
| Source Code
Favorite Web Sites Demo - Submit with Category (One to Many)
| Source Code
Favorite Web Sites Demo - Submit with Tags (Many to Many)
| Source Code
Weekly Assignment:
Create a web page that accepts user input and stores it in a table (or tables) in your database. This page should also be able to display the contents of your table(s) in some interesting way. As always, try to choose your data and functionality in some coherent fashion, paying particular attention to user interface design. Why would someone want to use this little application you've created? Why is it important that whatever activity they have performed be persistent in your database? On a more technical level, this means that PHP will have to perform at least one SELECT query, at least one INSERT query, possibly an UPDATE query, and possibly a DELETE query. However, the functionality of your interface is ultimately more inportant than the range of SQL operations it needs to perform.
Recommended Reading/Reference:
Web Database Applications with PHP & MySQL
Querying MySQL and Formatting Output (pps. 171-183), Processing User Input (pps. 190-197)
PHP/MySQL Documentation
Week 6: Basic PHP Tricks and Bulk Data Population
Topics:
Redirection
Cookies
Session Management & Password-Protected Pages
Sending Simple E-mail
Image Management
Data Population Techniques
Miscellaneous Tricks
Class Resources:
Class #6 Notes
Class #6 Login Demo
| Source Code
Note: To login to the demo, use the username: itpdb and the password: interact
Weekly Assignment:
Your assignment is start working on your mid-term project, which is due Nov 1st. Your mid-term project cannot be a collaborative effort with another student, as each student must show a core proficiency in the basic concepts that have been taught up to now. You will be free to collaborate on your final project if desired. The main technical requirements for the mid-term project are as follows:
- Well-architected HTML front-end demonstrating a firm grasp of form widgets
- Normalized multiple-table database design
- PHP scripting that incorporates error checking, database manipulation, and proper user feedback
Your finished project should consist of the following:
- A description page containing a paragraph explaining your project, and an image screenshot of your database design.
- A working demo. If your demo requires a login to see various functionality, then the login page should either allow for new user registration or indicate a valid username/password combination to login.
- Note: If your demo is not hosted on the ITP Stage server, then please provide links so that I can view the source code to all relevant scripts (re-saving "script.php" as "script.php.txt" and linking to the latter will accomplish this) or email them to me.
Recommended Reading/Reference:
PHP Header Function Reference
PHP Session Handling Functions
PHP Mail Function | Emailing in PHP - Reference
PHP File Upload Reference
Week 7: Advanced PHP Tricks, Intro to MVC & PHP Frameworks
Command-Line Scripting and Using Cron
GD and Image Processing
Intro to Regular Expressions and Form Parsing
Using HTTP in PHP
Object Oriented Design
Web Application Frameworks and the MVC Model
The Favorite Sites Demo as faux MVC Model
Introduction to Codeigniter
Class Resources:
Class #7 Notes
Weekly Assignment:
Your assignment is to continue your work on your mid-term project.
Please be prepared to present your project next week. Also, please make sure that your description page and your working demo link to each other such that you can easily switch between them. Note that if your project isn't functioning properly, it is still far better to submit it than to submit nothing, because we can dissect any problems during class.
Recommended Reading/Reference:
GD Library Reference
Regular Expressions - Perl-Compatible
PHP Curl Library
PHP Reference - Objects and Classes
MVC Metaphor - definition
CodeIgniter Video Tutorials
Week 8: Mid-Term Project Presentations
Topics:
Mid-Term Projects - Each student will present the fruits of the last few weeks of work as their mid-term project. We will spend 5-10 minutes dissecting and learning from each student's demo and database design.
Your finished mid-term project should consist of the following:
- A description page containing a paragraph explaining your project, and an image screenshot of your database design.
- A working demo. If your demo requires a login to see various functionality, then the login page should either allow for new user registration or indicate a valid username/password combination to login.
- If your demo is not hosted on the ITP Stage server, then please provide links such that I can view the source code to all relevant scripts (re-saving "script.php" as "script.php.txt" and linking to the latter will accomplish this). Alternatively, you can email them to me.
Weekly Assignment:
Your assignment is to spend the next few days thinking about ideas for your final project. It can expand on your mid-term project or be an entirely new concept. Create a PHP script that discusses what your final project will be and what type of functionality you expect it to encompass.
Week 9: CSS, The DOM, and Basic Javascript
Topics:
Intro to Cascading Style Sheets (CSS)
Assigning CSS Rules
CSS In Practice
Random CSS Goodies
Introduction to JavaScript
Embedding JavaScript In HTML
The Object Model and Write Method
The Concept of a Function in JavaScript
Popup Windows
Dynamic Element Manipulation
Dynamic Div Display
Interacting with HTML Forms
Embedded vs. External JavaScript
Javascript Frameworks and Intro to jQuery
PHP Writes JavaScript
Class Resources:
Class #9 Notes
Weekly Assignment:
Your assignment is to create a PHP script that uses CSS and basic JavaScript to enhance its visual design and functionality. Pay particular attention to your user interface design, as your use of these technologies should augment your page's capability, and not simply exist just to fulfill the assignment.
Recommended Reading/Reference:
W3Schools CSS Tutorial
CSS Zen Garden
WebMonkey CSS Guide
CSS Property Reference
David Thau's JavaScript Tutorial at WebMonkey.com
JavaScript Tools at Webreference.com
Adventurous uses of Javascript - Bookmarklets, Browser Sniffing, Rollover Menus
Week 10: XML, AJAX, Frameworks and Web Service Basics
Topics:
Introduction to XML
PHP Writes XML
AJAX (Asynchronous JavaScript and XML)
Using jQuery for AJAX and Data Transfer
Google Maps
Introduction to JSON
jQuery and JSON
Web Services and Flickr (images)
Web Services and YouTube (videos)
Web Services and Twitter (status)
Class Resources:
Class #10 Notes
Weekly Assignment:
Your assignment is to create a PHP script that uses Javascript to interact with a web service API. Please feel free to use a Javascript framework to handle the parsing of web service data and to streamline the display process.
Recommended Reading/Reference:
Head Rush AJAX by Brett McLaughlin
The book website has on-line demos with source code downloads
AJAX Tutorial at W3Schools
Ajax Programming at Wikipedia
XMLHttpRequest API at Wikipedia
jQuery Official Site | jQuery Documentation
Google Maps Documentation
Flickr API Documentation
YouTube API Documentation
Twitter API Documentation
Week 11: Web Service Integration, Mashups, Geocoding, and Facebook Apps
Topics:
Providing a Web Service
Web Service Integration in PHP
Using the jQuery UI Library
Anatomy of a Mashup
Introduction to Geocoding
The Facebook API
The Twitter API
URL Rewriting and Friendly Links
Class Resources:
Class #11 Notes
Weekly Assignment:
Your assignment is to start or continue working on your final project.
Recommended Reading/Reference:
Dennis Crowley's Geocoding Notes
Yahoo Developer Network
Yahoo Music API
Yelp
Yelp API Overview & Getting Access
Yelp API Documentation
Yelp Examples
Mashups on programmableweb.com
Facebook
Facebook Developers Start Page
How to Build an App
Facebook Official PHP Client Library
Facebook Developer Documentation
DWD Bookmarks about Apache web server
Week 12: Interfacing with Flash; Intro to Amazon Web Services; Going Mobile
Topics:
Introduction to Flash
Flash-Only Interaction
Flash/PHP Interaction - The PHP Side
Flash/PHP Interaction - The Flash Side
Flash/PHP Example Movies
Favorite Sites Demo - Revisited
Flash, XML, and Dynamic Widget Population
Flash and JSON
Introduction to Amazon Web Services (AWS)
Creating a Mobile Version of a Web App
Class Resources:
Class #12 Notes
Download All Flash Demo Movies in ZIP format: Flash CS3 (5.69MB)
| Flash CS4 (5.04MB)
Weekly Assignment:
Your assignment is to continue working on your final project.
Recommended Reading/Reference:
ActionScript.org
Flash Developer Center
Lessons, tutorials, and documentation courtesy of Macromedia
Week 13: Final Project Workshop
There is no official class on this date, as time will be devoted to personal attention to your final projects. Booking one-on-one time is optional, and is for students who could benefit from the personal help. The times for help are:
- Tues, Dec 6, 12:30pm-3pm in Rm 50
Please use the DWD Workshop Page:
http://itp.nyu.edu/~cs220/dwd/hw/workshop.php
to reserve times. Simply enter your Net ID in whichever time slot is convenient and click "Book It!". Help sessions are in 15 min intervals, but may run longer or shorter depending on each student's needs. The schedule is more of a guideline as to the order in which we will individually meet.
If you need to cancel or change a slot for any reason, simply e-mail me and I'll free that time period in the workshop page for someone else.
Final project presentations will be the last
day of class, Dec 13th at the usual time, 12:30pm-3:00pm.
Week 14: Final Project Presentation
Topics:
Final Projects - Each student will present the fruits of the labor during the latter part of the semester. We will spend 5-10 minutes dissecting and learning from each student's demo and database design.
Your finished final project should consist of the following:
- A description page containing a paragraph explaining your project, and an image screenshot of your database design. If your project was a collaborative effort with another student, please note the functionality for which each student was responsible.
- A working demo. If your demo requires a login to see various functionality, then the login page should either allow for new user registration or indicate a valid username/password combination to login.
- If your demo is not hosted on the ITP Stage server, then please provide links such that I can view the source code to all relevant scripts (re-saving "script.php" as "script.php.txt" and linking to the latter will accomplish this). Alternatively, you can email them to me.