CompSci 290
Spring 2021
Web Application Development

Meetings

This course is being held completely online and Zoom call information is posted on Sakai in order to protect course security.

You will also be expected to do a significant amount of reading, coding, and debugging outside of class time.

We are excited to bring you the best learning experience we can collaboratively — so we will try to adjust how the course works in response to feedback from students, UTAs, and those who are helping to deliver course content at Duke.

Teaching Team

Professor Duvall

Professor Robert Duvall

  • rcd AT cs DOT duke DOT edu
  • Office Hours: Tuesdays and Wednesdays 1-3pm
  • Drop-in policy: We encourage you to make an appointment via email
Executive in Residence Dennis Quan
  • dquan AT cs DOT duke DOT edu
  • Office Hours: Mondays and Wednesdays, 8:45am-9:45am
  • Drop-in policy: We encourage you to make an appointment via email
Graduate TA Zetao Yu
  • zy107 AT cs DOT duke DOT edu
  • Office Hours: Saturdays 4-6pm
  • Drop-in policy: We encourage you to make an appointment via email
Undergraduate TAs
  • Holly Ansel
  • Eric Doppelt
  • Jaidha Rosenblatt
  • Matthew Sclar
  • Vatsal Varma

If you have a personal or administrative concern, email is the best way to contact the Teaching Team. When using email, please put CompSci 290 at the start of your subject line to help ensure that your email gets past our spam filters and is delivered correctly. If you send us an email and do not get a response within 24 hours, we probably did not receive it. In general, you should only email us about administrative aspects of the course; questions about course content are better made using the course Discussion Board since it is seen by more people.

Our goal is simple: to help you learn — both inside and outside the classroom experience. We hold office hours regularly for the purpose of helping you, either one-on-one or in small groups. No matter how busy we may look, during office hours, you have priority over everything else. If you cannot make the Teaching Team's office hours, please use email to set up an appointment.

If you have any questions or concerns, we want to help do not put off asking.

Books

Most of the readings assigned during the semester will be excerpts from books or online articles. However, many students also like to use a reference book about advanced programming topics, so the books listed below are optional. We have curated a lot of information, but the books below are rather complete in their coverage.

JavaScript Programming

In general you should do the readings in order to be prepared to ask and answer questions during class time. Time will be given for you to ask questions about the reading but it is intended to be an extension of the reading, not a summary.

Grading

This project-based course covers the development of interactive web applications. During the first part of the semester you will have a number of small homework assignments, starting with simple web pages and moving onto increasingly complex apps. The end of the course will focus on a larger project, in which you will design and implement a substantial dynamic web site of your choice as part of a project team. At the end of the semester you will demonstrate your web site to the Teaching Team.

Grading is done on an absolute, but adjustable scale. This means that there is no curve and thus need to compete with your fellow classmates. Anyone earning 90% or more of the total number of points available will receive a grade in the A range; 80% or more guarantees a grade in the B range, 70% or more guarantees a grade in the C range, 60% or more guarantees a grade in the D range. This scale may slide down, but it will not go up.

Quizzes 20%
Programming projects 40%
Final Project 40%

The final project is a larger group project that will be completed by 2-3 students and must be submitted before the course's scheduled exam time, Wednesday, April 28 at 7pm. Since this project will be built in stages, it will not be possible to change your final project groups once they have been chosen.

The programming projects will provide a lot of room for you to express some creativity and go beyond the basic specification. To earn an A grade on these projects, you must do more than merely meet the requirements, you must go beyond them. In order to earn an A+ you must do several optional parts of assignments and exceed expectations in general. Note, any extra credit features that you add will not be counted unless you get the basics working first.

Turning Assignments in Late

All programming projects are expected to be completed by pushing your code to the course Gitlab organization by the end of the day given as the due date (i.e., 11:59:59pm).

Due dates are there to provide milestones and space out work such that you do not fall behind or get overwhelmed; however, we understand that sometimes "life happens" and you may need extra time to work on a project. So if you find that is the case, please complete this form to request a one day extension. All requests received at least 24 hours before the deadline will be granted no questions asked, otherwise a late submission will incur a 25% penalty. This policy is intended to provide stress relief, but also to encourage you learn to be proactive in taking responsibility for your time management.

Projects will not be accepted more than 24 hours late except for significant medical reasons or other circumstances beyond your control that must be presented with an official Dean's excuse. Extensions will not be granted after an assignment is due.

If you find yourself chronically turning assignments in late or falling significantly behind, talk to one of the Teaching Team immediately. It is important that you do not get behind in this class, its pace is too fast and the later material builds on the previous material. The secret to successfully surviving this course is to start early and work steadily; it is not possible to cram or skim in Computer Science classes. If you are having trouble, be sure to talk to the professor as far before the due date as possible. Do not give up, ask for help.

Diversity

This course is committed to Duke's Commitment to Diversity and Inclusion. Moreover, beyond the diversity listed in this statement, we believe this class should be inclusive to all students such that they feel the class is a secure and supportive learning environment.

Disabilities

This course is committed to providing equal access to students with documented disabilities. Students with disabilities may contact the Student Disability Access Office (SDAO) to ensure equitable access to this course. There you can engage in a confidential conversation about the process for requesting reasonable accommodations both in the classroom and in clinical settings. Please note that accommodations cannot be provided retroactively.

Collaboration Policy

All quizzes and programming programming projects are expected to represent your individual effort (except the final team project).

In accordance with the Duke Community Standard, we encourage proper collaboration, in which all parties equally participate, on programming exercises. Studying together is always encouraged, especially when preparing for quizzes or learning the material. At other times you may be assigned to work in a group, in which there will be only one submission for the entire group that represents your collective effort.

You are encouraged to use resources on the Internet to help you learn the course material or solve very specific issues within your programming projects. It is not acceptable to search for direct answers to the programming problems or copy more than 5 lines of code from a single source. Any code you copy directly from any Internet source must be attributed in your comments. You are responsible for understanding all work you turn in. For any given assignment, code may be checked for cheating using an automated tool or an interview may be included as part of the graded work. During the interview, you may be asked to explain the problem solving process and individual lines of code not given as part of the assignment. Turning in code that you cannot explain is considered cheating.

You may consult with the Teaching Team about any aspect of the course. On programming projects you may consult with other students only in a general way, e.g., about debugging, programming concepts, or questions about wording on the assignment. You cannot actively work with someone else unless the assignment specifically grants permission for you to do so. It is never acceptable to directly show another student your code or write one program among a group and submit multiple copies.

Consult means you can discuss programs in a general way before writing code and get help with debugging your program, but you must write your own code and do your own thinking about the problem. For each project you are expected to include a list of the people with whom you have consulted (including any other students and the Teaching Team) in the README file you submit with the assignment. You should also cite any resources other than class materials you use (e.g. web pages, notes from other courses at other universities, etc.). This file is required and failure to provide it will result in rejection of the assignment as complete.

If you are not sure what the collaboration policy is for a given assignment, please ask!

Computing Requirements

All programming projects should be written in standard, validated, HTML, CSS, and JavaScript, using Git Version Control.

Access to and on-going use of a computer on which you can install software.

Online Course Information

Web Site (https://www.cs.duke.edu/courses/spring21/compsci290/). Many of the materials for this course, including the syllabus, class notes, reading assignments, projects, and other resources, will be available through this course web site.

Discussion Board (http://piazza.com/class#spring2021/compsci290/). You should regularly read and contribute to the course discussion board as it is a useful place for posting questions that are likely to be of interest to the rest of the class. You are encouraged to post responses to questions as well as ask them. The discussion board will be monitored regularly and responses posted to questions that have not previously been answered. Before posting a question, please make sure that you have read all previous messages and that your question has not yet been discussed.

Email. Please check your email regularly, as important course announcements may be sent via email.