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