From f37ad74cec7d763a0582db87e739b43b3d831e4f Mon Sep 17 00:00:00 2001 From: Jessica Wilkins <67210629+jdwilkin4@users.noreply.github.com> Date: Mon, 16 Mar 2026 12:19:15 -0700 Subject: [PATCH] feat: add interactive python courses catalog (#66409) Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- client/i18n/locales/english/intro.json | 557 ++++++++++++++++++ client/i18n/locales/english/translations.json | 12 +- client/src/assets/superblock-icon.tsx | 12 +- curriculum/schema/curriculum-schema.js | 12 +- curriculum/src/build-curriculum.ts | 15 +- curriculum/structure/curriculum.json | 12 +- ...n-to-linear-data-structures-in-python.json | 9 + .../introduction-to-oop-in-python.json | 15 + .../introduction-to-python-basics.json | 20 + .../learn-algorithms-in-python.json | 14 + .../learn-dynamic-programming-in-python.json | 8 + .../learn-error-handling-in-python.json | 8 + .../learn-graphs-and-trees-in-python.json | 12 + .../learn-python-classes-and-objects.json | 11 + .../learn-python-dictionaries-and-sets.json | 10 + .../learn-python-loops-and-sequences.json | 9 + packages/shared/src/config/catalog.ts | 60 ++ .../src/config/certification-settings.ts | 12 +- packages/shared/src/config/curriculum.ts | 24 +- 19 files changed, 824 insertions(+), 8 deletions(-) create mode 100644 curriculum/structure/superblocks/introduction-to-linear-data-structures-in-python.json create mode 100644 curriculum/structure/superblocks/introduction-to-oop-in-python.json create mode 100644 curriculum/structure/superblocks/introduction-to-python-basics.json create mode 100644 curriculum/structure/superblocks/learn-algorithms-in-python.json create mode 100644 curriculum/structure/superblocks/learn-dynamic-programming-in-python.json create mode 100644 curriculum/structure/superblocks/learn-error-handling-in-python.json create mode 100644 curriculum/structure/superblocks/learn-graphs-and-trees-in-python.json create mode 100644 curriculum/structure/superblocks/learn-python-classes-and-objects.json create mode 100644 curriculum/structure/superblocks/learn-python-dictionaries-and-sets.json create mode 100644 curriculum/structure/superblocks/learn-python-loops-and-sequences.json diff --git a/client/i18n/locales/english/intro.json b/client/i18n/locales/english/intro.json index 9e5a630a601..c98747fe27d 100644 --- a/client/i18n/locales/english/intro.json +++ b/client/i18n/locales/english/intro.json @@ -1441,6 +1441,563 @@ } } }, + "introduction-to-python-basics": { + "title": "Introduction to Python Basics", + "summary": ["Learn the fundamentals of Python programming."], + "intro": [ + "In this interactive course, you will learn the basic syntax, data types, and control structures of Python." + ], + "note": "", + "blocks": { + "lecture-introduction-to-python": { + "title": "Introduction to Python", + "intro": [ + "In these lessons, you will learn what Python is, how to set up your development environment." + ] + }, + "lecture-understanding-variables-and-data-types": { + "title": "Understanding Variables and Data Types", + "intro": [ + "In these lessons, you will learn about variables and data types in Python." + ] + }, + "workshop-report-card-printer": { + "title": "Build a Report Card Printer", + "intro": [ + "In this workshop, you will build a report card printer to work with primitive data types in Python." + ] + }, + "lecture-introduction-to-python-strings": { + "title": "Introduction to Strings", + "intro": ["In these lessons, you will learn about strings in Python."] + }, + "workshop-employee-profile-generator": { + "title": "Build an Employee Profile Generator", + "intro": [ + "In this workshop, you will practice the fundamentals of string manipulation in Python by building a tool that generates formatted employee badges and analyzes employee codes." + ] + }, + "lecture-numbers-and-mathematical-operations": { + "title": "Numbers and Mathematical Operations", + "intro": [ + "In these lessons, you will learn about numbers and mathematical operations in Python." + ] + }, + "workshop-bill-splitter": { + "title": "Build a Bill Splitter", + "intro": [ + "In this workshop, you will build a bill splitter to practice working with numbers and mathematical operations in Python." + ] + }, + "lecture-booleans-and-conditionals": { + "title": "Booleans and Conditionals", + "intro": [ + "In these lessons, you will learn about booleans and conditionals in Python." + ] + }, + "workshop-movie-ticket-booking-calculator": { + "title": "Build a Movie Ticket Booking Calculator", + "intro": [ + "In this workshop, you will practice how to use booleans and conditional statements in Python by building a movie ticket booking calculator." + ] + }, + "lab-travel-weather-planner": { + "title": "Build a Travel Weather Planner", + "intro": [ + "In this lab, you will build a travel weather planner using conditionals." + ] + }, + "lecture-understanding-functions-and-scope": { + "title": "Understanding Functions and Scope", + "intro": [ + "In these lessons, you will learn about functions and scope in Python." + ] + }, + "lab-discount-calculator": { + "title": "Build an Apply Discount Function", + "intro": [ + "In this lab, you will practice basic Python by building a calculator to apply a discount to a price." + ] + }, + "workshop-caesar-cipher": { + "title": "Build a Caesar Cipher", + "intro": [ + "In this workshop, you'll build a Caesar cipher using basic Python concepts such as strings, conditionals, functions, and more." + ] + }, + "lab-rpg-character": { + "title": "Build an RPG Character", + "intro": [ + "In this lab you will practice basic Python by building an RPG character." + ] + }, + "review-python-basics": { + "title": "Python Basics Review", + "intro": [ + "Before you're quizzed on Python basics, you should review what you've learned about it.", + "In this review page, you will review working with strings, functions, comparison operators and more." + ] + }, + "quiz-python-basics": { + "title": "Python Basics Quiz", + "intro": [ + "Test what you've learned about Python basics with this quiz." + ] + } + } + }, + "learn-python-loops-and-sequences": { + "title": "Learn Python Loops and Sequences", + "summary": ["Learn how to work with loops and sequences in Python."], + "intro": [ + "In this interactive course, you will learn how to work with loops and sequences in Python." + ], + "note": "", + "blocks": { + "lecture-working-with-loops-and-sequences": { + "title": "Working with Loops and Sequences", + "intro": [ + "Learn about Working with Loops and Sequences in these lessons." + ] + }, + "workshop-pin-extractor": { + "title": "Build a Pin Extractor", + "intro": [ + "In this workshop you will build a function to extract secret pins hidden in poems." + ] + }, + "lab-number-pattern-generator": { + "title": "Build a Number Pattern Generator", + "intro": ["In this lab you will build a number pattern generator."] + }, + "review-loops-and-sequences": { + "title": "Loops and Sequences Review", + "intro": [ + "Before you're quizzed on loops and sequences, you should review what you've learned about them.", + "Open up this page to review concepts around loops, lists, tuples and some of their common methods." + ] + }, + "quiz-loops-and-sequences": { + "title": "Loops and Sequences Quiz", + "intro": [ + "Test what you've learned about loops and sequences in Python with this quiz." + ] + } + } + }, + "learn-python-dictionaries-and-sets": { + "title": "Learn Python Dictionaries and Sets", + "summary": ["Learn how to work with dictionaries and sets in Python."], + "intro": [ + "In this interactive course, you will learn how to work with dictionaries and sets in Python." + ], + "note": "", + "blocks": { + "lecture-working-with-dictionaries-and-sets": { + "title": "Working with Dictionaries and Sets", + "intro": [ + "Learn about working with dictionaries and sets in these lessons." + ] + }, + "lecture-working-with-modules": { + "title": "Working with Modules", + "intro": ["Learn about working with modules in these lessons."] + }, + "workshop-medical-data-validator": { + "title": "Build a Medical Data Validator", + "intro": [ + "In this workshop, you'll practice working with dictionaries and sets while validating a collection of medical data." + ] + }, + "lab-user-configuration-manager": { + "title": "Build a User Configuration Manager", + "intro": [ + "In this lab, you will practice working with dictionaries in Python." + ] + }, + "review-dictionaries-and-sets": { + "title": "Dictionaries and Sets Review", + "intro": [ + "Before you're quizzed on dictionaries and sets, you should review what you've learned about them.", + "Open up this page to review concepts around dictionaries, sets, and how to import modules." + ] + }, + "quiz-dictionaries-and-sets": { + "title": "Dictionaries and Sets Quiz", + "intro": [ + "Test what you've learned about dictionaries and sets in Python with this quiz." + ] + } + } + }, + "learn-error-handling-in-python": { + "title": "Learn Error Handling in Python", + "summary": ["Learn how to handle errors and exceptions in Python."], + "intro": [ + "In this interactive course, you will learn how to handle errors and exceptions in Python." + ], + "note": "", + "blocks": { + "lecture-understanding-error-handling": { + "title": "Understanding Error Handling", + "intro": [ + "In these lessons, you will learn about error handling in Python. You will learn about the different types of errors, some good debugging practices, what exceptions are, and how to handle them." + ] + }, + "lab-isbn-validator": { + "title": "Debug an ISBN Validator", + "intro": [ + "In this lab, you will start with a bugged app, and you will need to debug and fix the bugs until it is working properly." + ] + }, + "review-error-handling": { + "title": "Error Handling Review", + "intro": [ + "Before you're quizzed on error handling, you should review what you've learned about it." + ] + }, + "quiz-error-handling": { + "title": "Error Handling Quiz", + "intro": [ + "Test what you've learned about Error Handling in Python with this quiz." + ] + } + } + }, + "learn-python-classes-and-objects": { + "title": "Learn Python Classes and Objects", + "summary": ["Learn how to work with classes and objects in Python."], + "intro": [ + "In this interactive course, you will learn how to work with classes and objects in Python." + ], + "note": "", + "blocks": { + "lecture-classes-and-objects": { + "title": "Classes and Objects", + "intro": ["Learn about Classes and Objects in these lessons."] + }, + "workshop-musical-instrument-inventory": { + "title": "Build a Musical Instrument Inventory", + "intro": [ + "In this workshop, you will learn about classes, objects, and methods in Python by building a simple musical instrument inventory." + ] + }, + "lab-planet-class": { + "title": "Build a Planet Class", + "intro": [ + "In this lab you will create a class that represents a planet." + ] + }, + "workshop-email-simulator": { + "title": "Build an Email Simulator", + "intro": [ + "In this workshop you will implement classes and objects by building an email simulator that simulates sending, receiving, and managing emails between different users." + ] + }, + "lab-budget-app": { + "title": "Build a Budget App", + "intro": [ + "In this lab you will build a budget app and practice creating a class and methods for that class." + ] + }, + "review-classes-and-objects": { + "title": "Classes and Objects Review", + "intro": [ + "Before you're quizzed on classes and objects, you should review what you've learned about them.", + "Open up this page to review concepts like how classes work, what are objects, methods, attributes, special methods and more." + ] + }, + "quiz-classes-and-objects": { + "title": "Classes and Objects Quiz", + "intro": [ + "Test what you've learned about classes and objects in Python with this quiz." + ] + } + } + }, + "introduction-to-oop-in-python": { + "title": "Introduction to OOP in Python", + "summary": [ + "Learn the basics of Object-Oriented Programming (OOP) in Python." + ], + "intro": [ + "In this interactive course, you will learn the basics of Object-Oriented Programming (OOP) in Python." + ], + "note": "", + "blocks": { + "lecture-understanding-object-oriented-programming-and-encapsulation": { + "title": "Understanding Object Oriented Programming and Encapsulation", + "intro": [ + "Learn about Understanding Object Oriented Programming and Encapsulation in these lessons." + ] + }, + "workshop-salary-tracker": { + "title": "Build a Salary Tracker", + "intro": [ + "In this workshop, you'll practice encapsulation, properties, and other OOP concepts by building a salary tracking system for employees." + ] + }, + "lab-game-character-stats": { + "title": "Build a Game Character Stats Tracker", + "intro": [ + "In this lab, you will build a game character with different stats using object-oriented programming." + ] + }, + "lecture-understanding-inheritance-and-polymorphism": { + "title": "Understanding Inheritance and Polymorphism", + "intro": [ + "Learn about Understanding Inheritance and Polymorphism in these lessons." + ] + }, + "workshop-media-catalogue": { + "title": "Build a Media Catalogue", + "intro": [ + "In this workshop, you will create a media catalogue application using object-oriented programming principles." + ] + }, + "lecture-understanding-abstraction": { + "title": "Understanding Abstraction", + "intro": ["Learn about Understanding Abstraction in these lessons."] + }, + "workshop-discount-calculator": { + "title": "Build a Discount Calculator", + "intro": [ + "In this workshop you will build a flexible discount pricing calculator through abstract base classes, allowing multiple discount algorithms to be applied interchangeably without modifying the core logic." + ] + }, + "lab-player-interface": { + "title": "Build a Player Interface", + "intro": [ + "In this lab, you'll use the abc module to build a player interface." + ] + }, + "lab-polygon-area-calculator": { + "title": "Build a Polygon Area Calculator", + "intro": [ + "In this lab, you will use object-oriented programming to calculate the areas of different polygons like squares and rectangles." + ] + }, + "review-object-oriented-programming": { + "title": "Object Oriented Programming Review", + "intro": [ + "Before you're quizzed on object oriented programming, you should review what you've learned about it." + ] + }, + "quiz-object-oriented-programming": { + "title": "Object Oriented Programming Quiz", + "intro": [ + "Test what you've learned about object oriented programming in Python with this quiz." + ] + } + } + }, + "introduction-to-linear-data-structures-in-python": { + "title": "Introduction to Linear Data Structures in Python", + "summary": ["Learn the basics of linear data structures in Python."], + "intro": [ + "In this interactive course, you will learn the basics of linear data structures in Python." + ], + "note": "", + "blocks": { + "lecture-working-with-common-data-structures": { + "title": "Working with Common Data Structures", + "intro": [ + "Learn about Working with Common Data Structures in these lessons." + ] + }, + "workshop-linked-list-class": { + "title": "Build a Linked List", + "intro": [ + "In this workshop, you'll practice working with data structures by building a linked list." + ] + }, + "lab-hash-table": { + "title": "Build a Hash Table", + "intro": [ + "A hash table is a data structure that is used to store key-value pairs and is optimized for quick lookups.", + "In this lab, you will use your knowledge about data structures to build a hash table." + ] + }, + "review-data-structures": { + "title": "Data Structures Review", + "intro": [ + "Before you're quizzed on data structures, you should review what you've learned about them.", + "Open up this page to review concepts like the different data structures, algorithms, time and space complexity, and big O notation." + ] + }, + "quiz-data-structures": { + "title": "Data Structures Quiz", + "intro": [ + "Test what you've learned about data structures in Python with this quiz." + ] + } + } + }, + "learn-algorithms-in-python": { + "title": "Learn Algorithms in Python", + "summary": ["Learn the basics of algorithms in Python."], + "intro": [ + "In this interactive course, you will learn the basics of algorithms in Python." + ], + "note": "", + "blocks": { + "lecture-searching-and-sorting-algorithms": { + "title": "Searching and Sorting Algorithms", + "intro": [ + "Learn about fundamental searching and sorting algorithms, including linear search, binary search, and merge sort.", + "These lessons cover algorithm implementations, time and space complexity analysis, and the divide and conquer programming paradigm." + ] + }, + "workshop-binary-search": { + "title": "Implement the Binary Search Algorithm", + "intro": [ + "The binary search algorithm is a searching algorithm used to find a target item in a sorted list.", + "In this workshop, you'll implement the binary search algorithm and return the path it took to find the target or return 'Value not found'." + ] + }, + "lab-bisection-method": { + "title": "Implement the Bisection Method", + "intro": [ + "In this lab, you will implement the bisection method to find the square root of a number." + ] + }, + "workshop-merge-sort": { + "title": "Implement the Merge Sort Algorithm", + "intro": [ + "The merge sort algorithm is a sorting algorithm based on the divide and conquer principle.", + "In this workshop, you'll implement the merge sort algorithm to sort a list of random numbers." + ] + }, + "lab-quicksort": { + "title": "Implement the Quicksort Algorithm", + "intro": [ + "In this lab you will implement the quicksort algorithm to sort a list of integers." + ] + }, + "lab-selection-sort": { + "title": "Implement the Selection Sort Algorithm", + "intro": [ + "In this lab you will implement the selection sort algorithm." + ] + }, + "lab-luhn-algorithm": { + "title": "Implement the Luhn Algorithm", + "intro": [ + "In this lab, you will implement the Luhn algorithm to validate identification numbers such as credit card numbers." + ] + }, + "lab-tower-of-hanoi": { + "title": "Implement the Tower of Hanoi Algorithm", + "intro": [ + "In this lab, you will implement an algorithm to solve the Tower of Hanoi puzzle." + ] + }, + "review-searching-and-sorting-algorithms": { + "title": "Searching and Sorting Algorithms Review", + "intro": [ + "Before you're quizzed on searching and sorting algorithms, you should review what you've learned about them." + ] + }, + "quiz-searching-and-sorting-algorithms": { + "title": "Searching and Sorting Algorithms Quiz", + "intro": [ + "Test what you've learned about searching and sorting algorithms in Python with this quiz." + ] + } + } + }, + "learn-graphs-and-trees-in-python": { + "title": "Learn Graphs and Trees in Python", + "summary": ["Learn the basics of graphs and trees in Python."], + "intro": [ + "In this interactive course, you will learn the basics of graphs and trees in Python." + ], + "note": "", + "blocks": { + "lecture-understanding-graphs-and-trees": { + "title": "Understanding Graphs and Trees", + "intro": [ + "In this lesson, you will learn about fundamental data structures like graphs, trees, and their practical applications in computer science." + ] + }, + "workshop-shortest-path-algorithm": { + "title": "Implement the Shortest Path Algorithm", + "intro": [ + "In this workshop you will implement an algorithm to find the shortest path between two nodes in a graph." + ] + }, + "lab-adjacency-list-to-matrix-converter": { + "title": "Build an Adjacency List to Matrix Converter", + "intro": [ + "In this lab, you will implement a function that converts an adjacency list representation of a graph into an adjacency matrix representation." + ] + }, + "workshop-breadth-first-search": { + "title": "Implement the Breadth-First Search Algorithm", + "intro": [ + "In this workshop, you will use the breadth-first search algorithm to generate all valid combinations of parentheses." + ] + }, + "lab-depth-first-search": { + "title": "Implement the Depth-First Search Algorithm", + "intro": [ + "In this lab, you will implement the Depth-First Search Algorithm." + ] + }, + "lab-n-queens-problem": { + "title": "Implement the N-Queens Problem", + "intro": [ + "In this lab, you will implement a solution for the N-Queens problem." + ] + }, + "review-graphs-and-trees": { + "title": "Graphs and Trees Review", + "intro": [ + "Before you're quizzed on graphs and trees, you should review what you've learned about them." + ] + }, + "quiz-graphs-and-trees": { + "title": "Graphs and Trees Quiz", + "intro": [ + "Test what you've learned about graphs and trees in Python with this quiz." + ] + } + } + }, + "learn-dynamic-programming-in-python": { + "title": "Learn Dynamic Programming in Python", + "summary": ["Learn the basics of dynamic programming in Python."], + "intro": [ + "In this interactive course, you will learn the basics of dynamic programming in Python." + ], + "note": "", + "blocks": { + "lecture-understanding-dynamic-programming": { + "title": "Understanding Dynamic Programming", + "intro": [ + "In this lesson, you will learn about dynamic programming, an algorithmic technique used to solve complex problems efficiently by breaking them down into simpler subproblems." + ] + }, + "lab-nth-fibonacci-number": { + "title": "Build an Nth Fibonacci Number Calculator", + "intro": [ + "In this lab you will implement a Fibonacci sequence calculator using a dynamic programming approach." + ] + }, + "review-dynamic-programming": { + "title": "Dynamic Programming Review", + "intro": [ + "Before you're quizzed on dynamic programming, you should review what you've learned about it." + ] + }, + "quiz-dynamic-programming": { + "title": "Dynamic Programming Quiz", + "intro": [ + "Test what you've learned about dynamic programming in Python with this quiz." + ] + } + } + }, "information-security": { "title": "Information Security", "intro": [ diff --git a/client/i18n/locales/english/translations.json b/client/i18n/locales/english/translations.json index 29c7b5a05b4..acbf03bfb4e 100644 --- a/client/i18n/locales/english/translations.json +++ b/client/i18n/locales/english/translations.json @@ -1321,7 +1321,17 @@ "learn-bash-scripting": "Learn Bash Scripting", "learn-sql-and-bash": "Learn SQL and Bash", "introduction-to-nano": "Introduction to Nano", - "introduction-to-git-and-github": "Introduction to Git and GitHub" + "introduction-to-git-and-github": "Introduction to Git and GitHub", + "introduction-to-python-basics": "Introduction to Python Basics", + "learn-python-loops-and-sequences": "Learn Python Loops and Sequences", + "learn-python-dictionaries-and-sets": "Learn Python Dictionaries and Sets", + "learn-error-handling-in-python": "Learn Error Handling in Python", + "learn-python-classes-and-objects": "Learn Python Classes and Objects", + "introduction-to-oop-in-python": "Introduction to OOP in Python", + "introduction-to-linear-data-structures-in-python": "Introduction to Linear Data Structures in Python", + "learn-algorithms-in-python": "Learn Algorithms in Python", + "learn-graphs-and-trees-in-python": "Learn Graphs and Trees in Python", + "learn-dynamic-programming-in-python": "Learn Dynamic Programming in Python" } }, "certification-card": { diff --git a/client/src/assets/superblock-icon.tsx b/client/src/assets/superblock-icon.tsx index c4c00f4d797..946bccc7807 100644 --- a/client/src/assets/superblock-icon.tsx +++ b/client/src/assets/superblock-icon.tsx @@ -97,7 +97,17 @@ const iconMap = { [SuperBlocks.LearnSQLAndBash]: DatabaseIcon, [SuperBlocks.IntroductionToNano]: Code, [SuperBlocks.IntroductionToGitAndGithub]: Code, - [SuperBlocks.LearnPromptingFundamentals]: Clipboard + [SuperBlocks.LearnPromptingFundamentals]: Clipboard, + [SuperBlocks.IntroductionToPythonBasics]: PythonIcon, + [SuperBlocks.LearnPythonLoopsAndSequences]: PythonIcon, + [SuperBlocks.LearnPythonDictionariesAndSets]: PythonIcon, + [SuperBlocks.LearnErrorHandlingInPython]: PythonIcon, + [SuperBlocks.LearnPythonClassesAndObjects]: PythonIcon, + [SuperBlocks.IntroductionToOOPInPython]: PythonIcon, + [SuperBlocks.IntroductionToLinearDataStructuresInPython]: PythonIcon, + [SuperBlocks.LearnAlgorithmsInPython]: PythonIcon, + [SuperBlocks.LearnGraphsAndTreesInPython]: PythonIcon, + [SuperBlocks.LearnDynamicProgrammingInPython]: PythonIcon }; type SuperBlockIconProps = { diff --git a/curriculum/schema/curriculum-schema.js b/curriculum/schema/curriculum-schema.js index 7b9d6a8a1cc..9eeec5d11f6 100644 --- a/curriculum/schema/curriculum-schema.js +++ b/curriculum/schema/curriculum-schema.js @@ -66,7 +66,17 @@ const superblocks = [ 'learn-sql-and-bash', 'introduction-to-nano', 'introduction-to-git-and-github', - 'learn-prompting-fundamentals' + 'learn-prompting-fundamentals', + 'introduction-to-python-basics', + 'learn-python-loops-and-sequences', + 'learn-python-dictionaries-and-sets', + 'learn-error-handling-in-python', + 'learn-python-classes-and-objects', + 'introduction-to-oop-in-python', + 'introduction-to-linear-data-structures-in-python', + 'learn-algorithms-in-python', + 'learn-graphs-and-trees-in-python', + 'learn-dynamic-programming-in-python' ]; const schema = Joi.object().keys( diff --git a/curriculum/src/build-curriculum.ts b/curriculum/src/build-curriculum.ts index 1d2084a9e4c..a075f2f1477 100644 --- a/curriculum/src/build-curriculum.ts +++ b/curriculum/src/build-curriculum.ts @@ -239,7 +239,20 @@ export const superBlockNames = { 'learn-sql-and-bash': SuperBlocks.LearnSQLAndBash, 'introduction-to-nano': SuperBlocks.IntroductionToNano, 'introduction-to-git-and-github': SuperBlocks.IntroductionToGitAndGithub, - 'learn-prompting-fundamentals': SuperBlocks.LearnPromptingFundamentals + 'learn-prompting-fundamentals': SuperBlocks.LearnPromptingFundamentals, + 'introduction-to-python-basics': SuperBlocks.IntroductionToPythonBasics, + 'learn-python-loops-and-sequences': SuperBlocks.LearnPythonLoopsAndSequences, + 'learn-python-dictionaries-and-sets': + SuperBlocks.LearnPythonDictionariesAndSets, + 'learn-error-handling-in-python': SuperBlocks.LearnErrorHandlingInPython, + 'learn-python-classes-and-objects': SuperBlocks.LearnPythonClassesAndObjects, + 'introduction-to-oop-in-python': SuperBlocks.IntroductionToOOPInPython, + 'introduction-to-linear-data-structures-in-python': + SuperBlocks.IntroductionToLinearDataStructuresInPython, + 'learn-algorithms-in-python': SuperBlocks.LearnAlgorithmsInPython, + 'learn-graphs-and-trees-in-python': SuperBlocks.LearnGraphsAndTreesInPython, + 'learn-dynamic-programming-in-python': + SuperBlocks.LearnDynamicProgrammingInPython }; export const superBlockToFilename = Object.entries(superBlockNames).reduce( diff --git a/curriculum/structure/curriculum.json b/curriculum/structure/curriculum.json index d8bd24c777e..bec0d74c9bf 100644 --- a/curriculum/structure/curriculum.json +++ b/curriculum/structure/curriculum.json @@ -71,7 +71,17 @@ "learn-sql-and-bash", "introduction-to-nano", "introduction-to-git-and-github", - "learn-prompting-fundamentals" + "learn-prompting-fundamentals", + "introduction-to-python-basics", + "learn-python-loops-and-sequences", + "learn-python-dictionaries-and-sets", + "learn-error-handling-in-python", + "learn-python-classes-and-objects", + "introduction-to-oop-in-python", + "introduction-to-linear-data-structures-in-python", + "learn-algorithms-in-python", + "learn-graphs-and-trees-in-python", + "learn-dynamic-programming-in-python" ], "certifications": [ "a2-english-for-developers", diff --git a/curriculum/structure/superblocks/introduction-to-linear-data-structures-in-python.json b/curriculum/structure/superblocks/introduction-to-linear-data-structures-in-python.json new file mode 100644 index 00000000000..4eba73572c5 --- /dev/null +++ b/curriculum/structure/superblocks/introduction-to-linear-data-structures-in-python.json @@ -0,0 +1,9 @@ +{ + "blocks": [ + "lecture-working-with-common-data-structures", + "workshop-linked-list-class", + "lab-hash-table", + "review-data-structures", + "quiz-data-structures" + ] +} diff --git a/curriculum/structure/superblocks/introduction-to-oop-in-python.json b/curriculum/structure/superblocks/introduction-to-oop-in-python.json new file mode 100644 index 00000000000..0325cd29676 --- /dev/null +++ b/curriculum/structure/superblocks/introduction-to-oop-in-python.json @@ -0,0 +1,15 @@ +{ + "blocks": [ + "lecture-understanding-object-oriented-programming-and-encapsulation", + "workshop-salary-tracker", + "lab-game-character-stats", + "lecture-understanding-inheritance-and-polymorphism", + "workshop-media-catalogue", + "lecture-understanding-abstraction", + "workshop-discount-calculator", + "lab-player-interface", + "lab-polygon-area-calculator", + "review-object-oriented-programming", + "quiz-object-oriented-programming" + ] +} diff --git a/curriculum/structure/superblocks/introduction-to-python-basics.json b/curriculum/structure/superblocks/introduction-to-python-basics.json new file mode 100644 index 00000000000..a88934f20a4 --- /dev/null +++ b/curriculum/structure/superblocks/introduction-to-python-basics.json @@ -0,0 +1,20 @@ +{ + "blocks": [ + "lecture-introduction-to-python", + "lecture-understanding-variables-and-data-types", + "workshop-report-card-printer", + "lecture-introduction-to-python-strings", + "workshop-employee-profile-generator", + "lecture-numbers-and-mathematical-operations", + "workshop-bill-splitter", + "lecture-booleans-and-conditionals", + "workshop-movie-ticket-booking-calculator", + "lab-travel-weather-planner", + "lecture-understanding-functions-and-scope", + "lab-discount-calculator", + "workshop-caesar-cipher", + "lab-rpg-character", + "review-python-basics", + "quiz-python-basics" + ] +} diff --git a/curriculum/structure/superblocks/learn-algorithms-in-python.json b/curriculum/structure/superblocks/learn-algorithms-in-python.json new file mode 100644 index 00000000000..2f875218ce9 --- /dev/null +++ b/curriculum/structure/superblocks/learn-algorithms-in-python.json @@ -0,0 +1,14 @@ +{ + "blocks": [ + "lecture-searching-and-sorting-algorithms", + "workshop-binary-search", + "lab-bisection-method", + "workshop-merge-sort", + "lab-quicksort", + "lab-selection-sort", + "lab-luhn-algorithm", + "lab-tower-of-hanoi", + "review-searching-and-sorting-algorithms", + "quiz-searching-and-sorting-algorithms" + ] +} diff --git a/curriculum/structure/superblocks/learn-dynamic-programming-in-python.json b/curriculum/structure/superblocks/learn-dynamic-programming-in-python.json new file mode 100644 index 00000000000..92ca8de349d --- /dev/null +++ b/curriculum/structure/superblocks/learn-dynamic-programming-in-python.json @@ -0,0 +1,8 @@ +{ + "blocks": [ + "lecture-understanding-dynamic-programming", + "lab-nth-fibonacci-number", + "review-dynamic-programming", + "quiz-dynamic-programming" + ] +} diff --git a/curriculum/structure/superblocks/learn-error-handling-in-python.json b/curriculum/structure/superblocks/learn-error-handling-in-python.json new file mode 100644 index 00000000000..5f75f96fcd0 --- /dev/null +++ b/curriculum/structure/superblocks/learn-error-handling-in-python.json @@ -0,0 +1,8 @@ +{ + "blocks": [ + "lecture-understanding-error-handling", + "lab-isbn-validator", + "review-error-handling", + "quiz-error-handling" + ] +} diff --git a/curriculum/structure/superblocks/learn-graphs-and-trees-in-python.json b/curriculum/structure/superblocks/learn-graphs-and-trees-in-python.json new file mode 100644 index 00000000000..0ca3b29ce1d --- /dev/null +++ b/curriculum/structure/superblocks/learn-graphs-and-trees-in-python.json @@ -0,0 +1,12 @@ +{ + "blocks": [ + "lecture-understanding-graphs-and-trees", + "workshop-shortest-path-algorithm", + "lab-adjacency-list-to-matrix-converter", + "workshop-breadth-first-search", + "lab-depth-first-search", + "lab-n-queens-problem", + "review-graphs-and-trees", + "quiz-graphs-and-trees" + ] +} diff --git a/curriculum/structure/superblocks/learn-python-classes-and-objects.json b/curriculum/structure/superblocks/learn-python-classes-and-objects.json new file mode 100644 index 00000000000..814980cde04 --- /dev/null +++ b/curriculum/structure/superblocks/learn-python-classes-and-objects.json @@ -0,0 +1,11 @@ +{ + "blocks": [ + "lecture-classes-and-objects", + "workshop-musical-instrument-inventory", + "lab-planet-class", + "workshop-email-simulator", + "lab-budget-app", + "review-classes-and-objects", + "quiz-classes-and-objects" + ] +} diff --git a/curriculum/structure/superblocks/learn-python-dictionaries-and-sets.json b/curriculum/structure/superblocks/learn-python-dictionaries-and-sets.json new file mode 100644 index 00000000000..dab51d7b0be --- /dev/null +++ b/curriculum/structure/superblocks/learn-python-dictionaries-and-sets.json @@ -0,0 +1,10 @@ +{ + "blocks": [ + "lecture-working-with-dictionaries-and-sets", + "lecture-working-with-modules", + "workshop-medical-data-validator", + "lab-user-configuration-manager", + "review-dictionaries-and-sets", + "quiz-dictionaries-and-sets" + ] +} diff --git a/curriculum/structure/superblocks/learn-python-loops-and-sequences.json b/curriculum/structure/superblocks/learn-python-loops-and-sequences.json new file mode 100644 index 00000000000..b1ed57080e3 --- /dev/null +++ b/curriculum/structure/superblocks/learn-python-loops-and-sequences.json @@ -0,0 +1,9 @@ +{ + "blocks": [ + "lecture-working-with-loops-and-sequences", + "workshop-pin-extractor", + "lab-number-pattern-generator", + "review-loops-and-sequences", + "quiz-loops-and-sequences" + ] +} diff --git a/packages/shared/src/config/catalog.ts b/packages/shared/src/config/catalog.ts index 70d873ae268..85184c69f7b 100644 --- a/packages/shared/src/config/catalog.ts +++ b/packages/shared/src/config/catalog.ts @@ -256,5 +256,65 @@ export const catalog: Catalog[] = [ level: Levels.Beginner, hours: 1, topic: Topic.AI + }, + { + superBlock: SuperBlocks.IntroductionToPythonBasics, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python + }, + { + superBlock: SuperBlocks.LearnPythonLoopsAndSequences, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python + }, + { + superBlock: SuperBlocks.LearnPythonDictionariesAndSets, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python + }, + { + superBlock: SuperBlocks.LearnErrorHandlingInPython, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python + }, + { + superBlock: SuperBlocks.LearnPythonClassesAndObjects, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python + }, + { + superBlock: SuperBlocks.IntroductionToOOPInPython, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python + }, + { + superBlock: SuperBlocks.IntroductionToLinearDataStructuresInPython, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python + }, + { + superBlock: SuperBlocks.LearnAlgorithmsInPython, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python + }, + { + superBlock: SuperBlocks.LearnGraphsAndTreesInPython, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python + }, + { + superBlock: SuperBlocks.LearnDynamicProgrammingInPython, + level: Levels.Intermediate, + hours: 40, + topic: Topic.Python } ]; diff --git a/packages/shared/src/config/certification-settings.ts b/packages/shared/src/config/certification-settings.ts index caea85e1662..f8760b7d667 100644 --- a/packages/shared/src/config/certification-settings.ts +++ b/packages/shared/src/config/certification-settings.ts @@ -376,7 +376,17 @@ export const superBlockToCertMap: { [SuperBlocks.LearnSQLAndBash]: null, [SuperBlocks.IntroductionToNano]: null, [SuperBlocks.IntroductionToGitAndGithub]: null, - [SuperBlocks.LearnPromptingFundamentals]: null + [SuperBlocks.LearnPromptingFundamentals]: null, + [SuperBlocks.IntroductionToPythonBasics]: null, + [SuperBlocks.LearnPythonLoopsAndSequences]: null, + [SuperBlocks.LearnPythonDictionariesAndSets]: null, + [SuperBlocks.LearnErrorHandlingInPython]: null, + [SuperBlocks.LearnPythonClassesAndObjects]: null, + [SuperBlocks.IntroductionToOOPInPython]: null, + [SuperBlocks.IntroductionToLinearDataStructuresInPython]: null, + [SuperBlocks.LearnAlgorithmsInPython]: null, + [SuperBlocks.LearnGraphsAndTreesInPython]: null, + [SuperBlocks.LearnDynamicProgrammingInPython]: null }; export const certificationRequirements: Partial< diff --git a/packages/shared/src/config/curriculum.ts b/packages/shared/src/config/curriculum.ts index 5843e8eb5fd..ad7c18060a5 100644 --- a/packages/shared/src/config/curriculum.ts +++ b/packages/shared/src/config/curriculum.ts @@ -75,7 +75,17 @@ export enum SuperBlocks { LearnSQLAndBash = 'learn-sql-and-bash', IntroductionToNano = 'introduction-to-nano', IntroductionToGitAndGithub = 'introduction-to-git-and-github', - LearnPromptingFundamentals = 'learn-prompting-fundamentals' + LearnPromptingFundamentals = 'learn-prompting-fundamentals', + IntroductionToPythonBasics = 'introduction-to-python-basics', + LearnPythonLoopsAndSequences = 'learn-python-loops-and-sequences', + LearnPythonDictionariesAndSets = 'learn-python-dictionaries-and-sets', + LearnErrorHandlingInPython = 'learn-error-handling-in-python', + LearnPythonClassesAndObjects = 'learn-python-classes-and-objects', + IntroductionToOOPInPython = 'introduction-to-oop-in-python', + IntroductionToLinearDataStructuresInPython = 'introduction-to-linear-data-structures-in-python', + LearnAlgorithmsInPython = 'learn-algorithms-in-python', + LearnGraphsAndTreesInPython = 'learn-graphs-and-trees-in-python', + LearnDynamicProgrammingInPython = 'learn-dynamic-programming-in-python' } export const languageSuperBlocks = [ @@ -236,7 +246,17 @@ export const superBlockStages: StageMap = { SuperBlocks.LearnSQLAndBash, SuperBlocks.IntroductionToNano, SuperBlocks.IntroductionToGitAndGithub, - SuperBlocks.LearnPromptingFundamentals + SuperBlocks.LearnPromptingFundamentals, + SuperBlocks.IntroductionToPythonBasics, + SuperBlocks.LearnPythonLoopsAndSequences, + SuperBlocks.LearnPythonDictionariesAndSets, + SuperBlocks.LearnErrorHandlingInPython, + SuperBlocks.LearnPythonClassesAndObjects, + SuperBlocks.IntroductionToOOPInPython, + SuperBlocks.IntroductionToLinearDataStructuresInPython, + SuperBlocks.LearnAlgorithmsInPython, + SuperBlocks.LearnGraphsAndTreesInPython, + SuperBlocks.LearnDynamicProgrammingInPython ] };