These don't have to cover a topic thoroughly, as long as they have links to help people to find the information if they want to. The point is to make the material as accessible as possible. As each doc is completed, make the text into a link to the doc, so we'll have a table of contents at the end.
- Reference
- Libraries and Frameworks
- javascript frameworks: angular, react, vue
- css frameworks: bootstrap, materialize, milligram, skeleton
- APIs
- List of APIS
- openweatherapi
- github
- spotify
- Learning Resources
- Other Resources
- trello, wireframe.cc, articles, online books
- Pre-Processors / Transpilers
- html, css, javascript
- using them with pycharm, codepen, with babel(?)
- Markdown
- what it's for, formatting rules
- Databases and SQL
- database engines
- tables, queries, foreign key, primary key
- sql vs nosql
- executing sql in pycharm
- How the Internet Works
- web host, domain registrar, DNS records
- traceroute
- protocol stack
- gunicorn, nginx, apache
- mime types
- http methods
- web application frameworks
- node (javascript), axios
- asp.net (c#), linq
- http://hotframeworks.com/
- How Computers Work
- Libraries and Frameworks
- Pre-Course
- CLI
- what is the CLI? cd, ls, etc
- opening a CLI on different OSs
- what CLIs are available on different OSs
- Installing Python
- installation guide / links for different OSs
- how to open the python interactive interpreter
- how to run python files
- Version Control & Git
- overview of version control - why we use it
- different forms of version control
- installing git on different OSs
- link to official git guides
- basic git - init, clone, status, commit, push, pull
- advanced git - branch, merge, undoing a commit?
- IDEs and Text Editors
- pycharm, atom, visual studio code
- configuring and using them
- Python Learning Resources
- how much to study before the class starts
- CLI
- python
- python overview
- history
- interactive interpreter, running files
- pip
- virtual environments- python fundamentals
- variables, types, literals
- boolean, int, float, string
- called literals because you're literally writing them in the source code
- type conversions
- del
- none, pass
- comments
- indentation, line breaks
- snake_case
- input, print
- mutability
- first read about lists and tuples
- scope
- first read up about functions
- arithmetic
- using functions
- defining functions
- booleans, comparisons, conditionals
- strings
- lists and tuples
- loops
- dictionaries
- modules, packages, importing
- built-in functions
- exceptions
- timing
- getting the system time
- datetime
- sleeping
- classes
- 'type' and 'class' are interchangable
- class / instance dichotomy
- initializer
- methods
- static methods
- belong to the type, not the instance
- private methods
- inheritance
- dunder methods
- sets
- gui frameworks
- functional programming in python
- python overview
- html
- overview
- DOM, HTML5
- element/tag, attribute, comment
- html, head, body, div, span
- heading, paragraph
- table, ordered list, unordered list
- formatting - bold, italic, etc
- links, href
- input elements
- text (default), password, number, color, hidden
- pattern, required, placeholder
- semantic elements, layout
- symbols
- html preprocessors
- link to doc about setting preprocessors
- dl, dd, dt
- overview
- css
- inline style, style element, external file
- selectors
- element, class, id, universal, attribute
- sibling, child, descendant
- psuedo-classes, psuedo-elements
- attributes
- color, alignment
- animation
- position
- basic design principles, ux
- css preprocessors
- link to doc about setting preprocessors
- sass, scss
- examples
- Javascript
- JavaScript Overview
- inline javascript, script element, external file
- variables, assignment
- var, let, const
- mutability, scope
- javascript preprocessors
- link to doc about setting preprocessors
- Numbers, arithmetic operators, math
- Strings
- Comparisons and Conditionals
- short-circuited evaluation
- switch statements
- loops
- functions
- decalartion, anonymous functions, arrow functions
- objects, classes, methods, inheritance, oop
- canvas drawing
- timing
- setTimeout, setInterval, requestAnimationFrame
- dom manipulation
- getElementById, querySelector, querySelectorAll
- setAttribute
- dataset
- createElement, appendChild
- event handlers
- ajax, http methods
- link to APIs doc
- JavaScript Overview
- Django
- Django Overview
- why django?
- cli commands, file structure
- custom management commands
- Routes
- Views
- Templates
- static files
- Models
- databases, ORM
- fields - int, char, option
- ORM syntax
- Class-based views
- Forms
- User Management
- Media Files
- letting users upload files
- save in the database
- Deployment
- docker? whatever's easiest, as long as it's done properly
- https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Deployment
- PaaS
- PythonAnywhere
- Heroku
- Elastic Beanstalk
- Virtual Server
- Nginx
- Apache
- SSH
- VIM
- Advanced CLI
- Sending Email
- Fixtures
- Social Authentication
- Github
- Spotify
- CBVs
- When and how to use them
- More complex uses and generic CBVs
- Writing your own Generic CBVs
- Forms
- What is a form?
- When to use forms?
- forms.* fields cheatsheet
- How to control the HTML forms generate (eg. widgets)
- Custom validation
- APIs
- JSON APIs
- DRF and when to use it
- CSRF and CORS in detail
- Authentication Strategies
- JWT
- OAuth2
- Cookie (UNSAFE)
- Session (BAD)
- DRF @api_view FBVs
- DRF Generic CBVs
- DRF Router
- Middleware
- What is middleware?
- How to write your own middleware
- When to write your own middleware
- ORM
- ORM in detail
- How the ORM constructs queries, (aka lazily)
- Advanced queries (Q object)
- Seeing generated SQL
- Relationships in more detail:
- related_name
- on_delete
- Many to many relationships
- Django Overview