00 Course Overview
03 Sept, 2014
CSCC09F
Programming on the Web
Instructor: Alan Rosselet
Office: IC-494
E-mail: rosselet @ cdf toronto edu
[Link]
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
00 Course Overview
03 Sept, 2014
the Web as Development Platform
Why has the Web become the most popular platform for
deploying applications?
ubiquitous browsers every computer, smart phone and tablet is a
potential client, billions of potential users!
efficiency / reuse write-once deploy-everywhere (almost)
code always up to date, no installation / patching overhead
app debugging facilitated by complete (runtime) data access
UI-design issues greatly simplified
native support for massive-scale collaboration (e.g. social nets)
the most effective platform for mobile apps (arguable)
There are some gotchas though:
although the Web is based on standards, these are not uniformly
implemented, so the ideal of write once, deploy everywhere is not
quite achievable in practice
offline-use still presents challenges; HTML5 adds support for it
01 - World Wide Web
CSCC09: Programming on the Web
CSCC09
00 Course Overview
03 Sept, 2014
Characterizing Programming on the Web
you already know how to
program, so whats different
with Web programming?
coordinating large cast of
characters (languages, tools) to
build a compelling app more
like a system than a program
most of these characters are
moving targets, constantly
evolving
debugging complicated by
code hidden beneath layers
benefit from hardware and O/S
independence, but not always
browser independence
00 - Course Overview
CSCC09: Programming on the Web
on the client side you will experience:
a somewhat unusual programming
language (JavaScript) and new kinds
of data (Web docs expressed e.g. as
XML, HTML, HTML5, JSON)
a different style of programming:
event-driven powerful, but can
be hard to debug
reliance on external data/resources
(requests from the Web)
on the server side youll need to worry
about: server setup/config, databases,
sessions with users, concurrency,
interaction with other systems,
security, performance and scalability
CSCC09
00 Course Overview
03 Sept, 2014
Learning Outcomes
Develop working (experience-based) understanding of
concepts, principles, and practices underlying todays Web
understand whats going on behind the scenes on both
client and server, as well as in between (on the net),
and how it all fits together
you will know what youre talking about
develop the competence to build commercial-calibre
Web applications, using standards-based technologies
that are widely used in industry
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
00 Course Overview
03 Sept, 2014
Learning Outcomes: Competencies
create Web documents with reasonable styling using
standards-based markup languages
develop realistic Single-Page App (SPA) using a client-side
framework to support:
rich application behavior, including event handling and
incremental updating from network resources (Ajax)
implement RESTful API on the server side, through
interaction with a persistent data store such as a DB
use of 3rd-party Web service(s) to build an app
awareness of security vulnerabilities of Web apps and
mitigating steps
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
00 Course Overview
03 Sept, 2014
Learning Outcomes: Developer Skills
improve ability to apply: incremental/agile
development, debugging , refactoring
learn to work with complex system requirements that
may not precisely specify every detail of what you are
required to implement and for which there is no specific
solution (as in the real world)
increase self-sufficiency in mastering new technologies
we will rely on many technologies to build Web sites,
and not all can be covered in complete detail
gain experience working as part of a programming team
(optional, but encouraged)
sense of accomplishment - to counterbalance hard work
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
00 Course Overview
03 Sept, 2014
Themes for this Term
Single-page Apps (SPAs) and inversion of control
Leveraging frameworks to organize client-side code
RESTful Web services
HTML5
Security matters!
Reference-able experience
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
00 Course Overview
03 Sept, 2014
Whats New/Different this Term?
Previous iteration of C09: Chrome browser,
jQuery, most business logic implemented with
MVC Java Servlets/JSP/JDBC, MySQL DB
This iteration:
client-side takes over responsibility for most
business logic: JavaScript, SPAs, MV*, jQuery,
Backbone framework, Underscore library
server-side RESTful APIs implemented using
[Link], noSQL DB (Mongo)
Uncharted waters surprises lie ahead!
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
00 Course Overview
03 Sept, 2014
Technology Coverage
Static Client Content
Dynamic Client Content (Web 2.0, RIA, SPAs)
JavaScript, DOM, jQuery, forms, Ajax, JSON, MV*, Backbone,
Underscore, Bootstrap
Dynamic Server Content
(X)HTML, CSS, HTML5, XML, DTD*, XSL with Xpath*, i18n*
HTTP, CGI, [Link] server, Mongo DB, RESTful Web Services,
SOAP-Web-services (time permitting), Java-based servers (time
permitting)
Operational Concepts
network protocols (esp. HTTP), Web servers, concurrency, security
(SSL, HTTPS, XSS and CSRF attacks)
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
00 Course Overview
03 Sept, 2014
Preparation
CSCB09: systems-oriented topics such as tar files, file
permissions, s/w installations
not rocket science, but easy to get tripped up by little mistakes
CSCC43: database design, schemas, SQL query language
no prior knowledge of Web technologies is
assumed (not even HTML!)
but prior experience helpful
typical class has wide range of expertise, so if this is
your first time working with Web technologies dont
feel as though you are the only newb
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
12
10
00 Course Overview
03 Sept, 2014
References
Textbook (see course info sheet for details)
recommended not required
Web Programming Step by Step, 2nd Edition, Stepp et
al, 2012
"Programming the World Wide Web", 4th Edition,
Robert Sebesta, Addison-Wesley, 2008
background reading, another perspective, review
Lecture handouts (see lectures Web page)
Other references
some will be listed for you on the course Web site,
many from [Link]
others you will discover on your own:
online references, tutorials, examples, etc.
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
13
11
00 Course Overview
03 Sept, 2014
Evaluation
3 programming assignments (cumulative 40%)
this is a programming course, with many technologies
to master (plan to budget sufficient time)
a1 (15%): XHTML, CSS, JavaScript, DOM, jQuery,
Backbone, Ajax, JSON
a2 (15%): [Link], Mongo DB, Concurrency, Sessions,
secure authentication
a3 (10%): RESTful Web Services, Ajax, security
details posted on assignments Web page
mid-term test (20%)
final exam (40%)
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
14
12
00 Course Overview
03 Sept, 2014
Assignment Policies
you may develop assignment solutions with (at most) one
other student read the policy on collaboration from the
Course Information Sheet posted on the course Web site
pair programming pros and cons
an assignment cover sheet must accompany all
submissions (submit at course drop box IC-Building
4th floor); without a signed cover sheet your assignment
will not be marked
late submit policy: see the Course Information Sheet
posted on the course Web site.
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
15
13
00 Course Overview
03 Sept, 2014
Assignment Preparation
assignments are submitted and marked on the
[Link] Linux system, using submit command
can do all work in UTSC labs
can work at home as well, via remote login to UTSC server
or use your own server. In the latter case:
pro:
convenience, good systems-oriented learning experience
con
additional setup and configuration
extra effort and risk to shift your solution to the mathlab
reference environment and to test to ensure everything works
properly in that environment - NO EXCUSES !
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
16
14
00 Course Overview
03 Sept, 2014
Conduct of the Course
Lectures
background, conceptual explanations, high-level examples
Tutorials
assist with the practical aspects of completing assignments
more technology details; more complicated, worked-out
examples
step-by-step instructions on how to get necessary
technologies up and running
Lectures and tutorials not always in sync tutorials may have
to sprint ahead to deliver info you need for assignments
before lectures catch up
00 - Course Overview
CSCC09: Programming on the Web
CSCC09
17
15