COMPSCI 326 Web Programming

Syllabus

Description

The World Wide Web was proposed originally as a collection of static documents inter-connected by hyperlinks. Today, the web has grown into a rich platform, built on a variety of protocols, standards, and programming languages, that aims to replace many of the services traditionally provided by a desktop operating system. Topics will include: producing dynamic content using a server-based language, content serving databases and XML documents, session state management, multi-tier web-based architectures, web security, and core technologies including HTTP, HTML5, CSS, JavaScript, and SQL will be emphasized. This course will also study concepts and technologies including AJAX, social networking, mashups, JavaScript libraries (e.g., jQuery), and web security. This course is hands-on and project-based; students will construct a substantial dynamic web application based on the concepts, technologies, and techniques presented during lecture. This course satisfies the IE Requirement. You must be a junior or senior to take this course. 3 credits.

Textbooks and Material

This course does not require any books. Because of the ever changing nature of the web we will instead rely upon currently material that is freely available on the web including software documentation, blog posts, tutorials, etc. Links to the reading will be providing on a weekly basis.

Course Objectives

  • To learn the nature of the web.
  • To understand the structure of the Internet and the Web.
  • To study the general notion of protocols.
  • To understand the TCP/IP protocol and understand its use in the web.
  • To understand and apply the HyperText Transfer Protocol (HTTP).
  • To study and apply the HyperText Markup Language (HTML).
  • To explore the Document Object Model (DOM).
  • To understand and apply asynchronous and event-based programming style.
  • To study and apply the basics of Cascading Style Sheets (CSS).
  • To learn and apply CSS frameworks such as Twitter Bootstrap.
  • To learn and understand the fundamentals of the JavaScript programming language.
  • To learn the client/server model.
  • To understand stateless versus stateful protocols.
  • To understand connectionless versus connection-oriented protocols.
  • To explore server-side JavaScript programming.
  • To explore client-side JavaScript programming.
  • To understand and apply the Model-View-Controller (MVC) pattern.
  • To understand server-side routes.
  • To understand and apply session state.
  • To investigate and apply document-oriented databases.
  • To learn and apply data interchange languages (JSON/XML).
  • To understand and apply RESTful APIs.
  • To understand Single Page Apps (SPA).

When you leave this course you should be fully capable of implementing your own web application from scratch.

Course Assessment

Student knowledge of the course material will be assessed by the following categories:

  • Semester Team Project (45%)
  • Workshop Assignments (35%)
  • Participation (20%)

The semester team project will begin early in the semester and will be submitted in total at the end of the semester. At various points during the semester your team will be required to submit aspects of your project to be reviewed. These checkpoint team project assignments will help guide you and your team towards a successful project. Individual contributions to your team project will be reviewed through commits to the version control system that your team will be required to use. These assignments will be submitted through a version control system that you will be required to use.

The workshop assignments will be reading/tutorial-based assignments that will help you as an individual understand the material being covered so you will be a capable contributor towards your team project. These assignments will be submitted through a version control system that you will be required to use.

Participation will be measured through the Readiness Assurance Process (RAP) and possibly I-clicker based questions during class. The RAP will follow a standard format (https://goo.gl/GoYElb) that helps you prepare for a class. In addition, it will give you and your team an opportunity to discuss questions and answers that will encourage you to explore the material and prepare you for workshops. We will drop two RAP and I-clicker scores at the end of the semester.

There is no opportunity for extra credit in this course. Unless otherwise specified, so do not ask! The rough breakdown of percentages and final grades for this course are A (93-100), A- (90-92), B+ (87-89), B (83-86), B- (80-82), C+ (77-79), C (73-76), C- (70-72), D+ (67-69), D (60-66), F (0-59). We do not scale grades.

Course Policies and Other Requirements

The work for this course will consist of:

  • Attending and actively participating in class meetings.
  • Submitting any in class exercises or I-clicker questions/polls.
  • Several team project assignments.
  • Many workshop assignments.
  • Final submission of the team project.
  • Presenting the team project at the end of the semester.

Course Structure

This course consists of approximately 24 class meetings. As this class gathers in a team-based learning (TBL) classroom it will not follow the standard lecture format. Rather, our time will be spent between presenting material and working on so called “workshops”. Each workshop is carefully designed to guide you through the material in the course. In addition, you will be expected to participate in class discussions and answer I-clicker polls and questions. You will be required to do assigned reading in preparation of the workshop in class and complete the workshop for submission outside of class. Much of the assigned reading is the actual workshop itself and is vital for your successful completion of the course. My primary role as the instructor will be to meet with groups during the workshops to assess your understanding of the workshop and to help guide you to successful completion.

Late Policy

Assignments that are submitted late will receive a 10% penalty for each 24-hour period after the due date of an assignment up to 72 hours (3 days). Assignments will not be accepted after the 72 hours. If there are extreme circumstances (medical) that prevent you from submitting an assignment on time a scanned note (e.g., doctor’s note) should be sent to the instructor of the course before or on the due date of an assignment. Late assignments because of other activities such as interviews, conferences, or other personal endeavors will not be accepted. It is your responsibility to manage your own time.

Communication

We will be using Piazza as the primary mode of communication in this course. You should direct all your questions about the course and its material to Piazza. The course staff will have assigned times during the week, Monday to Friday, to respond to your posts. Do not expect your posts to be answered over the weekend. Although we will try to answer as many questions as possible, it will often be the case that we can’t answer all of them. You are encouraged to answer questions posted by other students as well as posting useful information that you think other students would benefit from. We will look at your participation (number of instructor endorsed questions and answers) on Piazza at the end of the semester to determine tie-breaking grades (i.e., C- to a C, B+ to an A-).

Piazza provides support for “folders” for categorizing posts. There will be several folders of interest to you. We will provide folders that correspond to each workshop and startup assignment. In addition, we will include each of the following folders that you should use to post privately to instructors in the course:

  • grade_disputes - used if you believe your grade on an assignment should be reviewed.
  • team_trouble - used if there is an issue with a member(s) on your team.
  • medical - used if you have a medical emergency and need to communicate to an instructor.
  • incomplete – used if you are unable to complete the course during the scheduled semester.

If you post to any of these folders, please attach any relevant documentation or assignment submission information so that the course staff can provide an effective response to your request.

For all other requests or inquiries regarding the course not covered by the above Piazza folders you should email the instructor at [email protected]

Manners and Classroom Productivity

All students in this class are to be respected and discriminatory behavior of any kind, both in class and online, will not be tolerated. It is important to respect the instructor and their time in preparing material for the course as well as their time in responding to emails and Piazza posts. We expect everyone to participate in class. This means you should come prepared to participate and be actively engaged during the class meeting time. Please refrain from the use of cellphones and laptops during the class time unless explicitly told otherwise. If you are having trouble doing so it is the responsibility of the instructor to ask you to leave to maintain a productive learning environment.

Attendance

You should attend every lecture. If you miss a class, talk to a friend who was present, and check the course website for course announcements and schedule. You are responsible for everything we tell you in class, regardless of whether we post it to the course website. Your participation in class is an important contribution to the success of this course. You are responsible for asking questions, offering comments, helping other students, and completing any in-class exercises or I-clicker questions/polls.

Team Policies

The largest component of this course is the semester team project. The team formation will occur during the first couple of weeks of class. You should discuss topics such as prior experience, course background, goals for this course, workload, and schedule for the semester. Your team will be required to find blocks of time during the week to work on the team project to a successful completion. We expect all team members to contribute their fair share and we expect to assign the same grade to all members of the team. Members who contribute less may receive a lower grade on the team assignment; non-contributing members will receive a 0. In case of disputes the teaching staff may interview team members on the project design and implementation. We will also use the commit log in your team project version control system repository to evaluate activity. All team members will be required as part of the assessment of a team project assignment to actively commit to the team repository.

Managing team dynamics and using each team member’s time and talents effectively can be as difficult as solving the project. We are happy to offer advice on how to handle these issues. Be open and candid with your team about any potential problems early on so that your team can plan around such problems and not fall behind. A sure way to make your team upset at you is not finishing your part of the work at an agreed-upon deadline and not informing them about the problems early enough for them to help.

Academic Honesty

It is very important in all courses that you are honest in all the work that you complete. You can collaborate on your team project; however, workshop assignments must be completed by you alone. If you do not work alone on workshop assignments you are doing a disservice to yourself, the instructors for the course, the College of Information and Computer Sciences, the University of Massachusetts, and your future. We design our courses to provide you the necessary understanding and skill that will make you an excellent computer scientist. Assignments are designed to test your knowledge and understanding of the material. Plagiarism and academic honesty of any sort may seem like an easy way to solve an immediate problem (which it is not), however, it can have a substantial negative impact on your career as a computer science student. There are many computing jobs out there and many more people working hard to get those positions. If you do not know your stuff you will have a very difficult time finding a job. Please take this seriously.

We will carefully review your submissions automatically and manually to verify that “cheating” has not taken place. If you are suspected of plagiarism, we will follow an informal path to determine if academic dishonesty has taken place. If you are found guilty you will receive an F for the course and it will go on your permanent record at UMass. This will disrupt your schedule for completing courses and may lead to you not completing your degree in a timely fashion. You should carefully review the Academic Honesty Policy, Avoiding Plagiarism, and the Academic Honesty Flowchart to understand what academic honesty is, how you can avoid it, and the procedure we will follow if you are under suspicion.

Every assignment implicitly includes a “contract” that you sign virtually by submitting your assignment. By “signing” this contract you indicate that you have read all the documents on this website and any links to academic honesty associated with the university. Your signature indicates that you completely understand the policies in place and that you have not plagiarized.

Incompletes

An incomplete in this course will only be granted during the third to last week of the course (4/10/2017 – 4/14/2017) with a maximum of two assignments not completed. Incomplete requests will not be accepted before or after that time period. If you fail to contact the instructor during that time your request will not be granted. The incomplete period will be announced in class during this time.

Schedule

Below is the starting schedule for the course. There may be circumstances when the schedule must be changes or updated to ensure the best delivery of the material in this course. You will be responsible for referring to this schedule throughout the semester, updating your own calendar of important events and assignments, and referring to Moodle to ensure that you have the most up-to-date information and schedule. It is ultimately your responsibility to keep up with the course to guarantee your success.

Week 01 Introduction

01/23 – 01/27

Reading / Material:

Lectures/Lab:

  • Tuesday / Lec 01: Course Introduction
  • Thursday / Lec 02: Agile Software Development Techniques
    • RAP 01: Syllabus

Assignments:

Week 02 Environment and Version Control

01/30 – 02/03

Reading / Material:

Lectures/Lab:

  • Tuesday / Lec 03: Workshop 02: Git
    • RAP 02: Git (Workshop 02: Git, screencast)
  • Thursday / Lec 04: No Class

Assignments:

Week 03 Introduction to Bootstrap

02/06 – 02/10

Reading / Material:

Additional Resources

Lectures/Lab:

Assignments:

Week 04 Static UI Structure

02/13 – 02/17

Reading / Material:

Lectures/Lab:

Assignments:

Week 05 Bootstrap Styling and Debugging

02/20 – 02/24

Reading / Material:

Lectures/Lab:

Assignments:

Week 06 Introduction to React

02/27 – 03/03

Reading/Material:

Lectures/Lab:

Assignments:

Week 07 Static React

03/06 – 03/10

Reading/Material:

Lectures/Lab:

Assignments:

Week 08 Spring Recess

03/13 – 03/17

No Class

Week 09 Data Modeling and Mock Databases

03/20 – 03/24

Reading/Material:

Lectures/Lab:

Assignments:

Week 10 React State and Interactivity

03/27 – 03/31

Reading/Material:

Lectures/Lab:

  • Tuesday 03-28-2017
  • Thursday 03-30-2017
    • React Interactivity and Component Life Cycle / slides

Assignments:

Week 11 Writing a Web Server

04/03 – 04/07

Reading/Material:

Lectures/Lab:

Assignments:

Week 12 Database Integration

04/10 – 04/14

Reading/Material:

Lectures/Lab:

Assignments:

Week 13 Authentication

04/17 – 04/21

Reading/Material:

  • Workshop 11: Authentication (before class on Thursday)

Lectures/Lab:

Assignments:

Week 14 Authentication

04/24 – 04/28

Reading/Material:

  • None

Lectures/Lab:

  • Lec 22: Startup Final Work / Authentication
  • Lec 23: Startup Final Work / Authentication

Assignments:

Week 15 Pitch Party

05/01 – 05/05

Reading/Material:

  • None

Lectures/Lab:

  • Lec 24: Pitch Party

Assignments:

  • Startups
    • Final Startup Submission (due)
  • Peer Review
    • Workshop 10: Adding a Database (due)
    • Workshop 11: Authentication (due)