CS 4640: Programming Languages for Web Applications
Syllabus — Fall 2017
Syllabus Schedule
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 3:30pm-4:30pm, Wednesday 10am-12pm, Thursday 3:30pm-4:30pm
TA contact
Yuchi Tian, Tuesday 4:30pm-5:30pm and Wednesday 2pm-3pm (Rice 204)
Berkeley Fergusson Tuesday 9am-11am (Rice 108)
Tushar Maharishi, Monday 5:30pm-6:30pm (Rice 204) and Wednesday 4:30pm-6:30pm (Rice 414)
Class hours Tuesday, Thursday 2:00pm - 3:15pm, Mechanical Engr 339
Prerequisite CS 2150
Programming skills are required and students are expected to know HTML and Java or learn on their own.
Overview This course presents the fundamentals of software development of web applications. The front end development, back end development, user interface design, and models for web-based information retrieval and processing are covered. After completing this course, students should understand how to design usable software interfaces and implement them on the web, know how to build software that accepts information from users across the web and returns data to the user, and know how to interact with database engines to store and retrieve information.

Over the semester, students will work on each homework assignment with a partner. Each assignment will be a step in creating a web application. Students will be able to choose what to build, with the assignments constraining the features that must be uesd. By the end of the semester, students will have built a dynamic web application.
Learning outcomes
  • Knowledge of quantitative engineering principles for how to build software user interfaces, especially web-based user interfaces, that are usable
  • Understanding the client-server and message-passing computing models in the context of web applications
  • Knowledge for how to build usable, reliable and effective web applications
  • Theoretical and practical knowledge about how data are stored and shared in web applications
  • Component software development using specific technologies including JavaScript, AngularJS, PHP, Java servlets, Java Server Pages, XML, MySQL, JDBC
  • Understanding that usability is more important than efficiency for almost all modern software projects, and often the primary factor that leads to product success
Reading There is no text book required. Where appropriate, additional references that can be relevant for further reading will be provided.

Students are expected to read the relevant material before lecture. 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.
Grading policies
  • Homework assignments: 30%
  • Quizzes: 20%
  • Participation and discussion board: 5%
  • In-class exercises: 15%
  • Final exam: 30%
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

Rounding: By default, grades will not be rounded in this course
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 a submission site set up for the course (UVa Collab). More details on submission guidelines will be provided on the course website. Posting program source publicly will be considered an honor code violation!

Be sure that you are on the class mailing list, as refinements and hints for the assignments will be sent through email or posted on the discussion boards.

Homeworks must be submitted before class on the day they are due.
Any submission received after this time will be considered to be late. Assignments will be checked immediately after the due date; 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.

Students are expected to have a backup disk (or storage somewhere) for every assignment they 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 readings and assess an individual student understanding of recent topics/skills. They will generally cover material from previous classes. Quizzes 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.
This course will use Piazza for a discussion board. Information for accessing our class will be provided on the first day of class. Participation on the discussion threads will count for 5% of your grade, which you can earn in several ways.
  • 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 (Basic questions are encouraged, but only “interesting” questions will earn credit)
  • Be the first to give a correct answer to a classmate's question
In-class exercises We will often have in-class exercises. They will not be scheduled or announced ahead of time, and most will be graded on a "done / not done" basis. Some exercises will be graded via brief demonstrations to the instructor or TAs. Students are encouraged to work in small groups.
Five-minute papers 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 lecture. This will be graded on a "done / not done" basis and count towards in-class exercises.
Final Exam Final exam is closed book/notes/web. The only exception is a single sheet of 8 1/2 x 11 paper (double sided) with hand-written or typed notes by the person taking the exam. The final is in-class and comprehensive unless specified otherwise by instructor. Appropriate documentation (as determined by instructor) and requisite permissions 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.
Late submission Unless arrangements are worked out in advance, 25% per day will be deducted for late submissions. Assignments are not accepted after two days past the deadline.
Regrading Policy If you are dissatisfied with a grade on a homework, programming assignment, quiz, or exam, you should consult with the instructor directly within a week of the day the graded work was returned to you. No regrade requests will be considered after this week period.
In-class computers
and communication
Phone calls, text messages, instant messages, email, and general web surfing are not allowed during class time. Computers may only be used to follow the material in class. Violators will be asked to close their devices or asked to leave the classroom. Repeat offenders will lose credit on the "Participation" grade.
Email I occasionally send important announcements to your UVA email account, so it is imperative that you read it regularly.

Students must use the UVA email system for all correspondence with the instructor and TAs (using the following email subject format: CS 4640 - insert your subject); if not, we may not notice it.

General assignments or class questions should not be sent through email — in such events, your email will be returned and you will be asked to post your question to the discussion board. In general, the turnaround time for responses to questions will be much quicker on the discussion board. Students should also avoid emailing their code to the instructor unless permission has been obtained (under no circumstances should code be posted publicly to the discussion board).

If you need to contact me via emails, please be aware that I typically answer emails during work hours Monday - Friday, 8:00am - 5:00pm.
Office hours Office hours are times that I commit to being in my office, door open, first come, first served. You do not need an appointment, and no appointments are made. If you cannot make my office hours, then we can try to set up an appointment. I will inform you in class or on the discussion board if I have to miss office hours.
Collaboration Collaboration that is always allowed:

This course requires a significant amount of programming. These things are encouraged and allowed at all times for all students.
  • Discussing material covered in lecture or handouts
  • Discussing the requirements of an assignments
  • Discussing features of any programming language
  • Discussing how to use the tools or development environments
  • Discussing general techniques of coding and debugging
  • Any discussion between the student and TAs, or instructor. You are welcome to discuss any and all ideas, design, code, debugging, and details with us (instructor and TAs).
Collaboration that is allowed if documented:

Students engaging in a more detailed discussion of the project specifics can cross into the area of collaboration that is acceptable only if documented. You must include the name of those whom you received specific assistance from and properly credit their contribution (we will refer to them as your "special helpers"). Documentation guidelines will be given on the assignment pages. Some examples:
  • Discussing the design of the project. Design is a crucial part of the development process, and discussion can be valuable. You are required to document any design input you got from others.
  • Getting help from another student in order to debug your code. You are required to credit their assistance.
  • Sharing advice about software testing. For example, if the team next to you tells you about some lesson learned ("our program did not handle the case where the input files did not end with a newline") that you then use to improve your program's robustness, you must credit them for providing you with that insight.
Collaboration that is NOT allowed:

You should be handling in code which represents your original, independent work. It should not be based on, influenced by, or copied from anyone else's.
  • Copying code: This is the most blatant violation. You should not be copying anyone else's work. You should also not allow anyone else to copy yours. You should keep your work secure (restrict access on the file system, don't leave printouts lying around, etc.)
  • Using work from past semesters: Using someone's work or solutions from a previous semester is an obvious violation.
  • Looking or copying code from the Internet: Looking for similar projects on the Internet and copying the code is a violation.
  • Studying someone else's code: You should not be reading anyone else's code whether it is on the screen or written out by hand.
  • Debugging someone else's code: Debugging along with someone makes it too easy to look over their code and allow (sometimes unintended) code-copying. Describing to someone a problem and asking for advice on how to track it down is fine, but you should do the actual debugging yourself.
Resource usage Under no circumstances should you be copying code from a project written by others found on the Internet or provided by others in other ways. There is no learning taking place in such actions.
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.