- Fundamentals
- History of the Internet
- History of the World Wide Web
- Client-server
- HTTP
- Methods
- Status codes
- Headers
- SSH
- SFTP
- SMTP/POP/IMAP
- HTTP
- Routing, packets, caching
- Cookies and state
- Sockets and polling
- Static web sites
- Web applications
- Single-page applications
- Real-time applications
- Separation of concerns
- Function/semantics
- HTML
- Content categories:
- Metadata content: link, meta, noscript, script, style, title
- Flow content: blockquote, div, dl, figure, footer, header, p, ol, ul
- Sectioning content: article, aside, nav, section
- Heading content: h1-6
- Phrasing content: abbr, br, em, span, strong, time
- Embedded content: audio, canvas, iframe, img, object, video
- Interactive content: a, button, input, label, select, textarea
- Palpable content: (contains visible content)
- The DOCTYPE element
- A basic HTML document
- Parts of an HTML document (head, body)
- Inline vs. block elements
- Attributes
- Content categories:
- XML
- Schema
- XPath/XQuery
- XSL
- XHTML
- HTML
- Presentation
- CSS
- Selectors
- Properties
- Units
- Specificity
- Box model
- Positioning
- Animations
- Media queries
- Prefixes
- The cascade
- CSS preprocessors
- Sass
- LESS
- Stylus
- Libraries
- Foundation
- Bootstrap
- XSL
- XSLT
- XSL-FO
- CSS
- Behavior/interactivity
- Accessibility/usability
- NN/g
- WCAG 2.0
- ARIA and ARIA roles
- Types of disabilities
- Color and contrast
- Keyboard-only
- Function/semantics
These are the topics that this thread will cover. They will not be covered in this order. Instead, each will be introduced at that point in the student's learning where it will make the most sense to the student given the student's current context.
Also, we will focus on teaching the concepts rather than memorizing fancy names. So the goal is for the student to understand, for example, the idea of referential transparency, but not necessarily know the terminology.
Finally, this is a basis from which to draw topics. As the curriculum is developed, we'll see what fits and what doesn't. Not all of these will be touched upon.
- What is a programming language?
- Compiled vs. interpreted
- Errors, compile-time vs. runtime
- I/O (stdout, stderr)
- The terminal and shells
- Programming paradigms
- Declarative vs. imperative
- Funtional programming (FP)
- First class and higher order functions
- Pure functions and side effects
- Referential transparency and the substitution principle
- Strict vs. non-strict (lazy) evaluation
- Recursion
- Pattern matching
- List comprehensions
- Closures
- Anonymous functions
- Currying
- Object-oriented programming (OOP)
- Prototypes vs. classes
- SOLID principles
- Inheritance vs. composition
- Limitations of OOP (cross-cutting concerns & AOP)
- HASA vs. ISA
- Need for testing
- Types
- Static vs. dynamic
- Strong vs. weak
- Duck typing and polymorphism
- Datatypes
- Primitive
- Composite and algebraic
- Abstract
- Fundamentals
- Values and variables
- Scope
- Expressions, operators (precedence), assignments
- Conditionals
- Truthiness
- Logical operators
- Boolean algebra
- Ternary operator
- Switch
- Loops
- for
- while
- do-while
- Arrays
- Objects
- Reusable code with functions
- Function.bind, this, and arrow functions
- Prototypes and prototypical inheritance
- Classes
- Control flow and error handling
- Advanced JS
- Iterators and generators
- Destructuring assignment
- Extended parameter handling
- Default values
- Rest parameter
- Spread parameter
- Template strings
- Maps and sets
- Symbols
- Promises
- Regular expressions
- Node.js (io.js)
- Version control with n
- NPM, semantic versioning
- package.json
- Modules, importing, and build systems
- Browserify, gulp, grunt
- Webpack
- ES3 vs. ES5 vs. ES6
- jQuery
- Selectors
- Events
- Effects
- DOM traversals
- AJAX