Programming Tutorial

From Adam Colton
Jump to navigation Jump to search

There are a lot of "learn to code" sites out there, but I'd like to do a learn software engineering.

I think the way to build this is to have the first part done through a web page and some youtube videos. Once we get to the more advanced stages, I can use git and each segment can be a branch.

Modules

  1. Intro to Course
  2. Intro to development (HTML)
  3. Intro to Coding (JS)
  4. Command line setup
  5. Objects (Python)
  6. Testing
  7. Big O (sorting)
  8. Basic Data Structures
  9. Object Patterns
  10. Basic Models
  11. Server Programming
  12. Large Scale Projects

Things to Cover

  • The command line
  • TCP networking
  • Crypto
  • Regex
  • Modulus math and tricks
  • Servers
  • Time
  • Source control
  • Programming standards
  • Graph theory
  • unit testing
  • Algorithms, data-structures and their costs
    • O notation
    • Array
    • linked list
      • queue
      • stack
    • tree
    • hashtable
    • sorting
    • flood algorithm
    • memoization
  • Philosophy of programming
    • Code is for people

Layout

  • Intro
    • Programming, software and computer science
    • Beyond writing code
    • Outline
    • Environment
  • Coding : JavaScript
    • Browser Intro
    • Hello World
    • Variables
      • Strings
      • Numbers
      • Bools
    • Math
      • Operators and assignment
    • Conditionals
      • If
      • Switch
    • Loops
      • for
      • while
      • break
      • continue
    • Functions
      • Scope
    • Arrays
    • Objects
    • Prototypes
  • Command Line
    • Why it's powerful
    • VMs
      • Bash/Cygwin
      • Virtualbox
      • Docker
      • AWS
    • basic navigation
    • basic tools
      • find
      • grep
      • sed
      • awk
  • Python
    • Overview; language differences
    • Command line args
    • HTTP servers
      • basic server
      • requests
      • ajax
      • jQuery
    • Thinking with Ints
      • Numbers as data
      • mod tricks
  • C++
    • Overview; language differences
      • Speed
    • Pointers
    • Deep OO
      • Inheritance
      • Abstract classes
      • Patterns
        • Listener
        • Facade
    • Big O
  • Data Structures
    • Add, remove, find, sort
    • Arrays
      • Lists (C++ Vector)
    • Linked Lists
    • Tree
    • Stack
    • Queue
    • Map
  • Go
    • Concurrency
      • Threads
      • Channels
      • Mutex
    • OO Reduction
      • Go, C++, JavaScript
  • Working with Time
    • Why it's hard
    • UNIX time
    • Examples in languages
  • Regex
    • Why
    • Basic matching
    • Advanced matching
    • Best practices (it IS hard to read)
  • Servers
    • What it is
    • AWS (hosted)
    • Virtual Box (local)
    • RasPi
    • SSH
      • Keys and Accsss
    • permissions model
    • FTP
  • Lamp Server
    • MySql
      • command line
      • phpMyAdmin
    • Apache
    • PHP
      • MVC
      • Laravel