Git Product home page Git Product logo

cs4501's Introduction

cs4501 Fall 2015

Internet Scale Applications

This course will provide a survey of methods for building large-scale internet websites and mobile apps. The intent is to build upon prior classes by explaining how theory meets practice. Topics covered will include scaling, security, large team software engineering, etc. There will be a series of cumulative course projects resulting in students building a working marketplace website. Weekly readings from industry and academic sources will complement the weekly lecture.

Prerequisites

CS3240 Advanced Software Development or equivalent experience building non-trivial Python/Django web applications is required. Understanding issues around persistence, databases, concurrency, networking etc along with Linux experience will be extremely helpful in this class.

A course project will be developed using Python, Django, MySQL, and Docker containers. A basic familiarity with HTML and CSS is preferred but not strictly required.

Project Overview

You will work in a team of three to four students to build a working marketplace website. Marketplaces such as Airbnb, Uber, DonorsChoose, eBay, Etsy and Watsi are both highly profitable when they succeed and technically challenging to build. It's up to you to decide what kind of marketplace your team will build. Specific instructions for each project will be posted and linked below thoughtout the semester.

Due dates are listed below for each part of the project. These may be revised as the term goes on based on how everyone is doing. You will be graded as a team (unless unusual conditions warrant giving different grades). Grades will be based on: completeness of solution, correctness of solution, and being on time completing each assignment.

Course materials

Syllabus and project assignments will be here in GitHub. Feel free to fork and send PRs with corrections, additions or any other changes you think would help fellow/future students.

Lecture slides are in Google drive at https://drive.google.com/folderview?id=0BzWAJQVnIIRYfk9JUmwtbUVKS1pqb0k0Q2ZYU3pPZ3gxV2VnVDctVU51VjFYTTVaR25xR3c&usp=sharing

Readings are listed for each week and should be completed BEFORE the week they are assigned so that we can discuss in class.

Course Topics (subject to revision as course progresses)

  1. Anatomy of the modern internet, websites and mobile apps (Friday 8/28 and Monday 8/31)
  1. Requirements and documentation (Friday 9/4)
  • User stories
  • Product requirement documents
  • Design and architecture documents
  • Project: Write user-stories and other documentation for project. Due Friday 9/11.
  1. Service based architecture, part I (Monday 9/7)
  1. Databases (Friday 9/11 and Monday 9/14)
  1. Service based architecture, part II: Multi-screen development for mobile and desktop (Friday 9/18 and Monday 9/21)
  1. Security (Friday 9/25 and Monday 9/28)
  • SQL injection and XSS
  • Denial of Service
  • Untrusted content (eg image exploits in UGC)
  • Stack smashing
  • Phishing
  • Internal IT and employees as attack vector
  • Project: Finish Sprint 2
  • Resource: Django security features: https://docs.djangoproject.com/en/1.8/topics/security/
  • Quiz #1 on Monday 9/28
  1. Messaging and queing (Friday 10/2 -- No class Monday 10/5)
  1. Search, Browse and Discovery (Friday 10/9 and Monday 10/12)
  • Product design strategies for navigating lots of inventory
  • Basics of information retrieval and search engines
  • Case study: ElasticSearch for site search backend
  • Recommendations and browsing as alternatives to search
  • Project: Sprint 3: add user account registration, login/logout and ability to add user generated content, due 10/26
  • Reading: Incorporating behavioral data in search http://research.microsoft.com/en-us/um/people/sdumais/SIGIR2006-fp345-Ranking-agichtein.pdf
  1. Users and reputation (Friday 10/16)
  1. Speed (Monday 10/19 and Monday 10/26 - No class Friday 10/23)
  1. Testing and DevOps (Friday 10/30 and Monday 11/2)
  1. TBD (Friday 11/6 and Monday 11/9)
  2. Advertising (Friday 11/13)
  • Map of advertising ecosystem
  • Display advertising: targeting, trafficking and optimization
  • Search advertising: advertising as machine learning problem
  • Project: Sprint 6: Add user log in, account sign up, sign in/out etc. Due 12/4.
  • Reading: Ad Auctions (sections I and II in particular) http://users.cms.caltech.edu/~adamw/courses/241/lectures/search2.pdf
  1. AB-testing and Analytics (Monday 11/16 and Friday 11/20)
  1. Traffic -- SEO, SEM, Social, Paid Marketing, Email (Monday 11/23)
  1. TBD (Monday 11/30, Friday 12/4, and Monday 12/7 -- No class Friday 11/27)
  • Quiz #2 on Friday 12/4

Grading

Grades will be computed approximately as follows:
25% class participation
25% two quizzes
50% class project

Office Hours

Mondays 1-2pm in Rice 514. Contact the instructor if you would like to arrange another time to talk. Remember, it's always better to ask questions, bring up problems etc sooner vs later.

cs4501's People

Contributors

thomaspinckney3 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.