Giter Site home page Giter Site logo

cs4501's Introduction

CS 4260 (formerly CS4501) - 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 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. Note that prior semester's slides can be found here for future lectures, but they may be out of date / subject to update this semester. Generally, the further out a lecture is the more likely that the slides have not been reworked for this semester.

Readings are listed for each week and should be completed BEFORE the week they are assigned so that we can discuss in class. There's also this useful high-level summary of many of the topics in this course https://github.com/donnemartin/system-design-primer

Course Topics (subject to revision as course progresses)

1. Anatomy of the modern internet, websites and mobile apps

2. Requirements and documentation

  • User stories
  • Product requirement documents
  • Design and architecture documents

3. Service based architecture, part I

4. Databases

5. Service based architecture, part II: Multi-screen development for mobile and desktop

  • Proliferation of channels for consuming apps
  • App and experience logic server side vs client side
  • Responsive web design vs building different apps for different devices
  • Consistent experiences on mobile native, mobile web, desktop web, tablet, email etc
  • Service composition

6. Security

7. Messaging and queing

8. Search

9. Users and reputation

10. Speed

11. Testing and DevOps

12. TBD

13. Advertising

14. Parallel batch processing

15. AB-testing and Analytics

16. Traffic—SEO, SEM, Social, Paid Marketing, Email

Grading

Grades will be computed approximately as follows: 45% three quizzes 55% class project

Note, these are guidelines and teaching staff may deviate as they believe the situation requires.

Project grading policies

  • 10 points off for being late
  • 10 points off minimum if project doesn't work
  • 1-5 points off for not folowing "best practices" such as poor code design, lack of abstraction etc TBD Each team may get ONE project extension. You must ask for it via email at least 72 hours (3 days) before the project is due. You must email your primary TA and Tom to ask for it.

Academic Honor Code

All work products that you submit for this class—whether projects, quizes or anything else—is assumed to be your own creation UNLESS you specifically call out that you are including someone else's work, either in spirit or verbatim. Violating this honor code will result in severe disciplinary action potentially including referral to the University Honor Code comittee who may recommend expulsion.

If there is reason for you to submit other's work in your github repo then you must cite them as the author of the work. If their work has a copyright notice on it, make sure that copyright notice is perserved and contained in your work saying "Portions of this work copyright DATE by AUTHOR". If the work has a license agreement associated with it, make sure you are complying with the terms of the license agreement. If there is no license or copyright, you must still explicitly list the author(s) whose work you are including. This should be in the form of a comment at the top of the source file including their work.

Finally, if you are using someone else's work as the substantial basis of your work (even if you're not literally copying it character by character) then you are still copying their work and you must cite them.

Office Hours

The teaching staff for this semester are:

Office Hours for Project Review, Help, and Demo Hours (led by TAs):

  • Handley, Tyler M (tmh6de) Wed: 2pm-3pm in Rice 442
  • Yennu, Ankith (agy8gc): Tues, Fri: 12pm-1pm Thurs: 10:30am-11:30am in Olsson 001
  • Lasker, Rashid (rel3en): Tue, Thurs: 2pm-3pm in Olsson 001
  • Hector, Selwyn (snh3fa): Tue, Thurs: 2pm-3pm in Rice 442
  • Wong, William (ww5zf): Mon, Wed: 3:30-4:30pm in Rice 442
Monday Tuesday Wednesday Thursday Friday
10:30 Ankith
11:30
12:00 Ankith Ankith
1:00
2:00 Rashid, Olsson 001
Selwyn, Rice 442
Tyler, Rice 442 Rashid, Olsson 001
Selwyn, Rice 442
3:30 William, Rice 442 William, Rice 442
4:30

There is also always help from the teaching staff and your fellow classmates through slack at https://cs4501-isa.slack.com.

We will use Collab announcements when I need to email everyone in the class for announcements, project assignments etc. I'll send a Welcome announcement after the first class. If you don't receive it, check with me or the TA's to figure out what's wrong. If you added the class after the first day then please make sure to review the archive of announcements on Collab.

Finally, it's always better to ask questions, bring up problems, etc. sooner versus later. Please don't be shy. I enjoy people coming to office hours, asking question on Slack, bringing things up in class etc.

cs4501's People

Contributors

thomaspinckney3 avatar zeizyy avatar rachelsfba avatar lli5ba avatar srikanthchelluri avatar davidamin avatar dn3gy avatar el1t avatar nolsen97 avatar shector avatar tylermhandley avatar artixbot avatar nikhilgupta345 avatar carlinmack avatar aaron-gu avatar acs3ss avatar mrcoles avatar rashidlasker avatar agy8gc avatar saikonuri 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.