Documentation Index
Fetch the complete documentation index at: https://mintlify.com/0xchriswilder/journey/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Homework types define weekly assignments with detailed requirements, grading rubrics, and starter/solution code.
Types
Homework
Represents a weekly homework assignment.
Unique identifier for the homeworkExample: “hw-1”, “hw-2”
Homework titleExample: “FHE Concepts & Setup Verification”, “Build a Confidential Counter”
Overview of what students need to accomplishExample: “Demonstrate your understanding of FHE fundamentals and verify your development environment is fully configured.”
Array of specific requirements students must complete
gradingCriteria
GradingCriterion[]
required
Array of grading criteria with weights and rubrics
Optional starter code template for students
Optional solution code for instructor reference
Expected time commitment in hours
Step-by-step submission instructionsExample:[
"Create a folder named 'homework-1-[yourname]'",
"Include a file 'answers.md' with your written responses",
"Zip the folder and submit"
]
Requirement
A specific task within the homework assignment.
Unique identifier for the requirementExample: “hw1-q1”, “hw2-contract”
Requirement titleExample: “Conceptual Questions”, “EncryptedCounter Contract”
Detailed description of what to deliverExample: “Answer 10 written questions about FHE, FHEVM, and the Zama Protocol. Submit as a markdown file.”
type
'code' | 'written' | 'practical' | 'screenshot'
required
The type of deliverable expected
- code: Submit source code files
- written: Submit written explanations or essays
- practical: Perform a task (e.g., deploy a contract)
- screenshot: Submit screenshots as proof
GradingCriterion
A grading dimension with weight and rubric.
Criterion nameExample: “Conceptual Understanding”, “Contract Correctness”, “Test Quality”
Percentage weight of this criterion (total across all criteria should sum to 100)Example: 40 (40% of total grade)
What this criterion evaluatesExample: “Accuracy and depth of answers to conceptual questions”
rubric
{ score: string; description: string }[]
required
Grading levels with score ranges and descriptionsExample:[
{
score: "Excellent (90-100%)",
description: "All answers correct with additional insight"
},
{
score: "Good (70-89%)",
description: "Most answers correct with minor gaps"
},
{
score: "Needs Work (50-69%)",
description: "Several incorrect answers, fundamental gaps"
},
{
score: "Incomplete (<50%)",
description: "Missing answers or major misunderstandings"
}
]
Type Definitions
export interface Homework {
id: string;
title: string;
description: string;
requirements: Requirement[];
gradingCriteria: GradingCriterion[];
starterCode?: CodeSnippet;
solutionCode?: CodeSnippet;
estimatedHours: number;
submissionInstructions: string[];
}
export interface Requirement {
id: string;
title: string;
description: string;
type: 'code' | 'written' | 'practical' | 'screenshot';
}
export interface GradingCriterion {
name: string;
weight: number; // percentage
description: string;
rubric: { score: string; description: string }[];
}
Usage Example
import { curriculum } from '@/data/curriculum';
// Access homework for first week
const homework = curriculum.weeks[0].homework;
console.log(homework.title); // "FHE Concepts & Setup Verification"
console.log(`Estimated time: ${homework.estimatedHours} hours`);
// List all requirements
homework.requirements.forEach((req, index) => {
console.log(`${index + 1}. ${req.title} (${req.type})`);
console.log(` ${req.description}`);
});
// Display grading breakdown
console.log('\nGrading Criteria:');
homework.gradingCriteria.forEach((criterion) => {
console.log(`- ${criterion.name}: ${criterion.weight}%`);
console.log(` ${criterion.description}`);
criterion.rubric.forEach((level) => {
console.log(` - ${level.score}: ${level.description}`);
});
});
// Show submission instructions
console.log('\nSubmission:');
homework.submissionInstructions.forEach((instruction, i) => {
console.log(`${i + 1}. ${instruction}`);
});
// Access starter code if available
if (homework.starterCode) {
console.log('\nStarter Code:');
console.log(`Language: ${homework.starterCode.language}`);
console.log(`File: ${homework.starterCode.filename}`);
}
Grading Example
interface StudentSubmission {
requirementId: string;
score: number; // 0-100
}
function calculateFinalGrade(
homework: Homework,
submissions: StudentSubmission[]
): number {
let totalScore = 0;
homework.gradingCriteria.forEach((criterion) => {
// Find matching submission
const submission = submissions.find(
(s) => s.requirementId === criterion.name
);
if (submission) {
// Weight the score by criterion weight
totalScore += (submission.score * criterion.weight) / 100;
}
});
return totalScore;
}
// Example usage
const studentScores: StudentSubmission[] = [
{ requirementId: "Conceptual Understanding", score: 95 },
{ requirementId: "Setup Verification", score: 85 },
{ requirementId: "Bonus Exploration", score: 75 }
];
const finalGrade = calculateFinalGrade(homework, studentScores);
console.log(`Final Grade: ${finalGrade}%`);