Instructor: Upsorn Praphamontripong
Office: Rice Hall 206
Office Hours: Monday 10am-11am, Thursday 10am-11am and 3:30pm-4:30pm
Simranjit Bhatia, Emily Camacho, Logan Hylton, Christopher Raley, Ryan Ritzo, Dennis Yang
Daniel Prohaska (peer assistant)
TA office hours are held in Rice Hall or Olsson Hall most days; a schedule will be released soon.
See the office hours tab for more on how to get their help.
We have fantastic teaching assistants for this course. Get to know them!
Our TAs are students too.
Please only contact TAs via Piazza or in person during their scheduled office hours,
do not contact them via email.
Tuesday / Thursday 2:00PM - 3:15PM, Olsson Hall 120
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?
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 demonstrate your competence in web development by
developing 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.
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.
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.
- 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
PHP, XML, JSON, and MySQL
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 or learn on your own.
You are expected to have ability to pace yourself on a semester-long project and
be able to attend class regularly.
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.
You do not have to purchase any textbook for this course,
unless you want to (the book information will be provided on the handout).
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
The lectures may not cover everything in the readings and
will often include material not found in the readings (based on class discussion).
To facilitate your learning process,
the course structure consists of five main activities:
in-class exercises, hands-on activities, homework assignments, quizzes, and final exam.
1. In-class exercises
Three 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, 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 and quality assurance scenarios.
Each exercise is designed to get you to think
about some specific aspect of the material we are learning that day.
All 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 have 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.
If you miss class,
you should do the posted exercise on your own to learn the material.
No make-up or late in-class exercises will be given
You are allowed to miss up to two
(out of twelve) in-class exercises.
The 10 in-class exercises will be used to calculate the final grade.
Please refer to the in-class drop policy
2. Hands-on activities
Hands-on activities serve the same purposes as in-class exercises.
The difference is that they are not graded;
you are not required to submit any activities.
We will do hands-on activities almost every class meeting.
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 some will require programming.
Most will allow collaboration with one partner.
The UVA Honor Code
is in effect:
please refer to the collaboration
sections of the course
Assignments will be posted on the class website
before class and discussed in class.
You will submit your homework assignments electronically to
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
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 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."
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.
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
most Tuesdays and some Thursdays.
No make-up or late quizzes will be given
You are allowed to miss up to two (out of twelve) quizzes.
The 10 quizzes with the highest scores will be used
to calculate the final grade.
Please refer to the quiz drop policy
5. Final Exam
Final exam is comprehensive, closed book/notes/web, in class.
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 notes by the person taking the exam.
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 make-up,
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.
The grade you will earn for this course will be based on
how well you demonstrate your understanding through the following assessments.
- In-class exercises: 20% (lowest 2 will be dropped, no make-ups)
- Homework assignments: 30% (course project)
- Quizzes: 30% (lowest 2 will be dropped, no make-ups)
- Final exam: 20% (comprehensive)
Your overall score will be mapped to a letter grade as follows:
|You get||If 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|
Rounding: By default, grades will not be rounded in this course.
Pass/Fail/Audit: A course average of 65.0% or higher
is required for successful completion.
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.
We will use
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.
Ask all technical questions about the material or the assignments on Piazza.
The sooner you begin asking questions on Piazza,
the sooner you will benefit from the collective knowledge of your classmates
and course staff.
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 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 instructor and all TAs.
Updates to the course web page will generally be noted on the Piazza page.
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
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,
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
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
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.
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
Accommodations do not relieve you of the responsibility for completion of any part
of the coursework missed as the result of a religious observance.
Statement on Violence
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:
- Power-based personal violence will not be tolerated.
- 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 professor 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
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.