CS 4550 - Web Development

Discusses Web development for sites that are dynamic, data driven, and interactive. Focuses on the software development issues of integrating multiple languages, assorted data technologies, and Web interaction. Requires each student to deploy individually designed Web experiments that illustrate the Web technologies and at least one major integrative Web site project. Each student or team must also create extensive documentation of their goals, plans, design decisions, accomplishments, and user guidelines.

Resources

Office Hours

Nat Tuck NI 132E Mo 2pm-3pm, Fr noon-1pm ntuck ⚓ ccs.neu.edu
Rohit Begani WVF 116 Th 4pm-6pm begani.r ⚓ husky.neu.edu
Sanamdeep Singh WVF 116 Th 2pm-4pm singh.sa ⚓ husky.neu.edu

Textbook

There is no required textbook for this class.

Supplies

Each student must have virtual private server and a domain name, accessible from the public internet. Getting these will be part of the first homework assignment. This will cost around $30 for the semester.

Domain Registrars: joker, gandi, namecheap. It's easiest if the registrar also provides DNS hosting.

VPS Providers: vultr, linode, prgmr. Your VPS should have Ubuntu 16.04 and at least 1 GB of RAM.

Work For This Class

Homework and Projects

For each homework assignment or project you will build a working web site and/or app. To submit your work, you must do three things:

  1. Create a release on github.
  2. Deploy your site/application to your server.
  3. Submit links to github and your deployed site on Bottlenose.

Late submissions will be penalized 1% for every hour late, except for the last assignment which must be submitted on time for credit.

Participation

Participation has several parts:

Grading

Homework 55%
Projects 40%
Participation 5%

Useful Links

Library & Framework Documentation

Topics

Here's some likely topics. Longer version soon.

Vague Schedule

Planned topics by week:

  1. Intro: Development on the Web; HW: Setup
  2. Page Design: User Stories, HTML, CSS, Bootstrap; HW: Static Page Designs
  3. Elixir / Phoenix - Language and Framework Basics; HW: Blog Posts
  4. Multiple resources; HW: Users & Follows
  5. JavaScript & AJAX; HW: Add Likes
  6. Chat with Websockets; HW: Real-time updates
  7. User auth and security; HW: Add passwords
  8. Web APIs; HW: (work on design)
  9. Client-side frameworks; HW: Project Design
  10. Stateful web servers & OTP; HW: (work on project)
  11. Stateful web servers & OTP 2; HW: Semester Project
  12. Project Presentations; HW: (none)
  13. Project Presentations; HW: Stateful web app
  14. Outro: Development on the Web; HW: Enjoy Winter Break

Useful Resources

Editors

We will be writing code in several languages. Programming is much easier with editor support. Most editors will do HTML / CSS / JS well out of the box. Elixir is supported less broadly - these editors should work well:

Policies

Special Accomodations

Students needing disability accommodations should visit the Disability Resource Center (DRC).

If you have been granted special accomodations either through the DRC or as a student athlete, let me know as soon as possible.

Code Copying & Collabaration Policy

Copying code and submitting it without proper attribution is strictly prohibited in this class. This is plagiarism, which is completely unacceptable.

Details:

Collaboration and Attribution:

Since it's not plagiarism if you provide attribution, as a special exception to these rules, any code sharing with attribution will not be treated as a major offense. Instead, credit will be split between the writers of the code.

In order to qualify for this exception, every collaborator must include a prominent notice either as a multi-line comment at the top of the submitted single source file or at the top of a submitted README file identifying all collaborators.

For example, if four students work together code source, the submission will be graded as usual and then the points will be split evenly four ways as long as the collaboration is clearly indicated in the submissions.

Penalities:

First Offense: