CS 4640: Programming Languages for Web Applications
Syllabus — Spring 2018
 Syllabus   Schedule   Project   Policies   Office hours 
Do users look at web apps the way they are? Or do users look at web apps the way they think?

Upsorn Praphamontripong
Office: Rice Hall 206
Email: upsorn
URL: http://www.cs.virginia.edu/~up3f/cs4640/syllabus.html
Office Hours:    Tuesday 12:00pm-1:30pm, Wednesday 11:30am-12:30pm, Thursday 12:00pm-1:30pm, and by appointment
TA contact
Berkeley Fergusson, Rashid Efti Lasker, Tushar Maharishi, Sarah Overton, Qusheng Sun
Class hours Tuesday, Thursday 2:00pm - 3:15pm, Thornton Hall E316
Prerequisite You must have passed CS 2150 (Program and Data Representation) with a grade of C- or better. Programming skills are required and you are expected to know HTML and Java or learn on your own.

While you are required to have programming experience and knowledge of data representation, I am aware that you come in with varied experiences in web development. You will be guided through the fundamental concepts of web development and web programming. You will also have the opportunity to explore modern approaches and technologies in web software development.
Overview The way web software is built has been rapidly changing. As use of the world wide web has shifted from information presentation to information gathering to direct customer sales (e-commerce) to enterprise applications, the amount and complexity of software has steadily been increasing. Many new technologies and frameworks have emerged everyday. Have you ever wondered what technologies, frameworks, or architectural styles you should use? What programming languages you should be familiar with? After you graduate, what languages will be popular or will be in great demand? How will you keep up with web development technologies? Indeed, according to the UVA CS Industrial Advisory Board meeting (held in May 2017), companies prioritize the foundation of web development over any specific technologies or frameworks.

This course will help you see how fundamental concepts of web development can be applied to develop reliable and usable web software regardless of the technologies or languages or frameworks. Although we put our emphasis on the concepts, you will develop dynamic web software with several commonly used programming languages and technologies.

You will work on user interface design, the front end development, back end development, and web-based information retrieval and processing. Over the semester, you will work on each programming assignment with a partner. Each assignment will be a step in creating a web application. You will be able to choose what to build, with the assignment constraining the features that must be used. By the end of the semester, you will have built a dynamic web application.

After completing this course, you will understand and be able to design usable graphical user interfaces and implement them on the web, build software that accepts information from users across the web and returns data to the user in user-appropriate presentation, and construct software that interacts with database engines and several forms of persistent data.
Learning objectives
  • Demonstrate an understanding of the client-server, message-passing computing models, and the quantitative engineering principles for how to build web-based software user interface by developing usable, reliable, and effective web applications
  • Realize that usability is more important than efficiency for almost all modern software projects, and often the primary factor that leads to product success
  • Apply usability concepts to real-life scenarios and suggest potential improvement from an engineer’s perspective
  • Evaluate your project for compliance with client requirements and the usability evaluation criteria
  • Collaborate with your project partner professionally and contribute fairly
  • Develop web software using specific technologies including HTML, CSS, bootstrap, JavaScript, Ajax, AngularJS, PHP, Java EE, XML, JSON, and MySQL
Reading You do not have to purchase any textbook for this course, unless you want to (the book information will be provided on the handout). Where appropriate, additional references that can be relevant for further reading will be provided.

You are expected to read the relevant material before class meeting. The schedule for the readings is given on the Schedule page. The lectures may not cover everything in the readings and will often include material not found in the readings.
Learning activities To facilitate your learning process, the course structure consists of four main activities: in-class exercises, homework assignments, quizzes, and final exam.
In-class exercises Three main purposes of this activity is to help you to (i) understand the underlying concepts and apply them to develop a web application, (ii) introduce specific languages or technologies, and (iii) get ready to work on homework assignments.

You are encouraged to work in small groups, allowing peer learning and imitating industrial software development scenarios. All the exercises are hands-on and practical and most will require programming.

Throughout the course, you will have multiple opportunities to explore the usability of existing web software and share your opinion through discussion and writing. You will also experience a variety of web development concepts.

At the end of some classes, we will have a "five-minute paper." You will be asked to respond in written form to a simple question related to the day's discussion. This is to help you to assess your understanding and allow me to clarify any doubts you might have.

We will do in-class exercises during most Thursdays and some Tuesdays. Most will be done in small groups and a few may be individual exercises. They will be graded on a "done / not done" basis. Credit can only be received if done in class, although if you miss class, you should do the posted exercise on your own to learn the material. You are allowed to miss up to two in-class exercises. The 10 in-class exercises will be used to calculate the final grade.
Homework assignments are the main mechanism to help you learn web software development and apply the concepts to build a portfolio-worthy web application piece-by-piece. Some homework assignments will be written and some will require programming. Most will allow collaboration with one partner. Assignments will be posted on the class website before class and discussed in class. You will submit your homework assignments electronically to UVa Collab. Most assignments require demonstration to TAs for grading purpose – allowing you to practice your presentation and to "sell" your project. More details on submission guidelines will be provided on the assignment pages.

Because each homework is a step toward your course project and your professional development, it is important that you manage your time wisely. All homework assignments must be submitted before class on the day they are due. Any submission received after this time will be considered to be late. If you finish an assignment late, you must inform us (instructor and TAs) by email when it is ready to be graded. Changing an assignment after the due date without prior permission will be treated as a late submission.

At the end of the semester, we will have a station-like project presentation. You will demonstrate how your system works, and explain your design decisions and features that improve the usability of your system. You are encouraged to visit your classmates' stations and discuss their design and implementation. You might find something interesting from their systems. This is a great opportunity to share ideas and opinions. The fun part is, we will also vote for "the best usable project" and "the coolest project."

You are expected to have a backup disk (or storage somewhere) for every assignment you turn in. In this way, if there is any problem with the copy that is handed in the backup can be used for grading purposes.
Quizzes We will have weekly quizzes and no midterm exam. The goals of the quizzes are to reinforce the concepts in recent classes and assess your understanding of recent topics/skills. This also gives me an opportunity to work with you on any particular topics/skills that can be improved.

Quizzes will generally cover material from previous classes. They will be given during the first 10-15 minutes of class on Tuesdays and no makeup or late quizzes will be given. You are allowed to miss up to three quizzes (the lowest three quiz grades will be dropped). The 10 quizzes with the highest scores will be used to calculate the final grade.
Final Exam Final exam is closed book/notes/web. The only exception is a single sheet of 8 1/2 x 11 paper (single/double sided, single/double spaces, your choice) with hand-written or typed notes by the person taking the exam. The final exam is in-class and comprehensive. Appropriate documentation (as determined by instructor) and requisite permissions (approved by the Dean's Office, in particular) are required for make-up exam requests. Picture IDs are required to take all exams.

If you know in advance that you are unable to make an exam for a valid and unavoidable reason (such as a scheduled surgery, etc), you must notify me at least one week before the scheduled exam date to make arrangements for a make-up, and bring documentation with you when you take the make-up. If you miss an exam due to a university-accepted excused absence (such as an illness or car accident the day and time of the exam), you must notify me within 24 hours of your absence to make arrangements for a makeup, and bring approved documentation with you when you take the make-up exam. Failure to follow either of these policies will result in a zero grade on the exam.
Evaluation The grade you will earn for this course will be based on how well you demonstrate your learning.
  • In-class exercises: 20%
  • Homework assignments: 30%
  • Quizzes: 30%
  • Final exam: 20%
Your overall score will be mapped to a letter grade as follows:
A+ >= 98
A   >= 93
A-  >= 90
B+ >= 87
B   >= 83
B-  >= 80
C+ >= 77
C   >= 73
C-  >= 70
D+ >= 67
D   >= 63
D-  >= 60
F    < 60

By default, grades will not be rounded in this course
We will use Piazza for a discussion board. In addition to in-person assistance, this is the place where you can seek help, offer help, share your thoughts and discoveries, or discuss technical difficulties and potential troubleshooting. Information for accessing our class Piazza site will be provided on the first day of class. You may post any reasonable class-related topics.
  • Real-life software problems: Start a discussion about a problem with a real-life web application that is related to our class (usability, design, construction, etc.)
  • Real-life troubleshooting: Start a discussion about your experience, tutorial, suggestion, and troubleshooting that is related to our class
  • Start a thread about an error in the book or slides, or about a topic that goes beyond what we discuss in class
  • Post questions to an appropriate thread and they will be answered by the instructor or classmate
  • Give an answer to a classmate's question
Posting program source code publicly will usually be considered an honor code violation. If you need to include a fragment of your code in your post, please make your post "private" and tag me and all TAs.
Academic Integrity 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. Each assignment will describe allowed collaborations, and deviations from these will be considered Honor violations. If you are in doubt regarding the requirements, please consult with me before you complete any requirement of this course. Unless otherwise noted, exams and individual assignments will be considered pledged that you have neither given nor received help. (Among other things, this means that you are not allowed to describe problems on an exam to a student who has not taken it yet. You are not allowed to show exam papers to another student or view another student’s exam papers while working on an exam.) Send, receiving or otherwise copying electronic files that are part of course assignments are not allowed collaborations (except for those explicitly allowed in assignment instructions). Assignments or exams where honor infractions or prohibited collaborations occur will receive a zero grade for that entire assignment or exam. Such infractions will also be submitted to the Honor Committee if that is appropriate. Students who have had prohibited collaborations may not be allowed to work with partners on remaining homeworks.
SDAC and Other Special Circumstances 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. Students who need academic accommodations should see me and contact the SDAC. All academic accommodations must be arranged through the SDAC. If you have other special circumstances (athletics, other university-related activities, etc.) please contact instructor and/or TA as soon as you know these may affect you in class.


Thanks to Professor Jeff Offutt and Professor Mary Lou Soffa for the input and material provided for this course.