Skip to content

This course picks up where CS50x leaves off, diving more deeply into the design and implementation of web apps.

License

Notifications You must be signed in to change notification settings

DaviNakamuraCardoso/cs50w

Repository files navigation

Harvard-CS50-Web-Programming

Harvard Course on Web Programming with Python and JavaScript, with the professor Brian Yu.

Lecture 0: HTML and CSS

  • HTML basic structure (html, head, body)
  • Headers, paragraphs, ordered and unordered lists, links
  • Tables and Images
  • Inline style
  • Style with CSS files
  • CSS selectors and priority
  • Responsive applications with flexboxes and grids
  • Declaring variables with Syntactically Awesome Style Sheets (SASS)
  • Using bootstrap
  • Forms

Lecture 1: Git

  • Creating a Git repository
  • git cone, git add -m, git commit, git status, git add -am and git push commands
  • Merge conflicts
  • git pull, git reset --hard, git log
  • Branching with git branch, git checkout -b, git merge
  • GitHub features: Forking and Github Pages

Lecture 2: Python

  • Types of variables
  • Data structures: lists, dicts, sets and tuples
  • Loops, functions and modules
  • Decorators and lambda
  • Exceptions

Lecture 3: Django

  • Getting started: django-admin startproject and python manage.py startapp
  • Basic setups: adding the new application to the INSTALLED_APPS, including to the url file
  • Variables on the url patterns, rendering HTML files
  • Variables in the HTML file
  • Layouts and static files
  • Dynamically linking urls and files
  • Conditions and loops inside the HTML templates

Lecture 4: Models and Migrations

  • Models: definition and usage
  • Creating models for users based on the AbstractUser class
  • Authentication and registration
  • Applying migrations
  • CharField, IntegerField and BooleanField attributes
  • Relating models with ForeignKey and ManyToManyField

Lecture 5: JavaScript

  • Manipulating the DOM with document.querySelector function
  • Event listeners, waiting for the page to load
  • Arrow functions
  • Changing the innerHTML, className and style of the elements
  • Datasets, onclick and onsubmit properties
  • JSON and APIs with GET, POST and PUT methods

Lecture 06: User Interfaces

  • Manipulating the URL with JavaScript
  • Animations with CSS
  • Infinite scroll
  • Changing the animations with JavaScript
  • Introduction to React and declarative programming
  • Manipulating databases without having to reload the page

Lecture 07: Testing, Continuous Integration and Continuous Delivery

  • Running tests with shell files
  • Asserts
  • Unit testing
  • Importing TestCase in the Django tests fil
  • Client request, using selenium
  • GitHub Actions, YAML
  • Docker, Dockerfiles

Lecture 08: Scalability and Security

  • Vertical and Horizontal scaling

  • Load Balancing methods:

    • Random choice
    • Round Robin
    • Fewest connections
  • Sessions:

    • Sticky sessions
    • Database sessions
    • Client-side sessions
  • Scaling databases: vertical and horizontal scaling

  • Replication:

    • Single-primary
    • Multi-primary
  • Caching

  • Security on Git and GitHub

  • Phishing attacks

  • Cryptography:

    • Secret-key cryptography
    • Public-key cryptography
  • Forgot your password feature and its problems

  • API keys, rate limiting and route authentication

  • Cross-site scripting and cross-site request forgery

  • Other server-side and client-side frameworks

  • Hosting services

About

This course picks up where CS50x leaves off, diving more deeply into the design and implementation of web apps.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published