Skip to main content
Jenesys Jenesys

Section Navigation

  • Setup

    • Week 0
  • Foundations I

    • Week 1
    • Variables and data types
    • Conditionals
    • Loops
    • Functions
    • The command line
    • Git basics
    • How the internet and APIs work
    • Exercises
    • Project: call a public API
  • Foundations II and first project

    • Week 2
    • Web frameworks
    • Endpoints and routes
    • Persistence
    • Error handling
    • Debugging methodology
    • Organizing your code
    • Planning before you write code
    • Exercises
    • Project: a notes/task API
  • Foundations consolidation

    • Week 3
    • What carries over from Week 2
    • Redirects and short codes
    • Organizing a growing file
    • Exercises
    • Project

      • URL shortener
      • Config store
    • Foundations checkpoint: self-check
  • AI

    • Introduction
      • What a hosted AI model API actually is
      • Prompts and tokens
      • What billing actually looks like
      • You calling the model, versus the model calling a function
      • Exercises
      • Project: a tiny chatbot with memory
    • Notes Assistant v1
      • Why retrieval matters
      • Embeddings and vector search
      • Organizing Notes Assistant
      • Exercises
      • Project: Notes Assistant v1
    • Notes Assistant: giving it tools
      • Tool use (function calling), for real
      • Failure handling, and why fabricated tool results are a real problem
      • Organizing Notes Assistant as it grows
      • Exercises
      • Project: give Notes Assistant real tools
    • Notes Assistant: persistence & robustness
      • Persistence, for an agent specifically
      • Robust to a bad or missing input it hasn't seen before
      • Organizing Notes Assistant, with a second new concern on top
      • Exercises
      • Project: persistence, a second chaining scenario, robustness
  • Blockchain (Solidity)

    • Introduction
      • Private keys and addresses
      • Transactions and gas
      • Testnets and faucets
      • What a smart contract actually is
      • Exercises
      • Project: deploy and call a trivial smart contract
    • AssetRegistry: deploy & interact
      • State and storage: why a contract "remembers" things
      • Access control: locking specific doors, not the whole building
      • Events: a cheap announcement that something happened
      • Common failure modes: reentrancy, overflow, and access control mistakes
      • Organizing (or not) a walkthrough script
      • Exercises
      • Project: deploy AssetRegistry, then send it a transaction from Python
    • AssetRegistry: a managed-key service
      • Managed keys: when there's no human left to click "approve"
      • The transaction lifecycle, from a backend's point of view
      • Event-driven reactivity: listening instead of asking
      • Organizing a service, not a script
      • Exercises
      • Project: a managed-key backend service for AssetRegistry
    • AssetRegistry: hardening it
      • Idempotency and retries: doing something twice without it counting twice
      • Why a small test suite matters, even with no one grading it
      • Organizing under more weight
      • Exercises
      • Project: harden the AssetRegistry service
  • Blockchain (Vyper)

    • Introduction
      • Private keys and addresses
      • Transactions and gas
      • Testnets and faucets
      • What a smart contract actually is
      • Exercises
      • Project: deploy and call a trivial smart contract
    • AssetRegistry: deploy & interact
      • State and storage: why a contract "remembers" things
      • Access control: locking specific doors, not the whole building
      • Events: a cheap announcement that something happened
      • Common failure modes: reentrancy, overflow, and access control mistakes
      • Organizing (or not) a walkthrough script
      • Exercises
      • Project: deploy AssetRegistry, then send it a transaction from Python
    • AssetRegistry: a managed-key service
      • Managed keys: when there's no human left to click "approve"
      • The transaction lifecycle, from a backend's point of view
      • Event-driven reactivity: listening instead of asking
      • Organizing a service, not a script
      • Exercises
      • Project: a managed-key backend service for AssetRegistry
    • AssetRegistry: hardening it
      • Idempotency and retries: doing something twice without it counting twice
      • Why a small test suite matters, even with no one grading it
      • Organizing under more weight
      • Exercises
      • Project: harden the AssetRegistry service
  • Capstone, no safety net

    • Week 8
    • AI track specs

      • Docs assistant
      • Ticket triage service
      • Research agent
    • Blockchain track specs (Solidity)

      • Acceptance gate (flagship)
      • Token issuance backend
    • Blockchain track specs (Vyper)

      • Acceptance gate (flagship)
      • Token issuance backend
    • Self-sufficiency rubric (Week 8 gate)
  • Going further

    • Overview
    • Classes, the minimum you need
    • Type hints
    • Dataclasses
    • Exercises
    • Project: validate with pydantic
    • Step 5: FastAPI
      • Path operations: FastAPI's version of a route
      • Request bodies: a pydantic model instead of a hand-checked dict
      • Path and query parameters: type-hinted arguments
      • Response models, and the docs page that writes itself
      • Exercises
      • Project: rebuild Week 2 in FastAPI
  • Testing with pytest

    • Overview
    • pytest fundamentals: discovery, plain asserts, and reading the output
    • Fixtures: reusable setup, handed to a test by name
    • parametrize: one test, many inputs
    • Ape's pytest integration: ape test, built-in fixtures, and per-test isolation
    • Exercises
    • Project: test your AssetRegistry
  • Week 5 (Blockchain track, Vyper): Guided build
  • Week 5 (Blockchain track, Vyper): Exercises
  • Guided build: AssetRegistry, line by line (required, before the project)
  • Exercises: read and predict (required, six snippets, two per failure mode)
  • Guided build: CreditLedger, line by line (optional, a second, smaller rep of HashMap plus access control)

Jenesys