Summer 2022 — Syllabus

Do users look at web apps the way they are? Or do users look at web apps the way they think?
Note: This is an initial course description and may be updated without prior notice.

COVID-19 Course Policy

In this course, we will diligently follow all University policy, while also requesting that we respect and care for each other (and our families).

For now:
  • Although masking is not mandatory, I would like to encourage you, and if at all possible, to please wear a mask in class for the duration of the class meeting
  • No eating or drinking in Thornton Hall D222
General information:
  • Class will be recorded (refer to Class recordings for more information)
  • If you feel unwell:
    • Please stay home, rest, and watch the class recordings; the most importance is your health and everyone's health
    • I will happily work with you — if you stay home — to make sure there is no impact to your grade
  • If you have any questions or concerns before or after class, the best way to communicate with me is via email.

Contact information

Instructor: Upsorn Praphamontripong
Office Hours: (please refer to Collab's Online Meetings)

TA: Owen Richards
Office Hours: (please refer to Collab's Online Meetings)

We have fantastic teaching assistant for this course. Get to know him!

Class meetings

Monday – Friday and one Saturday (18-June), 1:00pm – 3:15pm EST, Thornton Hall D222
(Please refer to the Summer session calendar: Class meets 23-May - 17-June, final exam 18-June)

You are the main driver of your learning success. 
Your engagement and participation is the most important aspect of your learning experience. 
You are encouraged to do all the activities, try all concepts, experience everything 
introduced in this course, ... and do beyond the course's minimum requirements. 
The best way to learn web development is to do it, and do it often. To help you practice  
and maximize hands-on experience, we will do lab-style activities almost every class meeting. 
My current plan is to hold and record synchronous lectures during the official meeting 
times (and you will be able to catch up by viewing the recording). However, you will have 
the best learning experience in the course if you are able to attend the meeting.

Class recordings

My current plan is to record synchronous lectures during the official meeting times and you will be able to catch up by viewing the recording. The recordings will be available under Class Recordings in UVa Collab, accessible by Summer 2022 CS 4640 students and course staff. By default, the recordings will be made available within 24-48 hours after class. If the recordings are unavailable due to technical difficulty or any unavoidable reasons, I will happily work with you to make sure that you do not miss anything.

Per UVA policy on recording of class sessions, the University prohibits the recording of class sessions by students, regardless of purpose or modality. Students are not allowed to record class sessions / meetings / discussions, regardless of purpose or modality. "The University prohibits the recording of class sessions by students, regardless of purpose or modality, unless written permission has been obtained from the instructor, and all students in the class as well as guest speakers have been informed that recording will occur. Instructors may revoke permission at any time, and permission to allow a recording is not a transfer of any copyrights in the recording."


Have you ever wondered how web applications are built? How are data exchanged within web software or between web software? How does the software know where each user left off? What can be done to improve the usability of web software? Many new technologies have emerged everyday.  With what technologies or languages should you be familiar?  How will you keep up with web development technologies?

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 and the number of programming languages 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 should you be familiar with? After graduation, what languages will be popular or in demand? How will you keep up with web development technologies? According to the UVA CS Industrial Advisory Board meeting, 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, 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, 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, hosted on Google Cloud Platform **. With a large portion of the process that involves team work, interpersonal skills and conflict management, and time management, this course will help you practice and prepare for your professional development.

Learning objectives

  • Demonstrate an understanding of the client-server, message-passing computing models, data persistence and sharing, and the quantitative engineering principles for how to build web-based software 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
  • Evaluate your project for compliance with client requirements and the usability evaluation criteria
  • Apply usability concepts to real-life scenarios and suggest potential improvement from an engineer's perspective
  • Apply skills and concepts to learn new web development frameworks, technologies, and languages
  • Collaborate with your project partner professionally and contribute fairly
  • Communicate ideas with others through project demonstration and within a group learning environment


You must have passed CS 2150 (Program and Data Representation) or CS 2501 topic DSA2 with a grade of C- or better, or COVID CR grade.

Please note: the CS student services staff will monitor and remove students not meeting prerequisites in courses in which they are enrolled.

Programming skills are required and you are expected to know HTML or learn on your own.

You are expected to work on a project — deciding on an architecture of your system and implementing a web application that interacts with a database to provide services. While collaborating and developing a full-stack web application in a virtual learning environment within approximately 3 weeks may seem challenging, it is doable; it helps you prepare for the real world scenarios — you must be willing to learn and do it; everyone can be successful in this course.


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 on the Schedule page.

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 (based on class discussion).

Learning activities

To facilitate your learning process, the course structure consists of four main activities: lab-style activities, practice-of-the-days, homework assignments, and a final exam.

1. Lab-style activities

The best way to learn web development is to do it, and do it often. To help you practice and maximize hands-on experience, we will do lab-style activities almost every class meeting.

Five main purposes of this activity are to help you to (i) understand the underlying concepts and apply them to develop a web application, (ii) introduce specific languages or technologies, (iii) get ready to work on homework assignments, (iv) prepare for the final exam, and (v) practice skills web engineers need (such as technical skills, software evaluation, collaboration, and communication).

You are encouraged to work in small groups, allowing peer learning and imitating industrial software development and quality assurance scenarios.

Each activity is designed to get you to think about some specific aspect of the material we are learning that day, experience web development and usability concepts, get started with web development languages or technologies, and explore web-specific features. All exercises are hands-on and practical, and require programming.

You are the main driver of your learning success. Your engagement and participation is the most important aspect of your learning experience. Although no submission is required, you are encouraged to do all the activities. If you miss class, you should do the posted activity on your own to learn the material.

2. Practice-of-the-days (POTDs)

Five main purposes of this activity are to help you to (i) refine your thoughts and reinforce the concepts, (ii) assess your understanding, (iii) get ready to work on homework assignments, (iv) prepare for the final exam, and (v) practice skills web engineers need (such as technical skills, software evaluation, collaboration, and communication).

POTDs help you develop competency in basic and advanced concepts. This activity helps you to reinforce and assess your understanding of the concepts in recent classes. It also gives me an opportunity to work with you on any particular topics or skills that can be improved.

There will be five POTDs. Some will be done in small groups and some will be individual exercises. You will submit your POTDs electronically to UVa Collab. They will be graded on a completion basis. Full credit can only be received if it is complete and submitted by 1:00pm EST the next day.

Due to the time constraint of the summer session, no extension, and no late submission will be accepted.

If you miss class, you should do the posted POTD on your own to learn the material.

3. Homework assignments

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 most will require programming. All will allow collaboration with one partner to help you practice teamworking skills.

The UVA Honor Code is in effect. Please refer to the collaboration and Professionalism sections of the course policies.

Assignments will be posted on the class website and discussed in class. You will submit your homework assignments electronically. More details on submission guidelines will be provided on the assignment pages. Most assignments require demonstration to an instructor or course staff for grading purposes – allowing you to practice your presentation and to "sell" your project.

Homework assignments help you develop competency in basic and advanced concepts. 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. Changing an assignment after the due date without prior permission will be treated as a late submission.

At the end of the Summer session, we will have a "Showtime." 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 discuss your classmates' design and implementation. You may find something interesting from their systems. This is a great opportunity to share ideas and opinions; you may learn something useful for your future projects. The fun part is, we will vote for "the best usable project" and "the coolest project."

For Summer 2022, the Showtime will be done virtually.

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.

4. Final Exam

We will have a take-home final exam. The final exam is individual, with no collaboration. It is comprehensive; open book / notes / course website / class recordings/ IDE; close any form of communication. Details will be provided on the final exam guide.

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. Appropriate documentation (as determined by instructor) is required. If you miss an exam due to a university-accepted excused absence, you must notify me within 24 hours of your absence to make arrangements for a make-up, and submit approved documentation. Failure to follow either of these policies will result in a zero grade on the exam.

Help yourself learn

You will be involved in designing and shaping this course to maximize your learning experience. Please feel free to share your ideas / opinions / suggestions on things that we should do or try to help you learn database systems, using the Help yourself learn form.


The grade you will earn for this course will be based on how well you demonstrate your understanding through the following assessments.

Assessment and evaluation
  • Practice-of-the-days: 25% (5 in-class exercises, 5% each)
  • Homework assignments: 50% (course project)
    • (  4%) Assignment 1: Project proposal
    • (12%) Assignment 2: Client-side — frontend
    • (16%) Assignment 3: Server-side — backend and data persistence
    • (18%) Assignment 4: Final deliverable — frontend and backend
  • Exam: 25% (comprehensive)
Your overall score will be mapped to a letter grade as follows:
You getIf you score
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 or curved in this course.

Cheating/Plagiarism/Professionalism Penalty — up to 100% penalty Excessive missed classes, rude behavior toward course staff (instructor and TAs) or classmates, unauthorized homework assistance, contacting TAs when they are not on the clock, etc., can be held against a student when final grades are calculated.

Discussion board

We will use Piazza for a discussion board. 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. Ask all technical questions about the material, activities, POTDs, or assignments on Piazza.

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 (good or bad 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 handouts 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 all instructors.

Updates to the course web page will generally be noted on the Piazza page.

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, quizzes, 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 (or a quiz) to a student who is currently taking or has not taken it yet. You are not allowed to show exam (or quiz) papers (or copies) to another student or view another student’s exam (or quiz) papers while working on an exam (or a quiz). Sending, 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, as well as a full letter-grade penalty on the course grade. 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

The University of Virginia strives to provide accessibility to all students. If you require an accommodation to fully access this course, please contact the Student Disability Access Center (SDAC) at 434-243-5180 or If you are unsure if you require an accommodation, or to learn more about their services, you may contact the SDAC at the number above or by visiting their website at

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 need counseling services, please contact CAPS.

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.

Religious accommodations

It is the University's long-standing policy and practice to reasonably accommodate students so that they do not experience an adverse academic consequence when sincerely held religious beliefs or observances conflict with academic requirements.

Students who wish to request academic accommodation for a religious observance should submit their request in writing directly to me by email as far in advance as possible. Students and instructors who have questions or concerns about academic accommodations for religious observance or religious beliefs may contact the University's Office for Equal Opportunity and Civil Rights (EOCR) at or 434-924-3200.

Safe environment

The University of Virginia is dedicated to providing a safe and equitable learning environment for all students. To that end, it is vital that you know two values that I and the University hold as critically important:

  1. Power-based personal violence will not be tolerated.
  2. Everyone has a responsibility to do their part to maintain a safe community on Grounds.

If you or someone you know has been affected by power-based personal violence, more information can be found on the UVA Sexual Violence website that describes reporting options and resources available -

As your instructor and as a person, know that I care about you and your well-being and stand ready to provide support and resources as I can. As a faculty member, I am a responsible employee, which means that I am required by University policy and federal law to report what you tell me to the University's Title IX Coordinator. The Title IX Coordinator's job is to ensure that the reporting student receives the resources and support that they need, while also reviewing the information presented to determine whether further action is necessary to ensure survivor safety and the safety of the University community. If you would rather keep this information confidential, there are Confidential Employees you can talk to on Grounds (See The worst possible situation would be for you or your friend to remain silent when there are so many here willing and able to help.

Student support team

If you are feeling overwhelmed, stressed, or isolated, there are many individuals here who are ready and wanting to help. The Student Health Center offers Counseling and Psychological Services (CAPS) for all UVA students. Call 434-243-5150 (or 434-972-7004 for after hours and weekend crisis assistance) to get started and schedule an appointment. If you prefer to speak anonymously and confidentially over the phone, Madison House provides a HELP Line at any hour of any day: 434-295-8255.

If you or someone you know is struggling with gender, sexual, or domestic violence, there are many community and University of Virginia resources available. The Office of the Dean of Students, Sexual Assault Resource Agency (SARA), Shelter for Help in Emergency (SHE), and UVA Women's Center are ready and eager to help. Contact the Director of Sexual and Domestic Violence Services at 434-982-2774.

There are many resources available to you when you experience academic or personal stresses. In addition to your professor, the School of Engineering and Applied Science offers free tutoring, and has three staff members located in Thornton Hall who you can contact to help manage academic or personal challenges. Please do not wait until the end of the semester to ask for help.

Finally, the Center for Diversity in Engineering facilitates free tutoring during the academic year, helps students locate internships and research opportunities, and connects students with the many organizations on Grounds that provide information and support. The center also engages with student organizations, particularly those serving students who are traditionally underrepresented in engineering.

** This course is generously supported by Google by giving us access to their Cloud Platform.
Thanks to Professor Jeff Offutt and Professor Mary Lou Soffa for the input and material provided for this course. Thanks to Professor Hott for the material and server provided. Thanks to Lindsay Wheeler and Brian Helmke for suggestions on course redesign and improvement.

Copyright © 2022 Upsorn Praphamontripong

Released under the Creative Commons License CC-BY-NC-SA 4.0 license.

Last updated 2022-05-12 11:42