JavaScript: from basics to building custom frameworks Sameer Sundresh and Erik Hinterbichler JavaScript is one of the most widely used--and misused--languages on the web today. This tutorial is intended to help experienced programmers quickly become competent JavaScript programmers. The tutorial will first introduce the JavaScript language, and then walk through the process of building custom language features using JavaScript's object-oriented and functional programming capabilities. The tutorial content is inspired by the presenters' own experiences in building rich web applications, and will consider the HCI and development process needs that client-side web languages and frameworks must satisfy. The major topics of the tutorial are as follows. 1. The JavaScript language 1.1 Basics: JS as a C-like language 1.2 OO: the JS prototype-based object model 1.3 FP: JS as a functional programming language 2. Building new language constructs within JS 2.1 Currying, binding, and other simple features 2.2 Class-based inheritance 2.3 A dependency-based module system 2.4 Declarative widgets: using JS to extend HTML Software requirements: the tutorial will be presented using Firefox and Firebug. Attendees who wish to work through the tutorial exercises should install Firefox and Firebug beforehand. All example code and presentation materials will also be available online after the tutorial at http://sundresh.org/talks/defun08/js/ ------------------------------------------------------------------------ Sameer Sundresh is a final-year Ph.D. candidate in Computer Science at the University of Illinois at Urbana-Champaign. His research focuses on the theory and practice of programming languages and distributed systems. Sameer is currently investigating language constructs for expressing the interactions between programs operating at multiple levels of abstraction, and has previously worked on languages and tools for wireless sensor networks. As a complement to his research, Sameer consults with Pattern Insight, Inc. on software architecture. Sameer has held various leadership roles with the University of Illinois ACM student chapter, including Reflections Projections 2005 conference chair, and continues to be involved in corporate sponsorship and recruiting relations. Erik Hinterbichler is currently a software engineer at Pattern Insight, Inc. in San Jose, California. His focus is on human computer interaction (HCI) and user interface design. Erik holds an MS in Computer Science from the University of Illinois at Urbana-Champaign and a BA in Computer Science and Mathematics from Dartmouth College. In college, Erik played as placekicker and punter on the Dartmouth football team, and in his spare time he enjoys playing the cello.