CSC325 2010F, Class 01: An Introduction to the Course Overview: * What is a Web Application, Anyway? * The Evolving Architecture of the Web. * The Evolving Architecture of Web Applications. * Goals of the Course. * Resources. * Student Introductions. Admin: * Because of Jeff Leep, the course web is in alpha stage, and will remain so for the next few weeks. * As many of you have noted, one of our textbooks has not been published yet. We'll work through that issue. * Two non-listed textbooks will be distributed in class. If you decide you want your own copy, they are available cheaply online. * I won't discuss a lot of the syllabus because (a) many of you know my basic policies anyway, (b) students rarely remember syllabus details, and (c) it's all on the Web anyay. * Don't forget CS Table today at noon in the Day PDR. * Don't forget Happy Days this weekend. What is a Web Application, Anyway? * A program that is loaded off of the server and then run completely in the browser that performs a specific task + Or perhaps there is a dialog between the browser and the server * What triggers the communication between browser and server? * Old model: Click on links, fill in forms, click on buttons Each time you do something, we go to the server to load a new page * Newer model: Asynchronous communication * What's the difference between synchronous and asynchronous * Under asynchronous communication the client continues to do other work while waiting for a response * Lots of folks do it\ * You can see Digg continuing to update * Google Docs would not work with the traditional synchronous model * Newer model: Partial updates: A round-trip message may affect just a part of the page, rather than bringing up a whole new page * Two very different perspectives * Traditional server model - Each transaction is a new page, and most of the code lives on the server * Modern app model - Most of the code lives on the client, lots of asynchronous partial updates * Three issues * An application (program) * Run with client server model * Within the browser / web The Evolving Architecture of the Web. * Original architecture: Tim Berners-Lee * See now-erased whiteboard * Flaws in this model * No inclusion of streamed data * Work is on the server - Find and send document * Security: The model seems to be "Anyone can access any document". Is that really what we want? * Solutions: * Security: Client needs to be sandboxed * Only one model of interactivity * No model for programs running on the server * Solution 1: Server plugins * Solution 2: Server-side scripts * Requires that we add something like forms to HTML * And a way to transmit that information to the server (HTTP)a * And that we change the server to run these scripts * No model for programs running in the browser * Java model: An application that runs within a web page on the browser * JavaScript: Smaller scripting of Web pages * No state model * Makes keeping track of the conversation hard * And when the user clicks "back", you are in deep trouble * Which is why Datahell reports so many errors * No P2P * Fortunately, each of these flaws has been addressed in some way or another The Evolving Architecture of Web Applications. * Mostly server-side scripting with a pure dialog model * Written in general purpose programming languages * Then languages designed for scripting appeared (still dialog model) * PHP * The libraries for scripting * Libraries combined into Web Application Frameworks * Drupal * Plus all the client-side stuff + AJAX Goals of the Course. * Every CS major (and some other people) needs experience building a large application as part of a team * The Web is one of the main application models, so some students will want to learn that * And you can't learn the Web w/o learning about databases * "Get your hands dirty" * Along the way, we'll learn lots of concepts about design in the large and in the small Technologies you will learn * Apache (basics) * PHP (Server-side Web scripting language) * HTML, CSS, DOM * Javascript (basics; client-side scripting language) * AJAX * Drupal * MySQL (database) Resources. Student Introductions.