CS2550 Web Programming 1


Dr. Brian Durney
Office: CS520C
Phone: 801-863-6390
Email: bdurney@uvu.edu
Office Hours: M W 11:30-1:00, Tu Th 10:00-11:00

Course Objectives

Upon successful completion of this course, students should be able to:

How to get the most out of this course

The premise for this course is that you learn by doing. In order to reach the objectives listed above you will need to practice doing those kinds of things: designing, implementing, testing and debugging web applications. The more practice you get, the more you will learn and the better you will understand the material. Keep in mind that you cannot learn web programming by sitting in class (or watching videos) any more than you could learn to ride a unicycle by watching someone else ride.

You can think of the programming assignments as a series of tutorials to help you learn JavaScript and web programming. The assignment specifications explain key aspects of the assignments and, in many cases, give examples. Be sure to read the assignments and related notes carefully because that's where most of the learning materials are for this class. That's different from many classes where the material is presented in the classroom or in textbooks.

Although the textbook and notes provide a good background and the assignment specifications explain a lot about the assignments, expect to spend some time searching the web for information. However, if you have read the assignment and the relevant parts of the textbook, and spent a reasonable amount of time searching, you are welcome and encouraged to ask the instructor and your classmates for help.

It's best if you choose a project that is interesting to you, because the more time you spend programming, the more you will learn. The students who learn the most in this class are the ones who go beyond the requirements and make a full-featured web application.


Fundamentals of Web Development, 2nd edition
by Randy Connolly and Ricardo Hoar
ISBN 10: 0-13-448126-7 ISBN 13: 978-0-13-4481265

Lesson Structure

Students should read their UVLink email frequently and check the course web page (http://universe.tc.uvu.edu/cs2550) for announcements. Students will turn in assignments on Canvas.

Email to the instructor should be sent to bdurney@uvu.edu and should have CS2550 in the subject line.

The course is divided up into fifteen lessons. Each lesson has a reading assignment and some notes associated with it. Most lessons also have a quiz and some have a graded discussion question. Quizzes must be done during the lesson week to receive credit. Assignments are subject to change until the week of the associated lesson, so if you work ahead you might need to make some changes to your assignment.


Grades will be based on the following:

Web programming assignments 45%
Final project 15%
Exams 30% (10% each)
Quizzes and online participation 10%

Grading scale:
90% to 92% A- 93% and above A    
80% to 82% B- 83% to 86% B 87% to 89% B+
70% to 72% C- 73% to 76% C 77% to 79% C+
60% to 62% D- 63% to 66% D 67% to 69% D+
   59% and below F   

NOTE: The percentages shown in Canvas aren't necessarily the percentages I use to determine course grades. I post scores on Canvas so that students can check their individual scores, but the percentages on Canvas are not weighed correctly for calculating course grades. Canvas has limited options and doesn't allow me to set up grades the way I do in my spreadsheet.

Web Programming Assignments (45% of final grade):

There will be a number of programming assignments turned in for credit. All assignments are due as specified on the assignment page. Assignments (except for Assignment 0) will be due on Mondays.

Late assignments will lose 10% per calendar day (including weekends and holidays) after the due date. Assignments turned in more than 5 days after the due date will not receive any credit.

I will use a recent version of Safari, Chrome, or Firefox to grade assignments, so please make sure your web applications work in one of those browsers. Also, I will not give any credit for programs with syntax errors or for code that does not produce any observable results.

The assignments page explains how to turn in assignments.

Do not copy someone else's code or files or allow someone else to copy yours. You are welcome, and encouraged, to discuss assignments with others, get help from other students, and so on, but not by showing your code, looking at someone else's code, or working on assignment code together. There are no group projects in this course.

If I find copied code, I will deduct a penalty from the scores of all students whose work contains the copied code, which could result in a score of zero for an assignment. That means that if you let another student read your code you might not get any credit on the assignment. Repeated incidents of copied code will result in more severe penalties, possibly including a failing grade for the course.

Cheating (including copied code) and suspected cheating will be reported to the Office of Student Conduct.

It's important to carefully follow the specifications for programming assignments and the project. Failure to follow the specifications can result in losing points and/or a delay in grading your project. I will not give credit for code that does not produce observable output.

Please check your files before turning them in. If you submit the wrong zip file, forget to include a file, or need to resubmit for some other reason, there will be a resubmission penalty of at least 10%. There is no penalty for resubmitting an assignment before the due date.

Final Project (15% of final grade):

The final project is a web application. Most assignments will require you to write code that will be used in the final project, but you will need to do more for the project than simply finishing all of the assignments. For more information, see the project page.

Quizzes and Online Participation (10% of final grade):

Most lessons will have a quiz. Quizzes will be available on Canvas until the end of the term so that you can use them to study for the tests, but NO CREDIT WILL BE GIVEN FOR QUIZZES TAKEN AFTER THE DUE DATE. You are allowed two attempts for each quiz, with the highest score being the grade for that quiz. All quizzes have a time limit of 30 minutes.

Some lessons will have graded discussion questions or other opportunities for online participation. For each discussion questions I will create a Canvas discussion with an open-ended question and ask you to participate in the discussion by responding to the question. Any relevant, non-trivial post will receive credit, but everyone will benefit more from the discussion if you participate more than the minimum requirement.

Usually one paragraph is a good length for comments in a discussion. Your comments don't need to be written formally, but they should show that you have thought about the issue and have something relevant to say about it. To receive credit, comments on discussion questions must be posted during the week of the associated lesson.

You can also receive online participation credit for answering other students' questions about the lessons and assignments. Please do not post code from an assignment (JavaScript, HTML, or CSS) in your questions or responses. Posting code examples that are not part of an assignment is fine and can often be very helpful.

Exams (30% of final grade):

There will be two midterm exams and a final. Each test will count equally towards the final grade (each test represents 10% of your final grade). Exams may be taken in the testing center on campus or at a prearranged, proctored site. You must take all exams during the examination time period: missed exams cannot be made up. No books, notes, or web resources will be allowed in the exams.

Hybrid and Online Sections

If you are a student enrolled in a hybrid or online section of this course, you have the same content, assignments, projects, exams and due dates as a face-to-face section. However, there are some additional activities and requirements for you to be aware of. These additional activities replace face-to-face classroom contact, with the aim of providing an equivalent educational experience. "There ain't no such thing as a free lunch."

Your instructor will designate some mix of the following face-time-equivalent activities as required in order to pass the course. They may be synchronous or asynchronous activities. See Course Procedures and the Modules page for more details.
1. Watching videos that are relevant to the content being learned in a given week. These may be individually produced, or may be external online content.
2. Attending certain posted hours for video conferencing, or interacting online, either as a group or individually, for instruction and help.
3. Asking, answering or commenting on questions via email or posts in a discussion group (such a Canvas or Slack). Questions may come from the instructor or from other students in the class.

Course Procedures

This section of the syllabus specifies the activities in online sections that are equivalent to activities in face-to-face sections.

Lecture presentations: In place of lecture presentations, online sections have videos, slides, and written notes.

Classroom discussion: In place of classroom discussion, online sections have discussion questions in Canvas. The instructor posts open-ended discussion questions and students respond. In addition to responding to the instructor's questions, students are encouraged to respond to other students' comments or questions.

In-class programming demonstrations: In place of in-class programming demonstrations, online sections have written tutorials, with some tutorials being interactive.

Students are welcome to ask questions and get help by calling or coming in during the instructor's office hours and at other times by appointment, and by email or Canvas message. Students can also make arrangements to ask questions and get help using online communication such as Skype or Google Hangouts.

Course Schedule