Teaching Web Programming

Resources for teaching basic web design.

Background

Teaching web design and development has moved from relatively simple in the 1990s to about as complex as full on backend programming.

Building a modern website requires, at a minimum, learning the following languages:

  • HyperText Markup Language (HTML) - To give the page structure.
  • Cascading StyleSheets (CSS) - To control the look of the page, including animation.

For anything more than a trivial site, the following may also be required:

  • JavaScript - To add interactivity to the page.
  • Ruby/Python/Elixir/JavaScript/etc. - To add backend functionality, whether on traditional servers or via serverless/lambda functions.
  • JSON/YAML/TOML/etc. - To exchange data with Application Programming Interfaces (APIs).

Resources

While professional programmers tend to love massive collections of resources, students need to be slowly introduced to research methods and how to successfully navigate the mountains of data common to software design. The essential resources below should be just about enough for a brief introductory class.

Essential Resources

Basic Resources

Design Resources

  • awesome-web-design: A curated list of awesome resources for digital designers.
  • awesome-design (oscarotero): A collection of open resources for web designers.
  • awesome-design (troyericg): An ever-growing/changing collection of tools, resources, tutorials, guidelines and examples.
  • awesome-motion-design-web: A list of links for using motion design on the Web.

Tooling

Static Analysis

It's possible to automatically check the correctness of certain aspects of HTML and CSS code. This makes it possible to automate many aspects of grading freeform projects.

Validators, Linters, and Formatters

  • htmlq: Like jq, but for HTML.
  • ripgrep: ripgrep recursively searches directories for a regex pattern while respecting your gitignore.
  • web-grep: Allows querying web pages via templates.

Edit this page on GitHub