Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -172,4 +172,4 @@ cython_debug/

# PyPI configuration file
.pypirc
__marimo__
data
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.12
Empty file modified LICENSE
100644 → 100755
Empty file.
104 changes: 98 additions & 6 deletions README.md
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

# Yet Another Python Course

Welcome to Yet Another Python Course! This course is designed for non-developer professionals who want to learn Python from scratch. It focuses on practical skills that can enhance your productivity in various professional roles.
Expand Down Expand Up @@ -38,13 +37,29 @@ Below is the detailed syllabus outlining the modules and topics covered in the c
- **Exercises**: Extract data from a website, fetch data from a public API
- **Project**: Scrape weather data from a website and save it to a CSV file

- **[Module 5: Introduction to Data Analysis (Optional)](#module-5-introduction-to-data-analysis-optional)**
- **[Module 5: Introduction to Data Analysis](#module-5-introduction-to-data-analysis)**
- Introduction to pandas for data manipulation (dataframes, series)
- Basic data operations (filtering, sorting, grouping)
- Simple data visualization using matplotlib (e.g., bar charts, line graphs)
- **Exercises**: Clean and analyze a small dataset
- **Project**: Analyze a dataset of sales data and create a bar chart to visualize sales by region

- **[Module 6: Building Tools - CLI and Desktop Applications](#module-6-building-tools---cli-and-desktop-applications)**
- Command-line interface (CLI) tools using argparse
- Desktop applications with tkinter (GUI programming)
- File operations and data handling in tools
- Advanced tool features (progress bars, menus, dialogs)
- **Exercises**: CLI calculator, file renamer, GUI calculator, text file viewer
- **Project**: Create a multi-function file utility (CLI) and a personal productivity desktop app

- **[Module 7: Web Applications and Interactive Reports](#module-7-web-applications-and-interactive-reports)**
- Introduction to web development with Flask (routes, templates, forms)
- Building interactive dashboards with Streamlit
- Creating machine learning demos with Gradio
- Deploying web applications (local deployment and cloud basics)
- **Exercises**: Simple Flask app, Streamlit data dashboard, Gradio interface
- **Project**: Build a comprehensive business reporting web application with user authentication and data visualization

## How to Use This Repository
- Each module has its own folder (e.g., `module1_basics/`, `module2_functions_data_structures/`) containing:
- A `README.md` with detailed explanations and examples.
Expand Down Expand Up @@ -123,7 +138,7 @@ If you have questions or need help, feel free to open an issue in this repositor

---

### Module 5: Introduction to Data Analysis (Optional)
### Module 5: Introduction to Data Analysis
- **Topics**:
- Introduction to pandas for data manipulation (dataframes, series)
- Basic data operations (filtering, sorting, grouping)
Expand All @@ -132,7 +147,60 @@ If you have questions or need help, feel free to open an issue in this repositor
- Exercises: Clean and analyze a small dataset
- Project: Analyze a dataset of sales data and create a bar chart to visualize sales by region

[Go to Module 5](#module-5-introduction-to-data-analysis-optional)
[Go to Module 5](#module-5-introduction-to-data-analysis)

---

### Module 6: Building Tools - CLI and Desktop Applications
- **Topics**:
- Command-line interface (CLI) tools using argparse
- Desktop applications with tkinter (GUI programming)
- File operations and data handling in tools
- Advanced tool features (progress bars, menus, dialogs)
- **Interactivity**:
- Exercises: CLI calculator, file renamer, GUI calculator, text file viewer, system information tool
- Project: Create a multi-function file utility (CLI) and a personal productivity desktop app

[Go to Module 6](#module-6-building-tools---cli-and-desktop-applications)

---

### Module 7: Web Applications and Interactive Reports
- **Topics**:
- **Flask Web Development**:
- Understanding web applications and HTTP basics
- Flask fundamentals (routes, templates, static files)
- HTML forms and user input handling
- Session management and basic authentication
- Database integration with SQLite
- **Streamlit for Data Dashboards**:
- Creating interactive data applications
- Widgets for user input (sliders, dropdowns, file uploads)
- Real-time data visualization and filtering
- Multi-page applications and navigation
- Caching for performance optimization
- **Gradio for Quick Demos**:
- Building interfaces for functions and models
- Input/output components (text, images, audio, files)
- Creating shareable demo links
- Integration with machine learning workflows
- **Deployment Basics**:
- Local deployment and testing
- Introduction to cloud platforms (Heroku, Streamlit Cloud)
- Environment variables and configuration management
- **Interactivity**:
- **Exercise 1**: Create a simple Flask web app with a contact form
- **Exercise 2**: Build a Streamlit dashboard to explore a dataset with filters and charts
- **Exercise 3**: Create a Gradio interface for a text analysis function (word count, sentiment)
- **Exercise 4**: Deploy a simple Streamlit app to Streamlit Cloud
- **Project**: Build a comprehensive business reporting web application that includes:
- Flask backend with user registration/login
- File upload functionality for CSV/Excel data
- Streamlit-powered analytics dashboard embedded in Flask
- Gradio interface for data preprocessing tasks
- Export functionality for reports and visualizations

[Go to Module 7](#module-7-web-applications-and-interactive-reports)

---

Expand All @@ -155,14 +223,38 @@ To help you track your progress, consider using the checklist below. Check off e
- [ ] Topics
- [ ] Exercises
- [ ] Project
- [ ] **Module 5: Introduction to Data Analysis (Optional)**
- [ ] **Module 5: Introduction to Data Analysis**
- [ ] Topics
- [ ] Exercises
- [ ] Project
- [ ] **Module 6: Building Tools - CLI and Desktop Applications**
- [ ] Topics
- [ ] Exercises
- [ ] Project
- [ ] **Module 7: Web Applications and Interactive Reports**
- [ ] Topics
- [ ] Exercises
- [ ] Project

---

## Learning Path Recommendations

### For Business Professionals:
Focus on Modules 1-3, 5, and 7 for data analysis and reporting capabilities.

### For Administrative Roles:
Emphasize Modules 1-3, 6, and basic web concepts from Module 7.

### For Analytics and Research:
Complete all modules with extra attention to Modules 4, 5, and 7.

### For Project Managers:
Focus on Modules 1-3, and 7 for creating project dashboards and reports.

---

## Feedback and Contributions
We welcome feedback and contributions to improve the course. If you have suggestions or find errors, please open an issue or submit a pull request.

Happy learning!
Happy learning!
Empty file modified module0_greetings/.gitignore
100644 → 100755
Empty file.
Empty file modified module0_greetings/Makefile
100644 → 100755
Empty file.
2 changes: 1 addition & 1 deletion module0_greetings/greetings.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
templates = [
"Meet {name}, the {job_title} who {fun_fact}. Clearly, they're here to conquer the world of Python!",
"{name}, a {job_title} by day, and someone who {fun_fact} by night. Watch out, Python world!",
"Introducing {name}, the {job_title} known for {fun_fact}. Python better watch its back!"
"Introducing {name}, the {job_title} known for {fun_fact}. Python better watch its back!",
]

selected_template = random.choice(templates)
Expand Down
Empty file modified module1_basics/README.md
100644 → 100755
Empty file.
21 changes: 21 additions & 0 deletions module1_basics/__marimo__/session/exercises.py.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"version": "1",
"metadata": {
"marimo_version": "0.13.2"
},
"cells": [
{
"id": "Hbol",
"code_hash": "1d0db38904205bec4d6f6f6a1f6cec3e",
"outputs": [
{
"type": "data",
"data": {
"text/plain": ""
}
}
],
"console": []
}
]
}
124 changes: 120 additions & 4 deletions module1_basics/exercises.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,19 +1,135 @@


import marimo

__generated_with = "0.13.2"
app = marimo.App(width="medium")
__generated_with = "0.11.12"
app = marimo.App(width="medium", layout_file="layouts/exercises.grid.json")


@app.cell(hide_code=True)
def _():
import marimo as mo

return (mo,)


@app.cell
def _(mo):
mo.md(r"""# Loop in Python""")
return


@app.cell
def _():
print(1)
print(2)
print(3)
print(4)
return


@app.cell
def _():
for i in range(1, 11):
print(i)
return (i,)


@app.cell
def _():
j = 1
while j <= 1:
print(j)
j = j + 1

print("While Loop Finished")
return (j,)


@app.cell(hide_code=True)
def _(mo):
mo.md(
r"""
# 🚀 Liftoff Countdown: The Story Behind the Numbers

When you think of a rocket launch, what's the first thing that comes to mind?

**"10... 9... 8... 7..."** — the classic **reverse countdown**!
But did you know this tradition started in the **movies** before it became a real-life NASA staple?

### 🎬 The Origin Story

The reverse countdown was popularized in Fritz Lang’s 1929 sci-fi film *Woman in the Moon*, where it added dramatic tension. NASA adopted it later — not for the drama, but to build precision and coordination in rocket launches.
"""
)
return


@app.cell
def _():
from time import sleep

starting_value = 10

while starting_value >= 0:
sleep(1)
print(starting_value)
starting_value = starting_value - 1
return sleep, starting_value


@app.cell(hide_code=True)
def _(mo):
mo.md(r"""# Manik Jor""")
return


@app.cell
def _():
even = 1

while even <= 10:
print(even)
even = even + 2
return (even,)


@app.cell
def _():
number = 1
while number <= 10:
if number % 2 == 0:
print(number)

number += 1
return (number,)


@app.cell(hide_code=True)
def _(mo):
mo.md(r"""# Guessing Game""")
return


@app.cell
def _():
hidden_number = "6"
gussed = input("Please guess a number between 1 to 10: ")
while gussed != hidden_number:
print(f"Ohhh...you gussed it wrong!")
gussed = input("Please guess another number between 1 to 10: ")
if gussed == hidden_number:
print("You're right!")
return gussed, hidden_number


@app.cell(hide_code=True)
def _(mo):
mo.md(r"""## [Feature]: Oops! Limit exceeded""")
return


@app.cell
def _(mo):
mo.md(r"""# Excercise""")
return


Expand Down
63 changes: 63 additions & 0 deletions module1_basics/layouts/exercises.grid.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"type": "grid",
"data": {
"columns": 24,
"rowHeight": 20,
"maxWidth": 1400,
"bordered": true,
"cells": [
{
"position": null
},
{
"position": null
},
{
"position": null
},
{
"position": null
},
{
"position": null
},
{
"position": null
},
{
"position": null
},
{
"position": null
},
{
"position": null
},
{
"position": null
},
{
"position": [
8,
1,
6,
6
]
},
{
"position": [
8,
7,
6,
6
]
},
{
"position": null
},
{
"position": null
}
]
}
}
Loading