# PCEP Test Syllabus ## Level 0: Introduction to Python 1. ** Module 0.1: Getting Started with Python** - Lesson 0.1.1: Logical Thinking - Lesson 0.1.2: Variables and Data Types - Lesson 0.1.3: Running Python from the IDE vs. Running Python through the Command Prompt (Optional) - Lesson 0.1.4 2. **Module 0.2: Basic Python Syntax and Data Types** - Lesson 0.2.1: Variables and Data Types - Lesson 0.2.2: Operators in Python - Lesson 0.2.3: Strings and String Manipulations - Lesson 0.2.4: Lists and List Manipulations - Lesson 0.2.5: Tuples and Tuple Operations - Lesson 0.2.6: Dictionaries and Dictionary Methods - Lesson 0.2.7: Sets and Set Operations - Lesson 0.2.8: Comprehensive Data Manipulation with Standard Library Functions ## Level 1: Functions and Scripting 1. **Module 1.1: Creating and Calling Functions** - Lesson 1.1.1: Introduction to Functions - Lesson 1.1.2: Function Parameters and Return Values - Lesson 1.1.3: Scope and Lifetime of Variables - Lesson 1.1.4: Creating Functions - Lesson 1.1.5: Calling Functions 2. **Module 1.2: Working with Modules and Standard Library** - Lesson 1.2.1: Introduction to Modules - Lesson 1.2.2: Creating and Importing Modules - Lesson 1.2.3: Standard Library Modules and Functions 3. **Module 1.3: Advanced Functions** - Lesson 1.3.1: Lambda Functions - Lesson 1.3.2: Decorators - Lesson 1.3.3: Recursion in Python ## Level 3: Scripting and Package Creation 1. **Module 3.1: Python Scripting** - Lesson 3.1.1: Introduction to Scripting in Python - Lesson 3.1.2: Command-Line Arguments and Input - Lesson 3.1.3: Writing Robust and Reusable Scripts 2. **Module 3.2: Creating Python Packages** - Lesson 3.2.1: Understanding Packages and Modules - Lesson 3.2.2: Organizing Code into Packages - Lesson 3.2.3: Distributing and Installing Packages 3. **Module 3.3: Special Methods and `if __name__ == "__main__"`** - Lesson 3.3.1: Understanding `__init__` and Special Methods - Lesson 3.3.2: Utilizing `if __name__ == "__main__"` - Lesson 3.3.3: Best Practices for Scripting and Package Development ## Level 4: Object-Oriented Programming (OOP) 1. **Module 4.1: Introduction to OOP** - Lesson 4.1.1: Understanding Objects and Classes - Lesson 4.1.2: Constructors and Destructors - Lesson 4.1.3: Inheritance and Polymorphism 2. **Module 4.2: Advanced OOP Concepts** - Lesson 4.2.1: Encapsulation and Abstraction - Lesson 4.2.2: Method Overloading and Overriding - Lesson 4.2.3: Design Principles in OOP 3. **Module 4.3: Working with Files** - Lesson 4.3.1: Reading and Writing Text Files - Lesson 4.3.2: Working with JSON and CSV - Lesson 4.3.3: Exception Handling in File Operations ## Level 5: Web Development with Python (Django) 1. **Module 5.1: Introduction to Web Development with Django** - Lesson 5.1.1: Django Framework Overview - Lesson 5.1.2: Setting Up a Django Project - Lesson 5.1.3: Creating Django Views and Templates 2. **Module 5.2: Django Models and Admin Interface** - Lesson 5.2.1: Django Models and Database - Lesson 5.2.2: Django Admin Interface - Lesson 5.2.3: Model Relationships in Django 3. **Module 5.3: Building a Django Web Application** - Lesson 5.3.1: URL Patterns and Routing in Django - Lesson 5.3.2: Django Forms and Form Handling - Lesson 5.3.3: Authentication and Authorization in Django ### Level 6: Data Science and Machine Learning 1. **Module 6.1: Introduction to Data Science** - Lesson 6.1.1: Basics of Data Science - Lesson 6.1.2: NumPy and Pandas - Lesson 6.1.3: Data Cleaning and Preprocessing 2. **Module 6.2: Data Visualization with Matplotlib and Seaborn** - Lesson 6.2.1: Basic Plots with Matplotlib - Lesson 6.2.2: Advanced Plots and Customization - Lesson 6.2.3: Seaborn for Statistical Visualization 3. **Module 6.3: Machine Learning Basics** - Lesson 6.3.1: Introduction to Machine Learning - Lesson 6.3.2: Scikit-Learn Library - Lesson 6.3.3: Building and Evaluating Models ## Level 7: Full-Stack Web Development with React and Django-Ninja (Capstone Project) 1. **Module 7.1: Frontend Development with React** - Lesson 7.1.1: Introduction to React - Lesson 7.1.2: Components and Props - Lesson 7.1.3: State and Lifecycle 2. **Module 7.2: Building a RESTful API with Django-Ninja** - Lesson 7.2.1: Overview of Django-Ninja - Lesson 7.2.2: Creating API Endpoints - Lesson 7.2.3: Authentication and Authorization in Django-Ninja 3. **Module 7.3: Integrating React with Django-Ninja** - Lesson 7.3.1: Connecting React with Django - Lesson 7.3.2: Fetching Data from API - Lesson 7.3.3: Handling Forms and User Interactions 4. **Module 7.4: Full-Stack Capstone Project** - Lesson 7.4.1: Defining Project Scope and Requirements - Lesson 7.4.2: Designing the User Interface and Experience - Lesson 7.4.3: Planning Data Models and API Endpoints - Lesson 7.4.4: Building the Backend with Django-Ninja - Lesson 7.4.5: Developing the Frontend with React - Lesson 7.4.6: Testing and Debugging - Lesson 7.4.7: Deployment and Documentation - Lesson 7.4.8: Continuous Integration and Deployment (CI/CD) ## Level 8: Advanced Topics (Optional) 1. **Module 8.1: Advanced Python Concepts** - Lesson 8.1.1: Generators and Iterators - Lesson 8.1.2: Context Managers - Lesson 8.1.3: Metaclasses 2. **Module 8.2: Scalability and Performance Optimization** - Lesson 8.2.1: Caching Strategies - Lesson 8.2.2: Asynchronous Programming in Python - Lesson 8.2.3: Profiling and Optimization Techniques ## TODO TODO: - Should there be a lesson on setting up an IDE? - Should there be a lesson on how to run a python script? - From IDE - From Terminal - Should there be a lesson on Virtual Environments? - Proposition: Introduce Virtual Environments Before or in the beggining of Level 5 - This is when it might become necessary - Proposition: Intruduce in level 3 - Because understanding how to use venvs in python is essential