GUI and Web Programming



Similar documents
INTERNET PROGRAMMING AND DEVELOPMENT AEC LEA.BN Course Descriptions & Outcome Competency

This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.

Developing ASP.NET MVC 4 Web Applications MOC 20486

Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013

An introduction to creating JSF applications in Rational Application Developer Version 8.0

Framework as a master tool in modern web development

Web Cloud Architecture

Developing ASP.NET MVC 4 Web Applications

Whitepapers at Amikelive.com

10CS73:Web Programming

Google Web Toolkit. Introduction to GWT Development. Ilkka Rinne & Sampo Savolainen / Spatineo Oy

Programming in HTML5 with JavaScript and CSS3

Developing ASP.NET MVC 4 Web Applications Course 20486A; 5 Days, Instructor-led

IT3503 Web Development Techniques (Optional)

Syllabus INFO-UB Design and Development of Web and Mobile Applications (Especially for Start Ups)

AJAX. Gregorio López López Juan Francisco López Panea

Implementação. Interfaces Pessoa Máquina 2010/ Salvador Abreu baseado em material Alan Dix. Thursday, June 2, 2011

IT3504: Web Development Techniques (Optional)

Business Application Development Platform

General principles and architecture of Adlib and Adlib API. Petra Otten Manager Customer Support

4 Understanding. Web Applications IN THIS CHAPTER. 4.1 Understand Web page development. 4.2 Understand Microsoft ASP.NET Web application development

Rich-Internet Anwendungen auf Basis von ColdFusion und Ajax

Computer Science Course Descriptions Page 1

HTML5. Turn this page to see Quick Guide of CTTC

Web Frameworks. web development done right. Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.

Advantage of Jquery: T his file is downloaded from

The Learn-Verified Full Stack Web Development Program

Generating Test Cases With High Branch Coverage for Web Applications

ICAPRG409A Develop mobile applications

Designing The User Experience AIGA Design Camp

Oct 15, Internet : the vast collection of interconnected networks that all use the TCP/IP protocols

ni.com Remote Connectivity with LabVIEW

Adding Panoramas to Google Maps Using Ajax

Next Generation Lab. A solution for remote characterization of analog integrated circuits

IBM Digital Experience. Using Modern Web Development Tools and Technology with IBM Digital Experience

Credits: Some of the slides are based on material adapted from

Computer Science. Computer Science 207. Degrees and Certificates Awarded. A.S. Computer Science Degree Requirements. Program Student Outcomes

A Tool for Evaluation and Optimization of Web Application Performance

CrossPlatform ASP.NET with Mono. Daniel López Ridruejo

Introducing Apache Pivot. Greg Brown, Todd Volkert 6/10/2010

Extending Desktop Applications to the Web

Server-Side Scripting and Web Development. By Susan L. Miertschin

JavaScript: Client-Side Scripting. Chapter 6

Computer Science. Computer Science 213. Faculty and Offices. Degrees and Certificates Awarded. AS Computer Science Degree Requirements

Course Descriptions. preparation.

Syllabus INFO-GB Design and Development of Web and Mobile Applications (Especially for Start Ups)

Title: Front-end Web Design, Back-end Development, & Graphic Design Levi Gable Web Design Seattle WA

Course Name: Course in JSP Course Code: P5

Visual WebGui for ASP.NET Ajax (and other Ajax) Web Developers Learn what makes Visual WebGui not just another Ajax framework

Google Web Toolkit. Progetto di Applicazioni Software a.a. 2011/12. Massimo Mecella

Software Development Interactief Centrum voor gerichte Training en Studie Edisonweg 14c, 1821 BN Alkmaar T:

Pentesting Web Frameworks (preview of next year's SEC642 update)

Web Applications Testing

AJAX Toolkit Framework

OIT 307/ OIT 218: Web Programming

An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0

Art of Code Front-end Web Development Training Program

Computer and Information Sciences

Upgrade to Microsoft Web Applications

Modern Web Development From Angle Brackets to Web Sockets

JavaFX Session Agenda

Facebook Twitter YouTube Google Plus Website . o Zooming and Panning. Panel. 3D commands. o Working with Canvas

Load Testing Ajax Apps using head-less browser tools. NoVaTAIG April 13, 2011 Gopal Addada and Frank Hurley Cigital Inc.

MA-WA1920: Enterprise iphone and ipad Programming

Course Descriptions. CS 101 Intro to Computer Science

This Record of activity confirms that Jonathan Scrase has completed the following courses within the Microsoft Virtual Academy:

Accelerating Wordpress for Pagerank and Profit

Chapter 13 Computer Programs and Programming Languages. Discovering Computers Your Interactive Guide to the Digital World


Information Systems Analysis and Design CSC John Mylopoulos. Software Architectures Information Systems Analysis and Design CSC340

Kentico CMS 5 Developer Training Syllabus

Software Requirements Specification For Real Estate Web Site

ERIE COMMUNITY COLLEGE COURSE OUTLINE A. COURSE NUMBER CS WEB DEVELOPMENT & PROGRAMMING I AND TITLE:

Brief Description of project: This project will be an interactive Javascript. 1. What do you want to accomplish by doing this project?

A Survey Study on Monitoring Service for Grid

Web Development. Owen Sacco. ICS2205/ICS2230 Web Intelligence

JUG Münster. Modern Java web development. Thomas Kruse

AUTOMATED CONFERENCE CD-ROM BUILDER AN OPEN SOURCE APPROACH Stefan Karastanev

Web Apps The Next Generation

Example. Represent this as XML

Introduction to web development and JavaScript

Term Paper. P r o f. D r. E d u a r d H e i n d l. H o c h s c h u l e F u r t w a n g e n U n i v e r s i t y. P r e s e n t e d T o :

Integration the Web 2.0 way. Florian Daniel April 28, 2009

Taking Advantage of Digi s Advanced Web Server s Repeat Group Feature

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application

Learning HTML5 Game Programming

Certified Selenium Professional VS-1083

Web Development with R

JavaScript Programming

BRIAN RUSSEL DAVIS. New Media Programming, Design & Concept Development. Summary

Building Rich Internet Applications with PHP and Zend Framework

WEB DEVELOPMENT COURSE (PHP/ MYSQL)

Transcription:

GUI and Web Programming CSE 403 (based on a lecture by James Fogarty)

Event-based programming

Sequential Programs

Interacting with the user 1. Program takes control 2. Program does something 3. Program asks for userinput 4. Userprovides input

The user as a file 1. Program takes control 2. Program does something 3. Program asks for file input 4. File provides input The user is abstracted as a file (named STDIN)

Event-driven Programming User can provide input at anytime User actions generate events mouse click/scroll/move, hover, key press, resize Event = type + button/position + target

Event Queues

Event Queues How many event queues are there in modern desktop GUI environments? How can we tell without knowing the implementation details? What are the implications?

Interactive Software Loop

Keyboard, mouse, touchpad, accelerometer dispatch_event(e)

dispatch_event(e) Handlers (callbacks) are installed to register interest in some event type Dispatch notifies all handlers Also known as Publish/Subscribe, Observer

Model-View-Controller (MVC) (See CSE 510 slides; p22-31)

GUI Toolkits Reduce time necessary to create a UI Ready-made UI elements, events Windows Forms, GTK, QT, Cocoa, Swing, Web pages! (more on this later)

Typically, in a GUI Toolkit Model backed by database, objects in memory, files View/Controller is merged Visual output based on tree of UI elements and their properties

Simple UI

Less-simple UI

Painting UI elements Each UI element (component) is responsible for drawing itself and its children Typically event-based void OnPaint(GraphicsContext g) //paint myself for (child in this.children) { child.paint(g); } }

When to paint? The application does not decide! UI toolkits keep track of screen damage Toolkit will call paint() as necessary to fix damage to the bitmap Delegation of this greatly simplifies GUIs

How does damage happen? By external (transparent) events Mouse cursor, hidden window, overlap By dirtying part of the UI component tree Component.invalidate() will damage the area occupied by the component, causing later repaint.

Routing user input/damage For mouse input, known as hit testing Maps from an active pixel to a UI element For keyboard input, focus management The element in focus receives keyboard events Delegation strategies vary per framework

Web (client) Programming

HTML / CSS HTML = hypertext markup language A language for structuring and marking up documents in a semantic way Similar to LaTeX, PostScript

JavaScript Dynamically-typed scripting language Prototype-based object system Highly flexible and dynamic Transmitted only in source form

DOM / CSS DOM = document object model The abstract syntax tree of HTML Large API interacting with document tree CSS = cascading style sheets Properties for DOM nodes based on pattern matching

HTML + JavaScript + DOM A GUI toolkit, with some catches DOM serves as model, view, and controller Event handlers written in JavaScript Visual output derived from DOM node props No paint method!

Demo: Web page DOM as HTML AST Tree structure DOM node -> visual output CSS matches on DOM nodes Assembled from many pieces Damage => recompute styles, layout

Demo: Web application User input generates events Event handlers installed per DOM node Incremental repaint of damaged area Assembled from many pieces dynamically

AJAX? Asynchronous JavaScript and XML Supports loading JavaScript asynchronously As opposed to forcing <script> load Event/callback based

JavaScript Libraries? jquery, Prototype, Scriptaculous Advantages: Remove a lot of boilerplate DOM code Alternate, browser-consistent API Disadvantages: Difficult to debug a large library Difficult to reuse code that uses one library

Pros and cons of web applications Pros: Nothing to install, just need conformant browser Easier to configure dynamically Effortless software update Cons: HTML/JS/DOM not intended for stateful apps Usually requires internet connection Less control over user experience

Web (server) Programming Can be implemented in any language Popular: PHP, Ruby, Java, Python, Perl Web application does not care who speaks Load balancing, proxies, firewalls All communication via HTTP requests GET, POST, (PUT, DELETE) Static resources and application requests

Web (server) Programming Each request is handled in isolation But application itself must be highly concurrent, parallel to serve many users Step 1: Decode user request Step 2: Do something Step 3: Send response to user

Web (server) programming Architecture and protocols still fluid As always, many frameworks exist to ease application development Deserves its own lecture but.. Probably best to go read the web!

Bonus: Research Research at all points touching the web: Debugging Domain-specific languages Application architecture Testing Performance Security HCI