Course Staff

Instructor

Kevin Angstadt
Office: Rice 434
Office Hours: MWF 3:30-4:30, Rice 436
Email: angstadt@virginia.edu

Teaching Assistant

Yuchi Tian
Office: Rice 532
Office Hours: TTh 10-11, Rice 436
Email: yt8mn@virginia.edu

Course Information

Summer Semester 2016, Session II
Meets: MTWRF 1:00PM–3:15PM
Room: Thornton D222
Enrollment Restrictions:

Required Textbooks

A Software Engineer Learns HTML5 JavaScript & jQuery, Dane Cameron, Cisdal Publishing, 2014. (available for $15 on Amazon [http://amzn.com/1493692615])

Hacking with PHP: Learn to create websites using PHP 7 and MySQL, Paul Hudson, 2016. (available for $20 on Gumroad [https://gumroad.com/l/hwp-book-pack])

(Additional readings will be provided on the course website, where appropriate)

Important Dates

Event/Action Date
First Class Meeting 2016-06-13
Last Day to Add 2016-06-14
Exam 1 2016-06-22
Last Day to Drop 2016-06-23
Last Day to Withdraw 2016-06-30
No Class—Independence Day 2016-07-04
Exam 2 2016-07-05
Final Project Presentations 2016-07-09

Course Overview and Goals

From the course catalog:

This course presents programming languages and implementations used in developing web applications. Both client and server side languages are presented as well as database languages. In addition, frameworks that enable interactive web pages are discussed as well as formatting languages. Language features and efficiencies including scoping, parameter passing, object orientation, just in time compilation and dynamic binary translation are included.

Have you ever wondered how YouTube is able to store and suggest videos that might interest you, or how sites such as Twitter and Facebook can display new posts without needing a page refresh? Are you so fed up with SIS that you're tempted to write your own interface? Or perhaps you've always wanted to build a social media site for people to trade their chocolate frog cards. You may one day find the need to (or be instructed to) build a website for a particular project to which you contribute. Programming Languages for Web Applications will provide you with the tools and knowledge necessary both to understand how modern, three-tier websites function and also to build your own interactive sites. By the end of the course, you'll be able to build the chocolate frog card trading website of your dreams.

This course has the following goals:

  1. Introduce students to three-tier web development and develop proficiency in creating each layer

  2. Introduce students to the technologies and approaches used by web browsers and content providers to improve the efficiency of web applications

  3. Develop proficiency in quickly finding and adapting previously-made resources for a particular application

  4. Encourage students to consider security and privacy concerns associated with web development and introduce tools and approaches to test and protect websites

Topics in this course are split into four units. A rough ordering of topics is presented below, but is subject to change.

  1. Administering Websites

    • Introduction to web architecture

    • Configuring a web development and testing environment

  2. Content Display and Styling

    • HTML5

    • CSS

    • SASS

  3. Back End Programming

    • Programming with PHP

    • Introduction to Database Design

    • Integrating PHP and MySQL

  4. Front End Programming

    • Interacting with web content through JavaScript

    • jQuery

    • AJAX

    • Data interchange (XML and JSON)

Attendance

Students are expected to attend each class meeting. Absences will leave holes in your understanding of course concepts. Keep in mind that missing one class during the summer session is equivalent to missing two consecutive classes during a normal semester. If you must miss a class, you are expected to make up the material on your own time before the next class.

Laptops

Students are requested to bring a laptop to every class. While not required, we will be developing code together during many class meetings. Having a laptop in class will allow you to gain more hands on experience. Students are expected to remain on task in class (no excessive web browsing, social media usage, etc.), as per the professionalism policy. If you have any concerns about this request, please contact me outside of class, and we will work together to find an appropriate solution.

Grading

Final grades are based off of a cumulative point system. The grade breakdown will roughly be 33% exams, 33% homework and reading quizzes, and 33% project.

Exams

There will be two, one hour exams to check your mastery of tools and concepts in this class. Some of these exams may require the use of a computer. If a student is unable to provide their own computer, please notify me 24 hours prior to the exam, and I will arrange for a loner machine. Make-up exams will not be given for absences unless pre-approved by the instructor, a note from a medical professional is provided, or in extreme circumstances.

Reading Quizzes

There will be a short quiz associated with each reading assigned for class. The purpose of these quizzes is to help students retain information for quick recall during web development projects and to help maintain a steady pace of material during class meetings. Quizzes will be available online and must be completed prior to the start the following class meeting. There is no limit on the number of times a student may take a reading quiz before the deadline. Excluding special circumstances, reading quizzes may not be taken after the deadline has passed. Two (2) points will be awarded for a perfect score, and one (1) point will be awarded for correctly answering three quarters of the questions correctly. In total, the final reading quiz grade will be roughly equivalent to a single homework assignment.

Homework

Programming assignments will be due every two or three days. These exercises are intended to give you practice using the tools and concepts presented in class. Unless otherwise noted, all assignments are due by 11:50 PM on the day listed to be eligible for full credit. Points will be deducted for late assignments, and all assignments must be submitted 11:50 PM on Thursday, July 7 to receive credit.

Collaboration:

You may discuss the assignments with your classmates, but you may not share code. You may only submit work that you have personally written and understood.

Resources:

You may consult your class notes and the assigned reading materials to help with your assignments. Since one of the goals of the course is to effectively reuse collective knowledge, you may also reference web resources (please read below about citations). Note, however, that you may not submit a third party tool that performs the tasks specified in a given assignment. If a third party tool is allowed to be submitted in partial completion of the assignment, permission will be provided explicitly in the assignment text.

Both the TA and I will be available to answer questions during office hours. If you would like help, bring code with you and prepare specific questions. We will not help you write your code from scratch (part of the learning process is experimentation), but we are more than happy to provide guidance if you run into trouble.

Citations:

For all assignments, you must submit a file citing all of the resources (excluding class notes, and assigned readings) you used to complete the assignment. This includes (but is not limited to) conversations with peers, web resources, and additional books. Additionally, submitted code should be commented to indicate lines influenced by all resources (including class notes and assigned readings). Failure to appropriately cite resources will be considered a breach of the honor policy and will be dealt with as described in this document. If, at any point, you are unsure about the citation policy, ask. Your grade is not affected by the number of resources you cite; I will not be impressed by low or high citation counts. Use the resources you need to complete the assignments!

Project

At the end of the course, you will develop a substantial web application using the tools and techniques you learn during the course. More details will be provided as the course progresses.

Regrading Policy

Requests for an assignment regrade must be made to the instructor within one week of the assignment being returned to the student and by the final day of classes. Any requests submitted after this may be done at my discretion. I reserve the right to regrade the entire assignment, which may result in either an increase or a decrease in your grade. This is not intended to scare off students, but to avoid frivolous requests.

Below are example, appropriate reasons for requesting a regrade:

Academic Integrity and Professionalism

The School of Engineering and Applied Science relies upon and cherishes its community of trust. We firmly endorse, uphold, and embrace the University's Honor principle that students will not lie, cheat, or steal, nor shall they tolerate those who do. We recognize that even one honor infraction can destroy an exemplary reputation that has taken years to build. Acting in a manner consistent with the principles of honor will benefit every member of the community both while enrolled in the Engineering School and in the future.

Students are expected to be familiar with the university honor code, including the section on academic fraud (http://www.virginia.edu/honor/what-is-academic-fraud-2/). Plagiarism detection will be used on work submitted for this class. Deviation from specified collaboration and resource usage policy will be considered honor code violations. If in doubt, the best option is to ask for clarification! Violations will result in a grade zero on the implicated assignments, and serious violation will result in failure of the course. Honor code violations will be submitted to the Honor Committee when appropriate.

Students are also expected to act in a professional manner for the duration of the course. This includes (but is not limited to): staying on task during lectures, being respectful of others, and promptness for class and deadlines. Unprofessional behavior will result in a reduction of the student's final grade.

Accommodations

If your learning or participation in this course may be affected by a disability or any other factor, please talk to me early in the session so that we can arrange appropriate accommodations. I will do my best to ensure that everyone can learn effectively.

If you have been identified as an SDAC student, please let the Center know you are taking this class. If you suspect you should be an SDAC student, please schedule an appointment with them for an evaluation. I happily and discretely provide the recommended accommodations for those students identified by the SDAC. Please contact me one week before an exam so we can make accommodations.

If you have other special circumstances (e.g., athletics or other university-related activities), please contact me as soon as you know these may affect you in class.

Research

Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Any student who wishes to opt out can contact the instructor to do so after final grades have been issued. This has no impact on your grade in any manner.

This Syllabus

This syllabus may be changed throughout the course of the session to address changing needs. I will do my best to notify students of changes; however, it is up to the student to monitor this page for any changes. Final authority on any decision in this course rests with the professor, not with this document.

Many ideas for this class were borrowed from similar classes taught at UVA, St. Lawrence University, and George Mason University.