CSE 134B: Web Client Languages

Winter 2017 | University of California, San Diego CSE Department

Course Statement

Web programming is by far one of the most difficult forms of programming facing today's computing professionals. While there are many Web developers, few are truly skilled in the field. A primary reason for this is the sheer number of technologies required to masterfully build a modern Web application. Add to this challenge a common lack of understanding of the delivery, security and even medium of the Web. This class attempts to arm students with appropriate fundamental knowledge to excel in future Web focused pursuits. To appropriately address the study of Web applications we divide and conquer by focusing on client-side and server-side individually, but acknowledge that both are required in any modern site or application. In this class we present a complete overview of client-side Web technologies in light of the role in a complete Web system meaning we must present examples in context with working network or server-side components. To this end we start first base material for context, because without it we are often set on the wrong course. We shift next to the core markup and presentation technologies such as HTML5 and CSS. We continue our exploration by discussing client-side interactivity using JavaScript with a focus on rise of single page applications and their related frameworks. Usability, appropriate user-interface design, network awareness, and security will be a significant emphasis through-out the class and will be an important factor in homework and project grading.

Tentative Schedule

Week 1

  • Jan 9: Introduction
  • Jan 11: Fundamentals, Medium, UX, & IA 1-up 3-up
  • Jan 13: Fundamentals, Medium, UX, & IA 1-up 3-up

Week 2

Week 3

Week 4

Week 5

  • Feb 06: Midterm
  • Feb 08: Review
  • Feb 10: JS 1-up 3-up

Week 6

Week 7

  • Feb 20: Holiday
  • Feb 22: DOM and Events Part 2 1-up 3-up
  • Feb 24: Ajax and HTTP Revisited

Week 8

  • Feb 27: Libraries Gen 1
  • Mar 01: Web App Patterns
  • Mar 03: Client Side MVC - Libraries Gen 2
  • Mar 03: Homework #4 Due 8:59PM

Week 9

  • Mar 06: Service Workers Part 1
  • Mar 08: Service Workers Part 2
  • Mar 10: App Futures

Week 10

  • Mar 13: Performance
  • Mar 15: Security
  • Mar 16: Homework #5 Due 8:59PM
  • Mar 17: Conclusions
  • Mar 20: Final Exam (8-11AM Location TBD)


  • Homework - 45%
  • Midterm - 25%
  • Final - 25%
  • Participation - 5%


The emphasis this quarter will be building a Web application to manage a 'character' collection we will call this application a TopicDex where Topic is the kind of thing you will want to track. For example a PokeDex for Pokemon characters or a SimpsonsDex for Simpsons characters and so on. Your team will get to pick what kind of topic you want to track as long as it is not offensive and design the data criteria managed. The application will have an authentication layer, CRUD (Create,Read Update, and Delete) facilities for record management, simple alerting and will be multiuser based. You will get to use Google Cloud's Firebase technology to implement this project and will have two forms of implementation of the project. The first will be a basic first generation cut using VanillaJS/jQuery and second generation refactor will use VueJS. Students may opt out of the VueJS library in favor of a 100% vanilla solution using an appropriate pattern, but no other libraries will be allowed. Students will be encouraged this quarter to build their application using an offline first pattern employing service workers. To this end some emphasis on performance will be placed throughout all assignments.

Related Textbooks

Other Resources

Contact Information

Prof. Thomas A. Powell

E-mail: tpowell@pint.com
Phone: 858.270.2086
On Campus Office Hours: After lecture every day for aprox. 15mins to 1hr, Wednesday 3-5PM @ TBD and by arrangement
Off Campus Office Hours: By appointment @ PINT Main Office

Teaching Assistants

Kumaran Gunasekaran

E-mail: kugunase@eng.ucsd.edu
Github: kumaran1015@gmail.com (for Github)
Slack Handle: @kumaran1015
Office Hours: Tuesday at 5:00pm (CSE B240A)
Virtual OH: Friday 11:00am - 1:00pm

Vinita Murthi

E-mail: vmurthi@ucsd.edu
Github: murthi.vinita@gmail.com (for Github)
Slack Handle: @vinitamurthi
Office Hours: Thursday at 11:00am (CSE B240A)
Virtual OH: Wednesday 1:00pm - 3:00pm

Sujith Vadakkepat

E-mail: svadakke@eng.ucsd.edu
Github: sujithvm (Github)
Slack Handle: @sujith
Office Hours: Friday at 1:00pm (CSE B260A)
Virtual OH: Monday 11:00am - 1:00pm

Yoshiki Vazquez-Baeza

E-mail: yoshiki@ucsd.edu
Github: ElDeveloper (Github)
Slack Handle: @yoshiki
Office Hours: Monday at 5:00pm (CSE 4217)
Virtual OH: Thursday 11:00am - 1:00pm


Henry Xiao

E-mail: h5xiao@ucsd.edu
Slack Handle: @xiaohenry
Virtual Office Hours: Tuesday 10:00am - 12:00pm

Class Message System