Kevin Angstadt
Office: Rice 434
Office Hours: By Appointment
Email: angstadt@virginia.edu
Summer Semester 2017, Session I
Meets: MTWRF 1:00PM–3:15PM
Room: Thornton D115
Enrollment Restrictions:
Students must have completed CS 2150 with a grad of C- or higher.
This course assumes a solid background in programming skills, but does not assume any experience with web programming.
Students may not receive credit for both this course (4640) and the special topics "Programming Languages for Web Applications" (e.g., 4501-003 Spring 2016, Fall 2015).
JavaScript: The Good Parts, Douglas Crockford, O'Reilly Media, 2008. (available for $20 on Amazon [http://a.co/fLlIHqm] and for free on Grounds [Safari Books])
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)
Event/Action | Date |
---|---|
First Class Meeting | 2017-05-15 |
Last Day to Add | 2017-05-16 |
Exam 1 | 2017-05-24 |
Last Day to Drop | 2017-05-25 |
No Class—Memorial Day | 2017-05-29 |
Last Day to Withdraw | 2017-06-02 |
Exam 2 | 2017-06-05 |
Final Project Presentations | 2017-06-09 |
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.
At the end of this course you will be able to:
Develop three-tier web applications using HTML, CSS, JavaScript, PHP, and MySQL
Describe the technologies and approaches used by web browsers and content providers to improve the efficiency of web applications
Quickly find and adapt previously-made resources for web applications
Discuss security and privacy concerns associated with web development and evaluate 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.
Administering Websites
Introduction to web architecture
Configuring a web development and testing environment
Content Display and Styling
HTML5
CSS
SASS
Front End Programming
Interacting with web content through JavaScript
jQuery
AJAX
Data interchange (XML and JSON)
Back End Programming
Programming with PHP
Introduction to Database Design
Integrating PHP and MySQL
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.
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.
Generally speaking, I encourage taking notes by hand. At least one recent study found that students who took notes longhand remembered more and had a deeper understanding of the material. Rather than using slides, I typically take notes on the board, which will help you keep up if you are taking notes by hand.
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.There is no curve in this course.
Your final grade will be calculated as follows. First, the percent of total points you received is calculated and truncated to one decimal point (i.e., not rounded). Then, this percentage is mapped to a letter grade.
Letter | Max | Min |
---|---|---|
A+ | 100 | 97.5 |
A | 97.4 | 92.5 |
A- | 92.4 | 89.5 |
B+ | 89.4 | 86.5 |
B | 86.4 | 82.5 |
B- | 82.4 | 79.5 |
C+ | 79.4 | 76.5 |
C | 76.4 | 72.5 |
C- | 72.4 | 69.5 |
D+ | 69.4 | 66.5 |
D | 66.4 | 62.5 |
D- | 62.4 | 60 |
F | 59.9 | 0 |
Note that there is no "rounding up" to receive a D-.
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.
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.
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, June 8 to receive credit.
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.
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.
Course staff 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.
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!
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.
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.
Examples of appropriate reasons for requesting a regrade include:
You believe your answer to a question matches the answer on the key.
Your answer is different from the key, but is also correct.
There is in error in the summation of points.
Examples of inappropriate reasons for requesting a regrade include:
Your programming assignment works on your computer but not the grading server.
Most of what you wrote on an exam was correct, but you want more partial credit.
You are one point away from an A and are trying to get extra points.
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.
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.
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 is a "living syllabus". Therefore, its contents may be changed throughout the course of the semester 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 instructor (i.e., me), not with this document.
Many ideas for this class were borrowed from similar classes taught at UVA, St. Lawrence University, and George Mason University.