Skip to content

Latest commit

 

History

History
90 lines (68 loc) · 2.82 KB

programming.md

File metadata and controls

90 lines (68 loc) · 2.82 KB

Programming

Drafts and schedules for "Programming" and related series.

Note: oudated. We decided not have to language-, framework-, tool-specific themes/courses. The following should be update accordingly.

Discrete Math I (Beginner)

  1. Intro. Warmup with logic, numbers, etc.
  2. Sets. Introduction to Set Theory.
  3. Booleans. Introduction to Boolean Algrebra.
  4. Relations and Functions. ...

Programming I (Beginner)

Includes

  1. Calculations. Start from numeric calculations.
  2. Variables. Split calculations on steps using variables.
  3. Datatypes. Declarations, properties, structuring & destructuring.
  4. Functions and Operations. Use a function abstraction to abstract calculations.
  5. Conditions. Practice and compare different conditionals.
  6. Loops. Practice and compare different loops.
  7. Mutability. In contrast to Immutability. Yield first patterns and "best practices".

Excludes

  • Types: highly language-specific, need another course series as JS does not fit
  • Scoping: later, basic scoping is given in Functions, advanced – togeher with Closures
  • Recursions: later, not necessary from the start in JS
  • Regular expressions: later, not necessary, can copy-paste for a while
  • Binary numbers: later, not necessary for beginners (really!)
  • Statements and expressions: later, too formal
  • Map / Filter / Reduce: later, too advanced

Programming II (Advanced)

Includes

  • Collections ?? Arrays vs Tuples, Records vs Dicts
  • Binary Numbers ??
  • Regular expressions ??
  • First class objects ??
  • Recursions ??
  • Scoping and closures ??
  • Basic FP (map, filter, reduce) ??
  • Error handling ??
  • Notations (prefix vs infix) ??
  • More datastructures (sets, lists, trees, queues) ??

Programming III (Competent)

Includes

  • Expression problem (FP vs OOP) ??
  • Functors, Applicatives, Monads ??
  • Lazy evaluation ??
  • Lenses ??
  • Dynamic programming ??
  • Minimax ??

Programming IV (Expert)

Includes

  • Traversals, Zippers ??
  • Advanced algorithms ??
  • Recursion schemes ??
  • Parsers and DSLs ??
  • Parallel computations ??
  • Distributed computations ??

Under consideration

  • Modules – language specific, better covered by JS series (and, oh boy, JS has many). Some II+ courses may assume a basic module knowledge (not an overestimation)
  • Types – language specific, better covered by JS series (or TypeScript)
  • Unit tests ??
  • Integration tests ??
  • Applied Statistics (basics) ??
  • Applied Linear Algebra (basics) ??
  • Finite state machines ??

Extracted to separate series

  • Asynchronisity 100%
  • Static Typing 60%
  • Functional Programming 60%
  • all competent topics 40%
  • all expert topics 60%