CSC309H1Y: Programming on the Web (Summer 2016) Instructor: Office Hours:

Katie Seaborn, [email protected] Tuesdays from 4-5pm, BA 3219

TAs

Rachel Franz, [email protected] Jeff Wintersinger [email protected] Mohammad Danesh [email protected]

Class Schedule: Lecture Location: Lab Locations:

Mondays from 6-9pm (May 9th-August 15th, 2016) BA 1200 BA 2145 (Rachel), BA 2155 (Jeff)

Course Website: http://www.cdf.toronto.edu/~csc309h/summer/ Discussion Forum: http://piazza.com/utoronto.ca/summer2016/csc309/home/ MarkUs: https://markus.cdf.toronto.edu/csc309-2016-05/

Course Description: This course provides an introduction to the technologies and techniques used when developing modern web applications. We discuss web fundamentals, interoperability of languages, technologies for static and dynamic content generation, interactivity, application architectures, and mobile-supported, responsive web development. We also cover design principles, security, and web performance. Learning Objectives: This course has three main learning objectives: 1. Understand how to define and explain protocols, concepts, and technologies that enable web applications. 2. Develop the ability to analyze, design, and implement web applications that accommodate specific requirements and constraints with regard to issues of usability, performance and security. 3. Learn how to work as part of a team or individually to explore relevant alternatives and make design and development recommendations.

CSC309

1

Prerequisites: CSC343 is recommended but waived as a prerequisite. Students who don’t have CSC209 need to show experience with developing programs of significant size. Method of Instruction: In-person, in-lab lecture-based instruction and labs/assignments. Students are strongly recommended to bring their own laptops for lab work; no computer labs are available inside of class hours. Recommended Readings: While not required, these readings recommended as supporting materials and/or key sources for the latest web-related news, tips, and technologies. Textbooks

Web Sources

Documentation

Web Programming Step by Step (Marty Steep, Jessica Miller and Victoria Kirst)

Smashing Magazine

W3C

A List Apart

W3Schools

CSS-Tricks

jQuery API

Awwwards

Node.js API

Learning Web App Development (Semmy Purewal)

Grading Schedule: To pass the course, you must achieve a minimum grade of 40% or higher on the final exam. This means that if your grade on the final exam falls below 40%, your final grade in the course will be capped at 40%. Deliverable

Approach

Weight

Out

Due

Assignment 1: HTML & CSS

Individual

10%

Week 1

Week 3

Assignment 2: JavaScript & Canvas

Pair

10%

Week 3

Week 6

Assignment 3: Web Service

Individual

10%

Week 6

Week 8

CSC309

2

Assignment 4: Large App, Part 1

Group of 4

5%

Week 8

Week 10

Assignment 4: Large App, Part 2

Group of 4

20%

Week 10

Week 12

Lab/Participation

Pair

10%

Weekly

End of lab

Final Exam

35%

Week 14

Grading Policies: Assignments will be posted on the course website. Deadlines are fixed; no extensions will be allowed. Submit through MarkUs: All deliverables must be submitted online through MarkUs. All assignments are due 11:59pm on their due date. Submit early to avoid last minute submission-related problems, which will not excuse tardy submissions. Emailed submissions will not be accepted unless MarkUs is down. Late coursework: You can turn in your assignment up to 2 days late, but this will cost you 10% of the maximum grade for every day you are late (i.e., an assignment turned 2 days late can get a maximum of 12/15). No assignment will be accepted after the 2nd day; you will receive a grade of 0 for that assignment. If you are struggling with an assignment, talk to the instructor or the TAs for help well before the deadline. Re-marking: You have up to 5 days from the time the marked assignment is available for pick-up to ask the TA for a re-mark. No assignment will be remarked after this period. Only re-mark requests submitted through MarkUs will be accepted. If you are still dissatisfied after talking to the TA, then email the instructor to set an appointment. Cheating/Plagiarism: The policy of your faculty or school will be in effect. While you are encouraged to discuss the course content and assignments with your classmates, all work that you submit must be your own. When you submit an assignment with your name on it, you are certifying that you have done the work on that assignment yourself. Remember that the penalty for cheating is always worse than handing in the assignment late.

CSC309

3

Communication Policies: If you have a question, check the course discussion forums to see if it’s already been asked and answered. If not, feel free to post your question—you will likely get a quicker response on the forums. If you think your question is not appropriate for the forums, feel free to email the instructor. If you do, make sure that you include “CSC309” in the subject line of your email. Otherwise it may get lost in the churn. Teamwork Policies: Some assignments require partner- or group-based work. Distribution of work: In the readme file submitted with each assignment, briefly indicate who contributed to what. If two or more people worked on the same part, provide a percentage indicating each person’s relative contribution. Self and peer assessments: For assignments involving pairs or teams, each student must privately fill out and individually submit a self and peer assessment document through MarkUs. A template can be found on the course website. Conflicts: Students are encouraged to resolve conflicts on their own whenever possible. However, if you find yourself in a delicate situation and are unsure how to proceed, please contact myself or one of the TAs well ahead of assignment deadlines and we will help mediate. Course Schedule: W

Date

Topics

Lab

Deliverables

1

May 9

Introduction; HTTP; HTML(5) + CSS(3)

Lab 1: “Hello World [Wide Web]” and Version Control with Github

NEW: Assignment

Lab 2: Web Development Tools; Responsive Design

2

May 16

Page Layout; DOM; Responsive Design with Media Queries

3

May 23

Holiday; no classes

CSC309

1:

HTML & CSS

DUE: Assignment

1 (Wed @ 11:59pm)

4

W

Date

Topics

Lab

Deliverables

4

May 30

JavaScript; HTML5 Canvas

Lab 3: HTML5 Canvas

NEW: Assignment

5

June 6

jQuery; Node.js; AJAX; XML + JSON

Lab 4: jQuery

6

June 13

REST API; Databases; ER-db-design

Lab 5: jQuery, AJAX + XML

2: JavaScript & Canvas

DUE: Assignment

2 (Wed @ 11:59pm) NEW: Assignment

3:

Web Service 7

Jun 20

React.js; Express.js; Database Schema (Mongo)

Lab 6: jQuery+ UI

8

June 27

HTML Forms; Form Validation; Sessions + Cookies

Lab 7: Node.js + Databases

Web Architectures; Web Security: Part 1

Lab 8: HTML Forms

Web Security: Part 2

Lab 9: Web Security

9

July 4

10 July 11

DUE: Assignment

3 (Wed @ 11:59pm) NEW: Assignment

4: Large Web App, Part 1

DUE: Assignment

4,

Part 1 (Wed @ 11:59pm) NEW: Assignment

4: Large Web App, Part 2 11 July 18

CSC309

Guest Speaker: Adi Sharma (RBC); Performance; Cloud Computing; SEO

No lab; attendance mark goes towards guest speaker

5

W

Date

12 July 25

Topics

Lab

Deliverables

Web Search Engines; Advanced Topics; Going Live

Assignment 4 (Part 2) troubleshooting

DUE: Assignment

No lab

Final Exam (date TBD)

13 Aug 1

Holiday; no classes

14 Aug 8

Student Demos of Assignment 4

4,

Part 2 (Wed @ 11:59pm)

Resources: The mailing list archives can be accessed here: https://wwwcgi.cdf.toronto.edu/~csc309h/summer/archives/ The Peer and Self Evaluation form can be found here: http://www.cdf.toronto.edu/~csc309h/summer/docs/A_NUM-PeerAndSelfEvalYOURLASTNAME_YOURFIRSTNAME.docx

CSC309

6