CS Department Header

CSc 337 - Web Programming > Lectures

Lecture Videos Lecture videos can be found one of two places:
  1. iTunes U: log in as a student, then find Computer Science and CSc 337.
  2. Connect to lectura.cs.arizona.edu with your CS username and password, then navigate to /cs/coursevideos/spring12/cs337/videos to find the actual video files.

Introduction to Web Programming
1/11/2012 Course Overview

Syllabus review. How web software compares to traditional software.

1/13/2012 Introduction to HTTP

Explanation of the Hypertext Transfer Protocol. Difference between GET and POST. Interactive examples.

Resources: Further Reading:
1/18/2012 Life of a Request

More details about HTTP. Basic web request handling. Setting up and using your class server account.


1/20/2012 Intro to HTML

Introduction to HTML pages. What tags look like, what a simple document looks like, what HTML is and is not for.

1/23/2012 Intro to CSS

Intro to Cascading Style Sheets. What CSS is used for (as opposed to HTML), basic CSS syntax, selectors, a few properties.

1/25/2012 CSS Layouts

Float layouts, absolute/relative/fixed positioning, other various CSS features.

1/27/2012 Forms

First steps towards interacting with your users. Basic form elements, validation via HTML5, general principles when using forms.


1/30/2012 Introduction to JavaScript

A quick overview of JavaScript as a language. Strings, objects, arrays, functions, dynamic typing, etc.

Resources: Further Reading:
2/1/2012 Introduction to the DOM

The document object and some of the interfaces it provides.

2/3/2012 More DOM

The window object and more DOM things. innerHTML, textContent, etc. Debugging JS.

Resources: Further Reading:

2/6/2012 Introduction to PHP

How a server-side language like PHP fits into the web application stack. Code examples.

2/8/2012 PHP: Language fundamentals

Crash course in PHP. Types, variables, arrays, control structures.

Resources: Further Reading:
2/10/2012 PHP: Interacting with data

URL's. GET and POST data in PHP.

2/13/2012 PHP: Session handling

Sessions. How they work conceptually, how to start and use them in PHP.


2/15/2012 Intro to Databases

What relational databases are, basics on how to design them.

2/17/2012 More database design, intro to SQL.



PHP + MySQL = Web Applications
2/20/2012 Introduction to PDO

PDO for interfacing with MySQL from PHP. How to put together a web application. Example app: blog.

2/22/2012 More SQL

UPDATE, DELETE FROM, COUNT(), and GROUP BY in MySQL. Example app: bookmarking site.

2/24/2012 Uploading Files

How to allow users to upload files to your site (think enctype="multipart/form-data") and how to handle uploaded files with PHP (remember the $_FILES array). Basic precautions to take when working with arbitrary files from users.


2/27/2012 Introduction to AJAX

How to communicate to the server using JavaScript and the XMLHttpRequest object.

2/29/2012 Adding AJAX into a web application

Using XMLHttpRequest to get information from PHP. Encoding with JSON.

3/2/2012 Designing web applications

Thoughts on splitting up server/client functionality. Using window.history to create more seamless user experience.


JavaScript Libraries
3/5/2012 Introduction to JavaScript libraries

What common JS libraries are used for. Introductory jQuery and History.js.

3/7/2012 AJAX, more JavaScript libraries

Review of AJAX. How to build an AJAX application piece-by-piece. An assortment of JavaScript libraries and plugins.


3/19/2012 Introduction to Web Security, Password Storage

Web security and why it is important. General concerns and approaches. How to store passwords using salting and hashing.

Resources: Further Reading:
3/21/2012 SQL Security

Demonstration of SQL injections. How to prevent them and how to mitigate attack danger through smart user permissions.

Resources: Further Reading:
3/23/2012 File upload security

Review of how to handle file uploads. Upload concerns, whitelisting over blacklisting as a concept (and using regular expressions to handle it), MIME types and MIME type inference by some browsers.

3/26/2012 Cross-Site Coding

How to make AJAX requests across domains using the Access-Control-Allow-Origin and Access-Control-Allow-Credentials headers with the XMLHttpRequest.withCredentials flag. How cross-domain requests can be forged and how those forgeries can be detected using canaries.

Resources: Further Reading:
3/28/2012 Cross-Site Scripting (XSS)

What cross-site scripting is, how to protect against it. Examples of both non-persistent and persistent vulnerabilities.

Resources: Further Reading:
3/30/2012 Case studies, clickjacking

Other ways to prevent or mitigate XSS attacks (hosting on other domains, browser XSS auditing). Case studies of high-profile web security failures and subsequent attacks. Brief demonstration of clicjacking.

4/2/2012 Public-key cryptography and SSL

How SSL/TLS is used to secure communication channels between your computer and a website. Basic principles of public key cryptography.

Resources: Further Reading:

Other Topics
4/4/2012 DNS, Hosting a Web Site

How hostnames are resolved to IP addresses. How to set up a web site (registrar, hosting). Comparison of hosting types.

4/6/2012 Other Servers

Apache: a few features and some of its limitations. Thinking about handling HTTP requests more abstractly and discussion of other web servers that encourage that approach.

Resources: Further Reading:
4/9/2012 Long-polling and WebSockets

Avoiding redundant polling, first with long-polling and then with AJAX.

4/11/2012 Drag-and-drop, File API

Drag and drop in web applications. Dropping files and reading them in the browser.

4/13/2012 Local storage, session storage, client-side SQL

Storing data long-term in the browser. Why it's useful, how to do it.

4/16/2012 Templating and template engines

How to separate display logic from application logic using templating systems. Brief overview of Smarty, briefer overview of Underscore.js templates.

4/18/2012 JavaScript as a language

What goes on under the hood in JavaScript. Function-level scoping, call and apply, closures, objects, and prototypical inheritance.

Resources: Further Reading:
4/20/2012 Caching

HTTP caching, CDNs, memcached.

Resources: Further Reading:
4/23/2012 Mobile browsers, etc.

Degradable AJAX. How to detect mobile browsers, how to style pages differently based on browser size and/or device size.

Resources: Further Reading:
4/25/2012 Other database options, speeding up MySQL

Brief mention of other database solutions for specific purposes such as Cassandra, Solr/Lucene. Detail on how to write more efficient queries and how to use indexes in MySQL to speed queries up.

Resources: Further Reading:
4/27/2012 HTML5 Grab Bag

contentEditable, geolocation, video/audio, semantic markup, microdata


View source