
<aside>
DirectEd x CATS Hackathon Aiken Development Workshops
Program Duration: November 9 - December 16, 2025
Workshop Format: Twice weekly (2 hours per session)
Target Audience: Entry-level developers new to Cardano
Locations: Abuja, Kigali, and Addis Ababa
Program Overview
This intensive workshop series introduces participants to Cardano blockchain development using Aiken, a modern smart contract programming language. Through eight comprehensive modules, participants will progress from environment setup to building complete decentralized applications.
Workshop Structure
Each 2-hour workshop follows this format:
- First Hour: Lecture and core concepts
- Second Hour: Hands-on exercises, and Q&A
Learning Approach
This document serves as a self-paced learning roadmap. Participants are encouraged to:
- Review materials before each workshop
- Complete assignments between sessions
- Utilize provided resources and GitHub examples
- Ask questions during office hours
Module M000: Cardano Background & Development Setup
Welcome to Cardano blockchain development! Before we dive into writing smart contracts, we need to understand some fundamental concepts about how Cardano works and get your development environment ready. In this module, you'll learn what makes Cardano different from other blockchains, particularly its UTxO accounting model, and you'll set up all the tools you'll need for the rest of this course.
What You'll Learn
- Understand the UTxO model vs Account-based blockchains
- Learn about native assets on Cardano
- Set up Aiken development environment
- Install and configure VS Code for Aiken
- Run your first Aiken tests
Key Topics
- Blockchain Accounting Models - UTxO vs Account model explained
- Native Assets - How Cardano handles tokens differently
- Cardano Improvement Proposals (CIPs) - Community-driven development
- Wallets & Transactions - How we interact with the blockchain
- Functional Programming - Why it fits the UTxO model
- Aiken Installation - Setting up aikup and development tools
- VS Code Configuration - Installing extensions and understanding features
- Repository Setup - Cloning course materials and project structure
- First Tests - Running aiken check and understanding test output
Assignment
Set up your complete Aiken development environment, install required tools, and successfully run all tests in the course repository. Document any installation challenges and solutions.
📚 View Detailed Module Content →
Module M001: Writing Your First Smart Contract
Now that your environment is set up, it's time to write your first Cardano smart contract! In this module, we'll explore what validators are and how they work. You'll learn the difference between spending validators (which control how funds are unlocked) and minting validators (which control how tokens are created). By the end of this module, you'll have written, tested, and compiled your first validators.
What You'll Learn
- Understand validator structure and type signatures
- Write spending and minting validators
- Create and run test cases
- Compile validators to generate blueprints
- Generate script addresses and policy IDs
Key Topics
- Validator Fundamentals - Anatomy of spending and minting validators
- Type Signatures - Understanding datum, redeemer, input, and transaction parameters
- Always Succeed Pattern - Building the simplest possible validators
- Testing Strategies - Writing success and failure test cases
- Mock Utilities - Using mocktail for testing
- Compilation Process - Using aiken build to generate plutus.json
- Address Generation - Creating script addresses from validators
- Policy IDs - Generating minting policies from validators
Assignment
Create custom validators with both spending and minting examples. Define custom types for Datum and Redeemer, write comprehensive test cases demonstrating both success and failure scenarios, and generate script addresses and policy IDs.
📚 View Detailed Module Content →
Module M002: Testing with Mock Transactions
In the last module, you learned how to write basic validators. But to test them properly, we need to understand how transactions work on Cardano. Every validator operates in the context of a transaction, so in this module, we'll learn how to build realistic mock transactions for testing. You'll master creating transactions with inputs, outputs, minting, locking funds at validator addresses, and unlocking them with redeemers.
What You'll Learn
- Master Cardano transaction structure
- Write mock spending transactions
- Create mock minting transactions
- Implement mock locking transactions
- Build mock unlocking transactions with redeemers
Key Topics
- Transaction Anatomy - Complete structure of Cardano transactions
- Transaction Placeholder - Understanding the base transaction template
- Mock Spending - Creating transactions with inputs and outputs
- Payment Credentials - VerificationKey vs Script addresses
- Mock Minting - Building minting transactions with token values
- Mock Locking - Sending outputs to validator addresses with inline datums
- Mock Unlocking - Spending from validators with proper redeemers
- Mocktail Utilities - Using Vodka library helper functions
- Testing Patterns - Writing comprehensive test coverage
Assignment
Create mock transactions demonstrating minting multiple NFTs, locking funds at a script address, and unlocking them. Write both passing and failing tests, and document transaction flows with detailed comments.
📚 View Detailed Module Content →
Module M003: Smart Contracts with Validation Logic
Now that you can write validators and test them with mock transactions, it's time to add real validation logic! In this module, you'll learn how to make your validators actually check things - like verifying a redeemer value, comparing datum fields, checking who signed a transaction, or ensuring a transaction happens within a specific time window. These are the building blocks of all Cardano smart contracts.
What You'll Learn
- Implement redeemer-based validation
- Create datum validation logic
- Build parameterized validators
- Validate transaction context elements
- Check reference inputs and signatures
- Implement time-based validation
- Validate transaction inputs and outputs
Key Topics
- Redeemer Validation - Pattern matching on redeemer constructors
- Datum Validation - Custom datum types with parameters
- Parameterized Validators - Compile-time parameters for reusability
- Reference Inputs - Checking for reference inputs in transactions
- Signature Verification - Validating transaction signatories
</aside>