{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Basic Python Flow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "from pathlib import Path\n",
    "\n",
    "# current notebook is inside ./data/python_example1/\n",
    "NOTEBOOK_DIR = Path().resolve()\n",
    "PROJECT_ROOT = NOTEBOOK_DIR.parent.parent     # go up two levels to project root\n",
    "\n",
    "sys.path.append(str(PROJECT_ROOT / \"src\"))\n",
    "\n",
    "from instantgrade import Evaluator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "✅ Student notebook generated at: submissions/student_notebook.ipynb\n"
     ]
    }
   ],
   "source": [
    "from instantgrade.utils.io_utils import generate_student_notebook\n",
    "\n",
    "generate_student_notebook(\n",
    "    instructor_path=\"./control_flow_assessment.ipynb\",\n",
    "    output_path=\"./submissions/student_notebook.ipynb\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Starting evaluation pipeline...\n",
      "Loading instructor solution...\n",
      "Loaded 15 questions.\n",
      "Discovered 59 submissions to grade.\n",
      "Starting Docker-based evaluation pipeline...\n",
      "[1/59] Grading: 2333311_Ashish_Bhardwaj.ipynb\n",
      "[Docker] Starting grading for 2333311_Ashish_Bhardwaj.ipynb\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Starting grading...\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'total_sum']\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Final resolved student identity -> name='Ashish Bhardwaj', roll='2333311'\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[2333311_Ashish_Bhardwaj.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[2/59] Grading: 2333331 Meenaakshi R Nair.ipynb\n",
      "[Docker] Starting grading for 2333331 Meenaakshi R Nair.ipynb\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Starting grading...\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'total_sum']\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Final resolved student identity -> name='Meenaakshi R Nair', roll='2333331'\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[2333331 Meenaakshi R Nair.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[3/59] Grading: 2333356_PYTHON.ipynb\n",
      "[Docker] Starting grading for 2333356_PYTHON.ipynb\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Starting grading...\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Final resolved student identity -> name='Vanditha Patwary', roll='2333356'\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[2333356_PYTHON.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[2333356_PYTHON.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[4/59] Grading: 2333441 (1).ipynb\n",
      "[Docker] Starting grading for 2333441 (1).ipynb\n",
      "[2333441 (1).ipynb][docker] [grader] Starting grading...\n",
      "[2333441 (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[2333441 (1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[2333441 (1).ipynb][docker] [grader] Final resolved student identity -> name=' R KISHORE KUMAR', roll='2333441'\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[2333441 (1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[2333441 (1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[5/59] Grading: Abhijith Vasudev_2333403 (1).ipynb\n",
      "[Docker] Starting grading for Abhijith Vasudev_2333403 (1).ipynb\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Starting grading...\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Namespace after execution: ['count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Final resolved student identity -> name='Abhijith A Vasudev', roll='2333403'\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Abhijith Vasudev_2333403 (1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[6/59] Grading: Archa.ipynb\n",
      "[Docker] Starting grading for Archa.ipynb\n",
      "[Archa.ipynb][docker] [grader] Starting grading...\n",
      "[Archa.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Archa.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Archa.ipynb][docker] [grader] Final resolved student identity -> name='Archa', roll='2333416'\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Archa.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Archa.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[7/59] Grading: Beryl Jacob(1).ipynb\n",
      "[Docker] Starting grading for Beryl Jacob(1).ipynb\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Starting grading...\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Final resolved student identity -> name='Beryl Jacob Saigi', roll='2333312'\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Beryl Jacob(1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[8/59] Grading: Beryl Jacob.ipynb\n",
      "[Docker] Starting grading for Beryl Jacob.ipynb\n",
      "[Beryl Jacob.ipynb][docker] [grader] Starting grading...\n",
      "[Beryl Jacob.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Beryl Jacob.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Beryl Jacob.ipynb][docker] [grader] Final resolved student identity -> name='Beryl Jacob Saigi', roll='2333312'\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Beryl Jacob.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Beryl Jacob.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[9/59] Grading: Bhoomika Jain 2333313.ipynb\n",
      "[Docker] Starting grading for Bhoomika Jain 2333313.ipynb\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Starting grading...\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Final resolved student identity -> name='Bhoomika Jain', roll='2333313'\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Bhoomika Jain 2333313.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[10/59] Grading: Dakshita_Bahal.ipynb\n",
      "[Docker] Starting grading for Dakshita_Bahal.ipynb\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Starting grading...\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Final resolved student identity -> name='Dakshita', roll='2333420'\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Dakshita_Bahal.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[11/59] Grading: Esther_2333424.ipynb\n",
      "[Docker] Starting grading for Esther_2333424.ipynb\n",
      "[Esther_2333424.ipynb][docker] [grader] Starting grading...\n",
      "[Esther_2333424.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Esther_2333424.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Esther_2333424.ipynb][docker] [grader] Final resolved student identity -> name='Esther Ann Cheriyan ', roll='2333424'\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Esther_2333424.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Esther_2333424.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[12/59] Grading: Gauri Agarwal_notebook (1).ipynb\n",
      "[Docker] Starting grading for Gauri Agarwal_notebook (1).ipynb\n",
      "[Gauri Agarwal_notebook (1).ipynb][docker] [grader] Starting grading...\n",
      "[Gauri Agarwal_notebook (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Gauri Agarwal_notebook (1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Gauri Agarwal_notebook (1).ipynb][docker] [grader] Final resolved student identity -> name='student name', roll='student roll number'\n",
      "[Gauri Agarwal_notebook (1).ipynb][docker] [grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\n",
      "[13/59] Grading: Heer Domadia_2333318.ipynb\n",
      "[Docker] Starting grading for Heer Domadia_2333318.ipynb\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Starting grading...\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Final resolved student identity -> name='Heer Domadia', roll='2333318'\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Heer Domadia_2333318.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[14/59] Grading: JAISHNAVY 2333319.ipynb\n",
      "[Docker] Starting grading for JAISHNAVY 2333319.ipynb\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Starting grading...\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Final resolved student identity -> name='Jaishnavy ', roll='2333319'\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[JAISHNAVY 2333319.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[15/59] Grading: Khushi Tayal 2333430.ipynb\n",
      "[Docker] Starting grading for Khushi Tayal 2333430.ipynb\n",
      "[Khushi Tayal 2333430.ipynb][docker] [grader] Starting grading...\n",
      "[Khushi Tayal 2333430.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Khushi Tayal 2333430.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Khushi Tayal 2333430.ipynb][docker] [grader] Final resolved student identity -> name='student name', roll='student roll number'\n",
      "[Khushi Tayal 2333430.ipynb][docker] [grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\n",
      "[16/59] Grading: Naiya_2333333 (5).ipynb\n",
      "[Docker] Starting grading for Naiya_2333333 (5).ipynb\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Starting grading...\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Naiya_2333333 (5).ipynb][docker] True\n",
      "[Naiya_2333333 (5).ipynb][docker] teen\n",
      "[Naiya_2333333 (5).ipynb][docker] 3\n",
      "[Naiya_2333333 (5).ipynb][docker] 6\n",
      "[Naiya_2333333 (5).ipynb][docker] number is negative\n",
      "[Naiya_2333333 (5).ipynb][docker] the number A is smaller\n",
      "[Naiya_2333333 (5).ipynb][docker] 3\n",
      "[Naiya_2333333 (5).ipynb][docker] [1, 4, 9]\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Final resolved student identity -> name='Naiya Kakkar', roll='2333333'\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Naiya_2333333 (5).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[17/59] Grading: Reet_Agarwal_2333338.ipynb\n",
      "[Docker] Starting grading for Reet_Agarwal_2333338.ipynb\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Starting grading...\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Final resolved student identity -> name='Reet Agarwal', roll='2333338'\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Reet_Agarwal_2333338.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[18/59] Grading: Saravana arjun.ipynb\n",
      "[Docker] Starting grading for Saravana arjun.ipynb\n",
      "[Saravana arjun.ipynb][docker] [grader] Starting grading...\n",
      "[Saravana arjun.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Saravana arjun.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Saravana arjun.ipynb][docker] [grader] Final resolved student identity -> name='Saravana Arjun', roll='2333447'\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Saravana arjun.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Saravana arjun.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[19/59] Grading: Shivam (1).ipynb\n",
      "[Docker] Starting grading for Shivam (1).ipynb\n",
      "[Shivam (1).ipynb][docker] [grader] Starting grading...\n",
      "[Shivam (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Shivam (1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Shivam (1).ipynb][docker] [grader] Final resolved student identity -> name='Shivam', roll='2333452'\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Shivam (1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Shivam (1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[20/59] Grading: Shreeji Anand (1).ipynb\n",
      "[Docker] Starting grading for Shreeji Anand (1).ipynb\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Starting grading...\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Final resolved student identity -> name='Shreeji Anand', roll='233453'\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Shreeji Anand (1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[21/59] Grading: Shreeji Anand (2).ipynb\n",
      "[Docker] Starting grading for Shreeji Anand (2).ipynb\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Starting grading...\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Final resolved student identity -> name='Shreeji Anand', roll='233453'\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[Shreeji Anand (2).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[22/59] Grading: aayan, 2333402.ipynb\n",
      "[Docker] Starting grading for aayan, 2333402.ipynb\n",
      "[aayan, 2333402.ipynb][docker] [grader] Starting grading...\n",
      "[aayan, 2333402.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[aayan, 2333402.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[aayan, 2333402.ipynb][docker] [grader] Final resolved student identity -> name='Aayan Nariyal', roll='2333402'\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[aayan, 2333402.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[aayan, 2333402.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[23/59] Grading: ajitesh_solanki (2).ipynb\n",
      "[Docker] Starting grading for ajitesh_solanki (2).ipynb\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Starting grading...\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Final resolved student identity -> name='Ajitesh Solanki', roll='2333304'\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[ajitesh_solanki (2).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[24/59] Grading: ajitesh_solanki.ipynb\n",
      "[Docker] Starting grading for ajitesh_solanki.ipynb\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Starting grading...\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Final resolved student identity -> name='Ajitesh Solanki', roll='2333304'\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[ajitesh_solanki.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[ajitesh_solanki.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[25/59] Grading: akshita_2333305 (10).ipynb\n",
      "[Docker] Starting grading for akshita_2333305 (10).ipynb\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Starting grading...\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[akshita_2333305 (10).ipynb][docker] False True\n",
      "[akshita_2333305 (10).ipynb][docker] Child Teen Adult Senior\n",
      "[akshita_2333305 (10).ipynb][docker] [1, 4, 9]\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Final resolved student identity -> name='Akshita Dhagat', roll='2333305'\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[akshita_2333305 (10).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[26/59] Grading: alviya.ipynb\n",
      "[Docker] Starting grading for alviya.ipynb\n",
      "[alviya.ipynb][docker] [grader] Starting grading...\n",
      "[alviya.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[alviya.ipynb][docker] [grader] Namespace after execution: ['List', 'classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[alviya.ipynb][docker] [grader] Final resolved student identity -> name='Alviya', roll='2333409'\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[alviya.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[alviya.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[27/59] Grading: naiya_2333333 (5)(1).ipynb\n",
      "[Docker] Starting grading for naiya_2333333 (5)(1).ipynb\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Starting grading...\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[naiya_2333333 (5)(1).ipynb][docker] True\n",
      "[naiya_2333333 (5)(1).ipynb][docker] teen\n",
      "[naiya_2333333 (5)(1).ipynb][docker] 3\n",
      "[naiya_2333333 (5)(1).ipynb][docker] 6\n",
      "[naiya_2333333 (5)(1).ipynb][docker] |n|\n",
      "[naiya_2333333 (5)(1).ipynb][docker] the number A is smaller\n",
      "[naiya_2333333 (5)(1).ipynb][docker] 3\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [1, 4, 9]\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Final resolved student identity -> name='Naiya Kakkar', roll='2333333'\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[naiya_2333333 (5)(1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[28/59] Grading: student_notebook (1) (1).ipynb\n",
      "[Docker] Starting grading for student_notebook (1) (1).ipynb\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Final resolved student identity -> name='Ajitesh Solanki', roll='2333304'\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1) (1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[29/59] Grading: student_notebook (1)(1).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(1).ipynb\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'nums', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Final resolved student identity -> name='Mythri', roll='2333438'\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[30/59] Grading: student_notebook (1)(10).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(10).ipynb\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Final resolved student identity -> name='Abhiram L', roll='2333327'\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(10).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[31/59] Grading: student_notebook (1)(11).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(11).ipynb\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'roll_number', 'total_sum']\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Final resolved student identity -> name='Sebin Varghese Shibu', roll='2333345'\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(11).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[32/59] Grading: student_notebook (1)(2).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(2).ipynb\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Final resolved student identity -> name='Saumya', roll='2333448'\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(2).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[33/59] Grading: student_notebook (1)(3).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(3).ipynb\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(3).ipynb][docker] True\n",
      "[student_notebook (1)(3).ipynb][docker] Senior\n",
      "[student_notebook (1)(3).ipynb][docker] Adult\n",
      "[student_notebook (1)(3).ipynb][docker] Child\n",
      "[student_notebook (1)(3).ipynb][docker] Teen\n",
      "[student_notebook (1)(3).ipynb][docker] 5\n",
      "[student_notebook (1)(3).ipynb][docker] 3\n",
      "[student_notebook (1)(3).ipynb][docker] 291\n",
      "[student_notebook (1)(3).ipynb][docker] False\n",
      "[student_notebook (1)(3).ipynb][docker] 9\n",
      "[student_notebook (1)(3).ipynb][docker] 9\n",
      "[student_notebook (1)(3).ipynb][docker] 44\n",
      "[student_notebook (1)(3).ipynb][docker] 90\n",
      "[student_notebook (1)(3).ipynb][docker] [[False], [True], [True], [True], [True], [False]]\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'roll_number', 'total_sum']\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Final resolved student identity -> name='Shubham Bhattacharya', roll='2333349'\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(3).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[34/59] Grading: student_notebook (1)(4).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(4).ipynb\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Final resolved student identity -> name='Khush Sawansukha', roll='2333429'\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(4).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[35/59] Grading: student_notebook (1)(5).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(5).ipynb\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Final resolved student identity -> name='Khush Sawansukha', roll='2333429'\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(5).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[36/59] Grading: student_notebook (1)(6).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(6).ipynb\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Namespace after execution: ['fibonacci', 'filter_odd', 'find_pairs', 'is_odd', 'is_palindrome', 'name', 'roll_number']\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Final resolved student identity -> name='aaryan dubey', roll='2333302'\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(6).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[37/59] Grading: student_notebook (1)(7).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(7).ipynb\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(7).ipynb][docker] True\n",
      "[student_notebook (1)(7).ipynb][docker] 6\n",
      "[student_notebook (1)(7).ipynb][docker] 15\n",
      "[student_notebook (1)(7).ipynb][docker] 1\n",
      "[student_notebook (1)(7).ipynb][docker] 5\n",
      "[student_notebook (1)(7).ipynb][docker] [1, 4, 9, 16]\n",
      "[student_notebook (1)(7).ipynb][docker] 2535\n",
      "[student_notebook (1)(7).ipynb][docker] [1, 3, 5, 7]\n",
      "[student_notebook (1)(7).ipynb][docker] [(2, 4), (1, 5)]\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Namespace after execution: ['count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Final resolved student identity -> name='Parth Thakur', roll='2333437'\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(7).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[38/59] Grading: student_notebook (1)(8).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(8).ipynb\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(8).ipynb][docker] [1, 4, 9]\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Final resolved student identity -> name='Raihan Sadath', roll='2333442'\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(8).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[39/59] Grading: student_notebook (1)(9).ipynb\n",
      "[Docker] Starting grading for student_notebook (1)(9).ipynb\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1)(9).ipynb][docker] 4\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Final resolved student identity -> name='Sania Thakrar', roll='2333343'\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1)(9).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[40/59] Grading: student_notebook (1).ipynb\n",
      "[Docker] Starting grading for student_notebook (1).ipynb\n",
      "[student_notebook (1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (1).ipynb][docker] [grader] Final resolved student identity -> name='Ankita Bajoria', roll='2333412'\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[41/59] Grading: student_notebook (2) (1)(1).ipynb\n",
      "[Docker] Starting grading for student_notebook (2) (1)(1).ipynb\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'roll_number', 'total_sum']\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Final resolved student identity -> name='Rajdeep Dutta', roll='2333337'\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (2) (1)(1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[42/59] Grading: student_notebook (2) (1)(2).ipynb\n",
      "[Docker] Starting grading for student_notebook (2) (1)(2).ipynb\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Final resolved student identity -> name='Reet Agarwal', roll='2333338'\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (2) (1)(2).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[43/59] Grading: student_notebook (2) (1).ipynb\n",
      "[Docker] Starting grading for student_notebook (2) (1).ipynb\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Final resolved student identity -> name='Eesha Bamangaya', roll='2333423'\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (2) (1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[44/59] Grading: student_notebook (2)(1).ipynb\n",
      "[Docker] Starting grading for student_notebook (2)(1).ipynb\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (2)(1).ipynb][docker] [1, 4, 9]\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Final resolved student identity -> name='Raihan Sadath', roll='2333442'\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (2)(1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[45/59] Grading: student_notebook (2).ipynb\n",
      "[Docker] Starting grading for student_notebook (2).ipynb\n",
      "[student_notebook (2).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (2).ipynb][docker] True\n",
      "[student_notebook (2).ipynb][docker] Teen\n",
      "[student_notebook (2).ipynb][docker] 6\n",
      "[student_notebook (2).ipynb][docker] 15\n",
      "[student_notebook (2).ipynb][docker] 1\n",
      "[student_notebook (2).ipynb][docker] 5\n",
      "[student_notebook (2).ipynb][docker] [1, 4, 9, 16]\n",
      "[student_notebook (2).ipynb][docker] 2535\n",
      "[student_notebook (2).ipynb][docker] [1, 3, 5, 7]\n",
      "[student_notebook (2).ipynb][docker] [(2, 4), (1, 5)]\n",
      "[student_notebook (2).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (2).ipynb][docker] [grader] Final resolved student identity -> name='Parth Thakur', roll='2333437'\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (2).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (2).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[46/59] Grading: student_notebook (3) (1).ipynb\n",
      "[Docker] Starting grading for student_notebook (3) (1).ipynb\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'numbers', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Final resolved student identity -> name='Sanjana Kolakkunnath', roll='2333446'\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (3) (1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[47/59] Grading: student_notebook (3).ipynb\n",
      "[Docker] Starting grading for student_notebook (3).ipynb\n",
      "[student_notebook (3).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (3).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (3).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (3).ipynb][docker] [grader] Final resolved student identity -> name='Reet Agarwal', roll='2333338'\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (3).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (3).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[48/59] Grading: student_notebook (4)(1).ipynb\n",
      "[Docker] Starting grading for student_notebook (4)(1).ipynb\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_pairs', 'get_absolute', 'is_empty', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Final resolved student identity -> name='Anandi', roll='2333411'\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (4)(1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[49/59] Grading: student_notebook (4).ipynb\n",
      "[Docker] Starting grading for student_notebook (4).ipynb\n",
      "[student_notebook (4).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (4).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (4).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (4).ipynb][docker] [grader] Final resolved student identity -> name='Anandi', roll='2333411'\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (4).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (4).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[50/59] Grading: student_notebook (5) (2).ipynb\n",
      "[Docker] Starting grading for student_notebook (5) (2).ipynb\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'lst', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Final resolved student identity -> name='Aditi Chauhan', roll='2333405'\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (5) (2).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[51/59] Grading: student_notebook (6) (1).ipynb\n",
      "[Docker] Starting grading for student_notebook (6) (1).ipynb\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (6) (1).ipynb][docker] False\n",
      "[student_notebook (6) (1).ipynb][docker] Adult\n",
      "[student_notebook (6) (1).ipynb][docker] (3, 'smaller of number')\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Final resolved student identity -> name='ishi goel', roll='58'\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (6) (1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[52/59] Grading: student_notebook (Kabir Tandion 2333428).ipynb\n",
      "[Docker] Starting grading for student_notebook (Kabir Tandion 2333428).ipynb\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Final resolved student identity -> name='Kabir Tandon', roll='2333428'\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook (Kabir Tandion 2333428).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[53/59] Grading: student_notebook 2333316 (2).ipynb\n",
      "[Docker] Starting grading for student_notebook 2333316 (2).ipynb\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Final resolved student identity -> name='Gouri P', roll='2333316'\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook 2333316 (2).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[54/59] Grading: student_notebook(1).ipynb\n",
      "[Docker] Starting grading for student_notebook(1).ipynb\n",
      "[student_notebook(1).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook(1).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook(1).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook(1).ipynb][docker] [grader] Final resolved student identity -> name='Khush Sawansukha', roll='2333429'\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook(1).ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook(1).ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[55/59] Grading: student_notebook(2).ipynb\n",
      "[Docker] Starting grading for student_notebook(2).ipynb\n",
      "[student_notebook(2).ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook(2).ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook(2).ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook(2).ipynb][docker] [grader] Final resolved student identity -> name='student name', roll='student roll number'\n",
      "[student_notebook(2).ipynb][docker] [grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\n",
      "[56/59] Grading: student_notebook.ipynb\n",
      "[Docker] Starting grading for student_notebook.ipynb\n",
      "[student_notebook.ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'get_odd_numbers', 'is_list_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook.ipynb][docker] [grader] Final resolved student identity -> name='Kushal Surana', roll='2333326'\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[57/59] Grading: student_notebook_2333317.ipynb\n",
      "[Docker] Starting grading for student_notebook_2333317.ipynb\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook_2333317.ipynb][docker] True\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Final resolved student identity -> name='Harshita Saha', roll='2333317'\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook_2333317.ipynb][docker] True\n",
      "[student_notebook_2333317.ipynb][docker] False\n",
      "[student_notebook_2333317.ipynb][docker] True\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook_2333317.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook_2333317.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[58/59] Grading: student_notebook_2333322.ipynb\n",
      "[Docker] Starting grading for student_notebook_2333322.ipynb\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook_2333322.ipynb][docker] True\n",
      "[student_notebook_2333322.ipynb][docker] Adult\n",
      "[student_notebook_2333322.ipynb][docker] <function find_length at 0xffff6890c040>\n",
      "[student_notebook_2333322.ipynb][docker] <function total_sum at 0xffff6890c0e0>\n",
      "[student_notebook_2333322.ipynb][docker] 90\n",
      "[student_notebook_2333322.ipynb][docker] 3\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_pairs', 'get_absolute', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Final resolved student identity -> name='jotham', roll='2333322'\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook_2333322.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook_2333322.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "[59/59] Grading: student_notebook_alda_2333306.ipynb\n",
      "[Docker] Starting grading for student_notebook_alda_2333306.ipynb\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Starting grading...\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Instructor defaults -> name='student name', roll='student roll number'\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Final resolved student identity -> name='Alda Nongmeikapam', roll='2333306'\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: is_odd\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: classify_age\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: find_length\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: total_sum\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: is_empty\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: get_absolute\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: min_of_two\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: count_even\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: square_all\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: find_max\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: number_exists\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: filter_odd\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: find_pairs\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: fibonacci\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] Evaluating question: is_palindrome\n",
      "[student_notebook_alda_2333306.ipynb][docker] [grader] results.json written with 47 rows.\n",
      "Execution phase completed successfully.\n",
      "[Reporting] Processed 2635 result rows.\n",
      "Report generation complete.\n",
      "Total evaluation completed in 35.56s.\n",
      "HTML report generated at: reports/evaluation_report.html\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'reports/evaluation_report.html'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from instantgrade.evaluator import Evaluator\n",
    "\n",
    "eval = Evaluator(\n",
    "    solution_file_path=\"./control_flow_assessment.ipynb\",\n",
    "    submission_folder_path=\"./submissions/CIA1EXAM\",\n",
    "    use_docker=True,       # or False for local test mode\n",
    "    log_path=\"./logs\",\n",
    "    log_level=\"normal\",\n",
    ")\n",
    "\n",
    "report = eval.run()\n",
    "eval.to_html(\"./reports/evaluation_report.html\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'student_path': PosixPath('submissions/CIA1EXAM/2333311_Ashish_Bhardwaj.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'total_sum']\\n[grader] Final resolved student identity -> name='Ashish Bhardwaj', roll='2333311'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 2.58,\n",
       "   'student_meta': {'name': 'Ashish Bhardwaj', 'roll_number': '2333311'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 2, in count_even\\nNameError: name \\'check\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 2, in count_even\\nNameError: name \\'check\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 2, in count_even\\nNameError: name \\'check\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/2333331 Meenaakshi R Nair.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'total_sum']\\n[grader] Final resolved student identity -> name='Meenaakshi R Nair', roll='2333331'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'Meenaakshi R Nair', 'roll_number': '2333331'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_length\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_length\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_length\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/2333356_PYTHON.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Vanditha Patwary', roll='2333356'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.61,\n",
       "   'student_meta': {'name': 'Vanditha Patwary', 'roll_number': '2333356'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/2333441 (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name=' R KISHORE KUMAR', roll='2333441'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.58,\n",
       "   'student_meta': {'name': ' R KISHORE KUMAR', 'roll_number': '2333441'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Abhijith Vasudev_2333403 (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Abhijith A Vasudev', roll='2333403'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.66,\n",
       "   'student_meta': {'name': 'Abhijith A Vasudev', 'roll_number': '2333403'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Archa.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Archa', roll='2333416'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.55,\n",
       "   'student_meta': {'name': 'Archa', 'roll_number': '2333416'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 4, in number_exists\\nNameError: name \\'element\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 4, in number_exists\\nNameError: name \\'element\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 4, in number_exists\\nNameError: name \\'element\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'fibonacci\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'fibonacci\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'fibonacci\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Beryl Jacob(1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Beryl Jacob Saigi', roll='2333312'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.64,\n",
       "   'student_meta': {'name': 'Beryl Jacob Saigi', 'roll_number': '2333312'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\n  File \"<student_cell_19>\", line 2, in <listcomp>\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\n  File \"<student_cell_19>\", line 2, in <listcomp>\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Beryl Jacob.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Beryl Jacob Saigi', roll='2333312'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.63,\n",
       "   'student_meta': {'name': 'Beryl Jacob Saigi', 'roll_number': '2333312'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\n  File \"<student_cell_19>\", line 2, in <listcomp>\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\n  File \"<student_cell_19>\", line 2, in <listcomp>\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Bhoomika Jain 2333313.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Bhoomika Jain', roll='2333313'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'Bhoomika Jain', 'roll_number': '2333313'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Dakshita_Bahal.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Dakshita', roll='2333420'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.7,\n",
       "   'student_meta': {'name': 'Dakshita', 'roll_number': '2333420'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'i\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'i\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 3, in total_sum\\nNameError: name \\'i\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'fibonacci\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'fibonacci\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'fibonacci\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Esther_2333424.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Esther Ann Cheriyan ', roll='2333424'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.6,\n",
       "   'student_meta': {'name': 'Esther Ann Cheriyan ', 'roll_number': '2333424'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Gauri Agarwal_notebook (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='student name', roll='student roll number'\\n[grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'student name',\n",
       "    'roll_number': 'student roll number'}},\n",
       "  'results': [{'question': '_identity_check_',\n",
       "    'assertion': '[missing student identity]',\n",
       "    'status': 'failed',\n",
       "    'error': \"Student notebook missing personalized name/roll_number. Please define:\\n\\nname = 'Your Name'\\nroll_number = 'Your Roll Number'\\n\",\n",
       "    'score': 0,\n",
       "    'description': 'Student did not customize name/roll_number.'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Heer Domadia_2333318.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Heer Domadia', roll='2333318'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.64,\n",
       "   'student_meta': {'name': 'Heer Domadia', 'roll_number': '2333318'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/JAISHNAVY 2333319.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='student name', roll='student roll number'\\n[grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'student name',\n",
       "    'roll_number': 'student roll number'}},\n",
       "  'results': [{'question': '_identity_check_',\n",
       "    'assertion': '[missing student identity]',\n",
       "    'status': 'failed',\n",
       "    'error': \"Student notebook missing personalized name/roll_number. Please define:\\n\\nname = 'Your Name'\\nroll_number = 'Your Roll Number'\\n\",\n",
       "    'score': 0,\n",
       "    'description': 'Student did not customize name/roll_number.'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Khushi Tayal 2333430.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='student name', roll='student roll number'\\n[grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.67,\n",
       "   'student_meta': {'name': 'student name',\n",
       "    'roll_number': 'student roll number'}},\n",
       "  'results': [{'question': '_identity_check_',\n",
       "    'assertion': '[missing student identity]',\n",
       "    'status': 'failed',\n",
       "    'error': \"Student notebook missing personalized name/roll_number. Please define:\\n\\nname = 'Your Name'\\nroll_number = 'Your Roll Number'\\n\",\n",
       "    'score': 0,\n",
       "    'description': 'Student did not customize name/roll_number.'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Naiya_2333333 (5).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\nTrue\\nteen\\n3\\n6\\nnumber is negative\\nthe number A is smaller\\n3\\n[1, 4, 9]\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Naiya Kakkar', roll='2333333'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'Naiya Kakkar', 'roll_number': '2333333'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 4, in find_max\\nTypeError: \\'list\\' object is not callable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 4, in find_max\\nTypeError: \\'list\\' object is not callable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 4, in find_max\\nTypeError: \\'list\\' object is not callable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 2, in number_exists\\nNameError: name \\'pa\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 2, in number_exists\\nNameError: name \\'pa\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 2, in number_exists\\nNameError: name \\'pa\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 5, in filter_odd\\nNameError: name \\'a\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 5, in filter_odd\\nNameError: name \\'a\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Reet_Agarwal_2333338.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Reet Agarwal', roll='2333338'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.6,\n",
       "   'student_meta': {'name': 'Reet Agarwal', 'roll_number': '2333338'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Saravana arjun.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Saravana Arjun', roll='2333447'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.65,\n",
       "   'student_meta': {'name': 'Saravana Arjun', 'roll_number': '2333447'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 3, in number_exists\\nNameError: name \\'true\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 3, in number_exists\\nNameError: name \\'true\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 3, in number_exists\\nNameError: name \\'true\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Shivam (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Shivam', roll='2333452'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.64,\n",
       "   'student_meta': {'name': 'Shivam', 'roll_number': '2333452'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Shreeji Anand (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Shreeji Anand', roll='233453'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.59,\n",
       "   'student_meta': {'name': 'Shreeji Anand', 'roll_number': '233453'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/Shreeji Anand (2).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Shreeji Anand', roll='233453'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.59,\n",
       "   'student_meta': {'name': 'Shreeji Anand', 'roll_number': '233453'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/aayan, 2333402.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Aayan Nariyal', roll='2333402'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.66,\n",
       "   'student_meta': {'name': 'Aayan Nariyal', 'roll_number': '2333402'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_3>\", line 5, in is_odd\\nNameError: name \\'Talse\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_27>\", line 6, in find_pairs\\nTypeError: list.append() takes exactly one argument (2 given)\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_27>\", line 6, in find_pairs\\nTypeError: list.append() takes exactly one argument (2 given)\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_27>\", line 6, in find_pairs\\nTypeError: list.append() takes exactly one argument (2 given)\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/ajitesh_solanki (2).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Ajitesh Solanki', roll='2333304'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'Ajitesh Solanki', 'roll_number': '2333304'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/ajitesh_solanki.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Ajitesh Solanki', roll='2333304'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.61,\n",
       "   'student_meta': {'name': 'Ajitesh Solanki', 'roll_number': '2333304'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/akshita_2333305 (10).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\nFalse True\\nChild Teen Adult Senior\\n[1, 4, 9]\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Akshita Dhagat', roll='2333305'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.71,\n",
       "   'student_meta': {'name': 'Akshita Dhagat', 'roll_number': '2333305'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_12>\", line 3, in find_length\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_12>\", line 3, in find_length\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_12>\", line 3, in find_length\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_26>\", line 3, in count_even\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_26>\", line 3, in count_even\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_26>\", line 3, in count_even\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/alviya.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['List', 'classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Alviya', roll='2333409'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.67,\n",
       "   'student_meta': {'name': 'Alviya', 'roll_number': '2333409'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/naiya_2333333 (5)(1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\nTrue\\nteen\\n3\\n6\\n|n|\\nthe number A is smaller\\n3\\n[1, 4, 9]\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Naiya Kakkar', roll='2333333'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.57,\n",
       "   'student_meta': {'name': 'Naiya Kakkar', 'roll_number': '2333333'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 4, in find_max\\nTypeError: \\'list\\' object is not callable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 4, in find_max\\nTypeError: \\'list\\' object is not callable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 4, in find_max\\nTypeError: \\'list\\' object is not callable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1) (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Ajitesh Solanki', roll='2333304'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.64,\n",
       "   'student_meta': {'name': 'Ajitesh Solanki', 'roll_number': '2333304'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_13>\", line 3, in get_absolute\\nTypeError: \\'int\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_13>\", line 3, in get_absolute\\nTypeError: \\'int\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_13>\", line 3, in get_absolute\\nTypeError: \\'int\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'nums', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Mythri', roll='2333438'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.6,\n",
       "   'student_meta': {'name': 'Mythri', 'roll_number': '2333438'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\nNameError: name \\'numbers\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\nNameError: name \\'numbers\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\nNameError: name \\'numbers\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(10).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Abhiram L', roll='2333327'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.55,\n",
       "   'student_meta': {'name': 'Abhiram L', 'roll_number': '2333327'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 4, in count_even\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 4, in count_even\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 4, in count_even\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 6, in find_max\\nNameError: name \\'max_value\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 6, in find_max\\nNameError: name \\'max_value\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 6, in find_max\\nNameError: name \\'max_value\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 2, in number_exists\\nTypeError: \\'list\\' object is not callable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 2, in number_exists\\nTypeError: \\'list\\' object is not callable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_23>\", line 2, in number_exists\\nTypeError: \\'list\\' object is not callable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(11).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'roll_number', 'total_sum']\\n[grader] Final resolved student identity -> name='Sebin Varghese Shibu', roll='2333345'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.56,\n",
       "   'student_meta': {'name': 'Sebin Varghese Shibu', 'roll_number': '2333345'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 4, in count_even\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 4, in count_even\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 4, in count_even\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(2).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Saumya', roll='2333448'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.56,\n",
       "   'student_meta': {'name': 'Saumya', 'roll_number': '2333448'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\nTypeError: can only concatenate list (not \"int\") to list\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\nTypeError: can only concatenate list (not \"int\") to list\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\nTypeError: can only concatenate list (not \"int\") to list\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nTypeError: unsupported operand type(s) for %: \\'list\\' and \\'int\\'\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nTypeError: unsupported operand type(s) for %: \\'list\\' and \\'int\\'\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in filter_odd\\nTypeError: unsupported operand type(s) for %: \\'list\\' and \\'int\\'\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(3).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\nTrue\\nSenior\\nAdult\\nChild\\nTeen\\n5\\n3\\n291\\nFalse\\n9\\n9\\n44\\n90\\n[[False], [True], [True], [True], [True], [False]]\\n[grader] Namespace after execution: ['classify_age', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'roll_number', 'total_sum']\\n[grader] Final resolved student identity -> name='Shubham Bhattacharya', roll='2333349'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.61,\n",
       "   'student_meta': {'name': 'Shubham Bhattacharya', 'roll_number': '2333349'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(4).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Khush Sawansukha', roll='2333429'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.58,\n",
       "   'student_meta': {'name': 'Khush Sawansukha', 'roll_number': '2333429'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(5).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Khush Sawansukha', roll='2333429'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.58,\n",
       "   'student_meta': {'name': 'Khush Sawansukha', 'roll_number': '2333429'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(6).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['fibonacci', 'filter_odd', 'find_pairs', 'is_odd', 'is_palindrome', 'name', 'roll_number']\\n[grader] Final resolved student identity -> name='aaryan dubey', roll='2333302'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.59,\n",
       "   'student_meta': {'name': 'aaryan dubey', 'roll_number': '2333302'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_length\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_length\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_length\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'total_sum\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'total_sum\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'total_sum\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'min_of_two\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'min_of_two\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'min_of_two\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(7).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\nTrue\\n6\\n15\\n1\\n5\\n[1, 4, 9, 16]\\n2535\\n[1, 3, 5, 7]\\n[(2, 4), (1, 5)]\\n[grader] Namespace after execution: ['count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Parth Thakur', roll='2333437'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.56,\n",
       "   'student_meta': {'name': 'Parth Thakur', 'roll_number': '2333437'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'classify_age\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(8).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[1, 4, 9]\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Raihan Sadath', roll='2333442'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.54,\n",
       "   'student_meta': {'name': 'Raihan Sadath', 'roll_number': '2333442'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 3, in count_even\\nNameError: name \\'your_list\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 3, in count_even\\nNameError: name \\'your_list\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 3, in count_even\\nNameError: name \\'your_list\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1)(9).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n4\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Sania Thakrar', roll='2333343'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'Sania Thakrar', 'roll_number': '2333343'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 4, in square_all\\nUnboundLocalError: cannot access local variable \\'num\\' where it is not associated with a value\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 4, in square_all\\nUnboundLocalError: cannot access local variable \\'num\\' where it is not associated with a value\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 4, in square_all\\nUnboundLocalError: cannot access local variable \\'num\\' where it is not associated with a value\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Ankita Bajoria', roll='2333412'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.57,\n",
       "   'student_meta': {'name': 'Ankita Bajoria', 'roll_number': '2333412'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\n  File \"<student_cell_19>\", line 2, in <listcomp>\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\n  File \"<student_cell_19>\", line 2, in <listcomp>\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (2) (1)(1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'roll_number', 'total_sum']\\n[grader] Final resolved student identity -> name='Rajdeep Dutta', roll='2333337'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'Rajdeep Dutta', 'roll_number': '2333337'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'square_all\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (2) (1)(2).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Reet Agarwal', roll='2333338'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.63,\n",
       "   'student_meta': {'name': 'Reet Agarwal', 'roll_number': '2333338'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (2) (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Eesha Bamangaya', roll='2333423'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.6,\n",
       "   'student_meta': {'name': 'Eesha Bamangaya', 'roll_number': '2333423'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 2, in count_even\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 2, in count_even\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 2, in count_even\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (2)(1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[1, 4, 9]\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Raihan Sadath', roll='2333442'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'Raihan Sadath', 'roll_number': '2333442'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 3, in count_even\\nNameError: name \\'your_list\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 3, in count_even\\nNameError: name \\'your_list\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 3, in count_even\\nNameError: name \\'your_list\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (2).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\nTrue\\nTeen\\n6\\n15\\n1\\n5\\n[1, 4, 9, 16]\\n2535\\n[1, 3, 5, 7]\\n[(2, 4), (1, 5)]\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Parth Thakur', roll='2333437'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.62,\n",
       "   'student_meta': {'name': 'Parth Thakur', 'roll_number': '2333437'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (3) (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'numbers', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Sanjana Kolakkunnath', roll='2333446'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.64,\n",
       "   'student_meta': {'name': 'Sanjana Kolakkunnath', 'roll_number': '2333446'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (3).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Reet Agarwal', roll='2333338'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.63,\n",
       "   'student_meta': {'name': 'Reet Agarwal', 'roll_number': '2333338'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (4)(1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_pairs', 'get_absolute', 'is_empty', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Anandi', roll='2333411'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.63,\n",
       "   'student_meta': {'name': 'Anandi', 'roll_number': '2333411'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (4).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Anandi', roll='2333411'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.58,\n",
       "   'student_meta': {'name': 'Anandi', 'roll_number': '2333411'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (5) (2).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'lst', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Aditi Chauhan', roll='2333405'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.58,\n",
       "   'student_meta': {'name': 'Aditi Chauhan', 'roll_number': '2333405'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nTypeError: count_even() missing 1 required positional argument: \\'lst\\'\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nTypeError: count_even() missing 1 required positional argument: \\'lst\\'\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nTypeError: count_even() missing 1 required positional argument: \\'lst\\'\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nTypeError: square_all() missing 1 required positional argument: \\'lst\\'\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nTypeError: square_all() missing 1 required positional argument: \\'lst\\'\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nTypeError: square_all() missing 1 required positional argument: \\'lst\\'\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_33>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_33>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_33>\", line 3, in filter_odd\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (6) (1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\nFalse\\nAdult\\n(3, 'smaller of number')\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='ishi goel', roll='58'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.57,\n",
       "   'student_meta': {'name': 'ishi goel', 'roll_number': '58'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'number_exists\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook (Kabir Tandion 2333428).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Kabir Tandon', roll='2333428'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.6,\n",
       "   'student_meta': {'name': 'Kabir Tandon', 'roll_number': '2333428'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_27>\", line 4, in find_pairs\\nNameError: name \\'a\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_27>\", line 4, in find_pairs\\nNameError: name \\'a\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_27>\", line 4, in find_pairs\\nNameError: name \\'a\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook 2333316 (2).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Gouri P', roll='2333316'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.58,\n",
       "   'student_meta': {'name': 'Gouri P', 'roll_number': '2333316'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook(1).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'is_empty', 'is_odd', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Khush Sawansukha', roll='2333429'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.63,\n",
       "   'student_meta': {'name': 'Khush Sawansukha', 'roll_number': '2333429'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'get_absolute\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 3, in square_all\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_palindrome\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook(2).ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='student name', roll='student roll number'\\n[grader] ❌ Fatal: student identity still matches instructor defaults. Skipping assertions.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.56,\n",
       "   'student_meta': {'name': 'student name',\n",
       "    'roll_number': 'student roll number'}},\n",
       "  'results': [{'question': '_identity_check_',\n",
       "    'assertion': '[missing student identity]',\n",
       "    'status': 'failed',\n",
       "    'error': \"Student notebook missing personalized name/roll_number. Please define:\\n\\nname = 'Your Name'\\nroll_number = 'Your Roll Number'\\n\",\n",
       "    'score': 0,\n",
       "    'description': 'Student did not customize name/roll_number.'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'fibonacci', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'get_odd_numbers', 'is_list_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Kushal Surana', roll='2333326'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.57,\n",
       "   'student_meta': {'name': 'Kushal Surana', 'roll_number': '2333326'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 2, in total_sum\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 2, in total_sum\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_9>\", line 2, in total_sum\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'count_even\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\n  File \"<student_cell_19>\", line 2, in <listcomp>\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\n  File \"<student_cell_19>\", line 2, in <listcomp>\\nNameError: name \\'n\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_21>\", line 2, in find_max\\nTypeError: \\'type\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'filter_odd\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook_2333317.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\nTrue\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Harshita Saha', roll='2333317'\\n[grader] Evaluating question: is_odd\\nTrue\\nFalse\\nTrue\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.6,\n",
       "   'student_meta': {'name': 'Harshita Saha', 'roll_number': '2333317'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_pairs\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_pairs\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_pairs\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook_2333322.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\nTrue\\nAdult\\n<function find_length at 0xffff8349c040>\\n<function total_sum at 0xffff8349c0e0>\\n90\\n3\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_pairs', 'get_absolute', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='jotham', roll='2333322'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.64,\n",
       "   'student_meta': {'name': 'jotham', 'roll_number': '2333322'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'is_empty\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 3, in count_even\\nTypeError: \\'int\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 3, in count_even\\nTypeError: \\'int\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_17>\", line 3, in count_even\\nTypeError: \\'int\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\nTypeError: \\'type\\' object cannot be interpreted as an integer\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\nTypeError: \\'type\\' object cannot be interpreted as an integer\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_19>\", line 2, in square_all\\nTypeError: \\'type\\' object cannot be interpreted as an integer\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nNameError: name \\'find_max\\' is not defined\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 2, in filter_odd\\nUnboundLocalError: cannot access local variable \\'n\\' where it is not associated with a value\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 2, in filter_odd\\nUnboundLocalError: cannot access local variable \\'n\\' where it is not associated with a value\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<student_cell_25>\", line 2, in filter_odd\\nUnboundLocalError: cannot access local variable \\'n\\' where it is not associated with a value\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]},\n",
       " {'student_path': PosixPath('submissions/CIA1EXAM/student_notebook_alda_2333306.ipynb'),\n",
       "  'execution': {'success': True,\n",
       "   'errors': [],\n",
       "   'docker_stdout': \"[grader] Starting grading...\\n[grader] Instructor defaults -> name='student name', roll='student roll number'\\n[grader] Namespace after execution: ['classify_age', 'count_even', 'fibonacci', 'filter_odd', 'find_length', 'find_max', 'find_pairs', 'get_absolute', 'is_empty', 'is_odd', 'is_palindrome', 'min_of_two', 'name', 'number_exists', 'roll_number', 'square_all', 'total_sum']\\n[grader] Final resolved student identity -> name='Alda Nongmeikapam', roll='2333306'\\n[grader] Evaluating question: is_odd\\n[grader] Evaluating question: classify_age\\n[grader] Evaluating question: find_length\\n[grader] Evaluating question: total_sum\\n[grader] Evaluating question: is_empty\\n[grader] Evaluating question: get_absolute\\n[grader] Evaluating question: min_of_two\\n[grader] Evaluating question: count_even\\n[grader] Evaluating question: square_all\\n[grader] Evaluating question: find_max\\n[grader] Evaluating question: number_exists\\n[grader] Evaluating question: filter_odd\\n[grader] Evaluating question: find_pairs\\n[grader] Evaluating question: fibonacci\\n[grader] Evaluating question: is_palindrome\\n[grader] results.json written with 47 rows.\",\n",
       "   'docker_stderr': '',\n",
       "   'elapsed': 0.61,\n",
       "   'student_meta': {'name': 'Alda Nongmeikapam', 'roll_number': '2333306'}},\n",
       "  'results': [{'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(3) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(4) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'is_odd',\n",
       "    'assertion': 'assert is_odd(1) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if the number is odd, `False` otherwise'},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(10) == 'Child'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(15) == 'Teen'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(35) == 'Adult'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'classify_age',\n",
       "    'assertion': \"assert classify_age(75) == 'Senior'\",\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': \"**Return:** `'Child'` if age < 13, `'Teen'` if 13-19, `'Adult'` if 20-59, `'Senior'` if 60+\"},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([1]) == 1',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'find_length',\n",
       "    'assertion': 'assert find_length([5, 10, 15, 20]) == 4',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The length of the list (number of elements)'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([1, 2, 3]) == 6',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([10]) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'total_sum',\n",
       "    'assertion': 'assert total_sum([]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The sum of all numbers in the list'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([1]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'is_empty',\n",
       "    'assertion': 'assert is_empty([None]) == False',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if list is empty, `False` otherwise'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(-5) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(10) == 10',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'get_absolute',\n",
       "    'assertion': 'assert get_absolute(0) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The absolute value (always positive) of the number'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(5, 3) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(100, 50) == 50',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'min_of_two',\n",
       "    'assertion': 'assert min_of_two(7, 7) == 7',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The minimum value between two numbers'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 2, 3, 4, 5, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([1, 3, 5]) == 0',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'count_even',\n",
       "    'assertion': 'assert count_even([2, 4, 6]) == 3',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The count of even numbers\\n**Example:** `[1, 2, 3, 4, 5, 6]` → `3` (because 2, 4, 6 are even)'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([1, 2, 3]) == [1, 4, 9]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([2, 4]) == [4, 16]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'square_all',\n",
       "    'assertion': 'assert square_all([]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list where each element is squared\\n**Example:** `[1, 2, 3]` → `[1, 4, 9]`'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([3, 7, 2, 9, 1]) == 9',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([5, 5, 5]) == 5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'find_max',\n",
       "    'assertion': 'assert find_max([-10, -5, -20]) == -5',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** The largest number in the list (assume list is not empty)'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(5, [1, 2, 5, 8]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(10, [1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'number_exists',\n",
       "    'assertion': 'assert number_exists(1, [1]) == True',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** `True` if number is in list, `False` otherwise\\n**Example:** `(5, [1, 2, 5, 8])` → `True`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 2, 3, 4, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([2, 4, 6]) == []',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'filter_odd',\n",
       "    'assertion': 'assert filter_odd([1, 3, 5]) == [1, 3, 5]',\n",
       "    'status': 'passed',\n",
       "    'error': None,\n",
       "    'score': 1,\n",
       "    'description': '**Return:** A new list containing only odd numbers from input list\\n**Example:** `[1, 2, 3, 4, 5]` → `[1, 3, 5]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 2, 3, 4, 5], 6)) == normalize_pairs([(1, 5), (2, 4)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([2, 4, 6], 8)) == normalize_pairs([(2, 6)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'find_pairs',\n",
       "    'assertion': 'assert normalize_pairs(find_pairs([1, 1, 1, 1], 2)) == normalize_pairs([(1, 1), (1, 1), (1, 1), (1, 1), (1, 1), (1, 1)])',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\n  File \"<context_code>\", line 5, in normalize_pairs\\nTypeError: \\'NoneType\\' object is not iterable\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of tuples, where each pair sums to target value\\n**Example:** `([1, 2, 3, 4, 5], 6)` → `[(1, 5), (2, 4)]`'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(5) == [0, 1, 1, 2, 3]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(1) == [0]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'fibonacci',\n",
       "    'assertion': 'assert fibonacci(6) == [0, 1, 1, 2, 3, 5]',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** A list of first n Fibonacci numbers\\n**Example:** n=5 → `[0, 1, 1, 2, 3]` (each number is sum of previous two)'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3, 2, 1]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([1, 2, 3]) == False',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([5]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'},\n",
       "   {'question': 'is_palindrome',\n",
       "    'assertion': 'assert is_palindrome([]) == True',\n",
       "    'status': 'failed',\n",
       "    'error': 'Traceback (most recent call last):\\n  File \"/app/src/instantgrade/comparison/comparison_service.py\", line 44, in run_assertions\\n    exec(compile(code, \"<assertion>\", \"exec\"), ns)\\n  File \"<assertion>\", line 1, in <module>\\nAssertionError\\n',\n",
       "    'score': 0,\n",
       "    'description': '**Return:** `True` if list reads the same forwards and backwards, `False` otherwise\\n**Example:** `[1, 2, 3, 2, 1]` → `True`, but `[1, 2, 3]` → `False`'}]}]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "report.executed_results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "x2JVLvRAu_lX"
   },
   "source": [
    "# EOF"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "provenance": []
  },
  "kernelspec": {
   "display_name": ".venv (3.13.7)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
