Intern Learning Program

Learn Python,
step by step.

A structured 8-week roadmap built for interns who want to grow into confident Python developers. Every concept builds on the last โ€” no shortcuts, no confusion, just steady progress and real projects.

8
Weeks
49+
Topics
12
Projects
โˆž
Growth
python_journey.py
# Your Python journey begins here ๐Ÿ def greet_intern(name): return f"Welcome, {name}! Ready to code?" class PythonJourney: def __init__(self, intern): self.intern = intern self.week = 1 self.skills = [] self.projects = [] def learn(self, skill): self.skills.append(skill) return f"โœ“ Learned: {skill}" def build(self, project): self.projects.append(project) return f"๐Ÿ›  Built: {project}" journey = PythonJourney("You") print(greet_intern("Intern")) print(journey.learn("Variables")) print(journey.build("BMI Calculator")) >> Welcome, Intern! Ready to code? >> โœ“ Learned: Variables >> ๐Ÿ›  Built: BMI Calculator
Learning Path

Four phases, one mission.

Each phase unlocks the next. By Week 8 you will write real Python programs, work with APIs, and understand Object-Oriented code.

๐ŸŒฑ
01
Foundations
Week 1 โ€“ 2
  • Python setup & first program
  • Variables & data types
  • Operators & expressions
  • print() and input()
  • Strings & f-strings
๐Ÿ—๏ธ
02
Control & Functions
Week 3 โ€“ 4
  • if / elif / else logic
  • for and while loops
  • break, continue, pass
  • Defining functions
  • Parameters & return values
โš™๏ธ
03
Data & Files
Week 5 โ€“ 6
  • Lists, tuples, sets
  • Dictionaries
  • File reading & writing
  • try / except / finally
  • Standard library modules
๐Ÿš€
04
OOP & Real World
Week 7 โ€“ 8
  • Classes & objects
  • Inheritance & methods
  • pip packages
  • APIs & JSON
  • Final mini project
Weekly Curriculum + Mini Projects

Learn it. Build it. Repeat.

Every week ends with a mini project to cement what you learned through muscle memory. Tick topics, expand weeks, and build.

0%
Your Learning Progress
Complete topics below to track your journey
๐ŸŽ‰ Keep going!
๐ŸŒฑ Phase 1 โ€” Foundations
W1
Python Setup & Basics
Installation ยท Variables ยท Types ยท I/O
0/6
Try this โ†’
# Week 1 โ€” your very first Python program name = input("What is your name? ") age = int(input("How old are you? ")) print(f"Hello {name}! You are {age} years old.") print(f"In 5 years you will be {age + 5}.")
๐Ÿ› ๏ธ Mini Project
BMI Calculator
Beginner

Build a CLI tool that takes a person's name, weight (kg), and height (cm), then calculates and displays their Body Mass Index with a health category. Pure variables + math + input().

Build it in steps:
  1. Ask for name, weight in kg, and height in cm using input()
  2. Convert to float and calculate: BMI = weight / (height / 100) ** 2
  3. Use if/elif/else to print Underweight / Normal / Overweight / Obese
  4. Round BMI to 2 decimal places using round()
๐Ÿ’ช Muscle Memory:
โ‘  Build with this guide โ‘ก Close guide, rebuild from scratch โ‘ข Add metric vs imperial toggle
W2
Strings & Type Magic
String methods ยท f-strings ยท Type conversion
0/6
Try this โ†’
text = " Hello, Python World! " clean = text.strip().lower() words = clean.split(",") score = 95.5 print(f"Score: {score:.1f}% โ†’ Grade: {'A' if score >= 90 else 'B'}")
๐Ÿ› ๏ธ Mini Project
Mad Libs Story Generator
Beginner

Ask the user for random words (adjective, noun, verb, place, animal) and insert them into a funny story template using f-strings. Great for practising string methods and formatting.

Build it in steps:
  1. Ask for 5 words: adjective, noun, verb, city, animal
  2. Store each in a variable and call .lower().strip() on each
  3. Construct a 4-sentence story using f-strings
  4. Print title in .upper() and story with capitalised first letter
๐Ÿ’ช Muscle Memory:
โ‘  Build with guide โ‘ก Rebuild from scratch โ‘ข Write 3 different story templates
๐Ÿ—๏ธ Phase 2 โ€” Control & Functions
W3
Control Flow
if/elif/else ยท for ยท while ยท break/continue
0/6
Try this โ†’
# Classic FizzBuzz for i in range(1, 21): if i % 15 == 0: print("FizzBuzz") elif i % 3 == 0: print("Fizz") elif i % 5 == 0: print("Buzz") else: print(i)
๐Ÿ› ๏ธ Mini Project
Number Guessing Game
Beginner

The computer picks a random number 1โ€“100. The user keeps guessing until they get it right โ€” getting "Higher" or "Lower" hints each time. Tracks attempts and shows a score at the end.

Build it in steps:
  1. import random and use random.randint(1, 100)
  2. Use a while loop that runs until the guess is correct
  3. Inside the loop, use if/elif/else for Higher / Lower / Correct
  4. Count attempts and print a score (Excellent / Good / Keep Practising)
๐Ÿ’ช Muscle Memory:
โ‘  Build with guide โ‘ก Rebuild from scratch โ‘ข Add difficulty levels: Easy/Hard
W4
Functions
def ยท parameters ยท return ยท scope
0/6
Try this โ†’
def greet(name, greeting="Hello"): """Greet someone with a custom message.""" return f"{greeting}, {name}! ๐Ÿ‘‹" def total(*args): return sum(args) print(greet("Intern")) # Hello, Intern! ๐Ÿ‘‹ print(total(10, 20, 30)) # 60
๐Ÿ› ๏ธ Mini Project
Unit Converter CLI
Beginner

A menu-driven CLI converter that handles Temperature (ยฐC โ†” ยฐF), Weight (kg โ†” lbs), and Distance (km โ†” miles). Each conversion lives in its own function โ€” perfect for practising def and return.

Build it in steps:
  1. Write a separate function for each conversion (celsius_to_fahrenheit, etc.)
  2. Build a while loop showing a menu: 1) Temp 2) Weight 3) Distance 4) Quit
  3. Use if/elif to call the right function based on user choice
  4. Print the result with 2 decimal places and the correct unit label
๐Ÿ’ช Muscle Memory:
โ‘  Build with guide โ‘ก Rebuild from scratch โ‘ข Add currency conversion
โš™๏ธ Phase 3 โ€” Data & Files
W5
Data Structures
Lists ยท Tuples ยท Sets ยท Dictionaries
0/7
Try this โ†’
students = ["Alice", "Bob", "Carol"] grades = {"Alice": 92, "Bob": 87} # List comprehension high = [n for n, g in grades.items() if g >= 90] print(high) # ['Alice']
๐Ÿ› ๏ธ Mini Project
Contacts Manager
Intermediate

A CLI app that stores contacts as a dictionary of dictionaries โ€” name โ†’ {phone, email, city}. Supports Add, View All, Search, and Delete. Practises all four data structures plus comprehensions.

Build it in steps:
  1. Create an empty dict: contacts = {}
  2. Write add_contact(name, phone, email) that adds a nested dict
  3. Write search_contact(query) using list comprehension to filter by name
  4. Build a while loop menu: Add / View / Search / Delete / Quit
๐Ÿ’ช Muscle Memory:
โ‘  Build with guide โ‘ก Rebuild from scratch โ‘ข Add sorting contacts A-Z
W6
Files & Error Handling
File I/O ยท try/except ยท Standard Modules
0/6
Try this โ†’
from datetime import datetime try: with open("tasks.txt", "r") as f: tasks = f.readlines() print(f"Loaded {len(tasks)} tasks") except FileNotFoundError: print("Starting fresh!") finally: print(f"Done at {datetime.now():%H:%M}")
๐Ÿ› ๏ธ Mini Project
Personal Diary App
Intermediate

A CLI diary that saves timestamped entries to diary.txt. Supports writing new entries, reading all past entries, and clearing the diary. Practises file I/O and error handling in real conditions.

Build it in steps:
  1. Write add_entry(text) using with open("diary.txt", "a") and datetime.now()
  2. Write read_entries() using try/except FileNotFoundError
  3. Write clear_diary() that overwrites the file with open("w")
  4. Build the menu loop: 1) New Entry 2) Read All 3) Clear 4) Quit
๐Ÿ’ช Muscle Memory:
โ‘  Build with guide โ‘ก Rebuild from scratch โ‘ข Add search by date
๐Ÿš€ Phase 4 โ€” OOP & Real World
W7
Object-Oriented Python
Classes ยท Objects ยท Inheritance
0/6
Try this โ†’
class BankAccount: def __init__(self, owner, balance=0): self.owner = owner self.balance = balance def deposit(self, amount): self.balance += amount return f"Deposited โ‚น{amount}. Balance: โ‚น{self.balance}" def __str__(self): return f"{self.owner}: โ‚น{self.balance}" acc = BankAccount("Intern") print(acc.deposit(5000))
๐Ÿ› ๏ธ Mini Project
Bank Account System
Intermediate

Build a CLI bank using OOP. A base Account class with deposit/withdraw/balance, then a SavingsAccount child class that adds interest. Practises __init__, inheritance, and magic methods.

Build it in steps:
  1. Create class Account with __init__(owner, balance=0) and deposit/withdraw methods
  2. Add __str__ so print(acc) shows a clean summary
  3. Create class SavingsAccount(Account) with add_interest(rate) method
  4. Build a CLI menu to create accounts and perform transactions
๐Ÿ’ช Muscle Memory:
โ‘  Build with guide โ‘ก Rebuild from scratch โ‘ข Add transaction history list
W8
APIs & Final Project
pip ยท requests ยท JSON ยท Build & Ship
0/6
Final Project Preview โ†’
import requests def get_weather(city): url = f"https://wttr.in/{city}?format=j1" data = requests.get(url).json() cond = data['current_condition'][0] temp = cond['temp_C'] desc = cond['weatherDesc'][0]['value'] return f"๐ŸŒค {city}: {temp}ยฐC โ€” {desc}" city = input("Enter city: ") print(get_weather(city))
๐Ÿ› ๏ธ Mini Project
GitHub Profile Viewer
Intermediate

Call the free GitHub API (no key needed) to fetch and display any user's profile: name, bio, public repos, followers, and their top 5 repos. Then push this project itself to GitHub.

Build it in steps:
  1. requests.get("https://api.github.com/users/{username}") for profile
  2. Parse JSON: display name, bio, public_repos, followers, location
  3. Call /users/{username}/repos?sort=stars&per_page=5 for top repos
  4. Format and print everything with clean label padding
💪 Muscle Memory:
Build with guide Rebuild from scratch Add repo stars + language

⏱ 30 Minutes a Day

Consistency beats intensity. Write at least 30 lines of Python every day, even weekends. Habit and repetition build skill faster than any marathon session can.

💥 Break Things on Purpose

After reading each topic, deliberately write code that throws an error. Understanding why it fails teaches you 3x faster than reading only working examples.

📓 Rebuild Without Notes

After finishing each mini project, close all notes and rebuild from scratch. If you cannot do it in 45 minutes, that is your cue to practise more before moving on.

Muscle Memory Projects

Build it until you don't need to think.

Four projects to complete after the 8-week course. No tutorials, no hand-holding. Every project has one rule: build it, delete all your code, then rebuild it entirely from memory within the time limit.

📁 Project 01 — After Phase 3
CLI Task Manager

A command-line to-do app that persists tasks in a JSON file with add, view, complete, and delete operations. Zero external libraries needed. Every Phase 1–3 skill wrapped in one project.

File I/ODictionaries Functionstry/except JSONwhile loops
What to build:
1
Main menu loop: Add / View All / Complete / Delete / Quit
2
Store each task as a dict: {id, title, done, created_at}
3
Save to tasks.json after every change using json.dump()
4
Handle missing file on first run with try/except FileNotFoundError
5
Stretch goal: priority levels (High/Med/Low), filter by status
💪 Drill:
Build itDelete all codeRebuild in 45 min
📊 Project 02 — After Phase 3
Student Grade Analyser

Reads student records from a CSV, calculates averages, assigns letter grades, finds the class topper, and exports a fully formatted summary report to a .txt file. Pure data and file I/O muscle memory.

File I/OLists DictsFunctions String formattingCSV
What to build:
1
Read students.csv: columns name, math, science, english
2
Compute each student's average and assign an A/B/C/D/F grade
3
Find class topper, lowest scorer, and per-subject class averages
4
Write a formatted report.txt containing all computed statistics
5
Stretch goal: sort by average, show pass/fail count per subject
💪 Drill:
Build itDelete all codeRebuild in 45 min
🏦 Project 03 — After Phase 4
OOP Bank System

A full-featured OOP banking CLI with Account, SavingsAccount, and LoanAccount classes. The definitive muscle memory drill for inheritance, magic methods, and custom exception design.

ClassesInheritance Magic methodsCustom errors JSONFile I/O
What to build:
1
Base Account class: deposit(), withdraw(), __str__()
2
Child SavingsAccount: add_interest(rate) method
3
Child LoanAccount: make_payment(), remaining_balance()
4
Raise custom InsufficientFundsError on any overdraft attempt
5
Save and load full account state to bank_data.json
💪 Drill:
Build itDelete all codeRebuild in 60 min
🌆 Project 04 — After Phase 4
Weather + News Dashboard

A CLI dashboard fetching live weather and top news for any city, caching results to JSON, and loading API keys from .env. Every concept combined into one app: OOP, APIs, pip, dotenv, caching.

requestsJSON OOPError handling pipdotenvFile caching
What to build:
1
WeatherService class: fetch and display weather for any city
2
NewsService class: top 5 headlines from newsapi.org free tier
3
Dashboard class: orchestrate both services, print combined output
4
Cache results to city_cache.json โ€” skip API call if under 10 min old
5
Load NEWS_API_KEY from a .env file using python-dotenv
💪 Drill:
Build itDelete all codeRebuild in 90 min
🎓 Graduation Project

Build a Python CLI Expense Tracker

Your final proof of mastery. A fully functional personal finance CLI that combines every skill from 8 weeks: OOP, file I/O, JSON, APIs, error handling, and clean code. Build it. Document it. Push it to GitHub. This is your portfolio centrepiece.

What it does

Add expenses: category, amount, date, description
View all expenses, filter by category or month
Monthly summary with totals and category breakdown
All data saved to expenses.json between sessions
Export formatted summary to expense_report.txt
Fetch live exchange rate from a free open API

Target project structure

class Expense: def __init__(self, title, amount, category, date): ... # store as attributes class ExpenseTracker: def add(self, expense): ... def view_by_month(self, m): ... def summary(self): ... def export_report(self): ... def save(self): ... # to JSON def load(self): ... # from JSON def run(self): ... # main loop if __name__ == "__main__": ExpenseTracker().run()
All 8 weeks of skills applied here: OOP & Classes File I/O & JSON Error Handling Loops & Functions APIs & requests String Formatting Git & GitHub
Toolkit

Resources to accelerate learning.

Every great developer stands on good documentation. Bookmark these on Day 1 and use them every single week throughout the course.

📘
Docs & References

The most reliable sources โ€” always current, always accurate.

  • docs.python.org/3 โ€” Official Python docs
  • python.org/shell โ€” Browser Python REPL to test code fast
  • realpython.com โ€” Deep-dive written tutorials
  • w3schools.com/python โ€” Fast syntax lookup
🔧
Practice Platforms

Sharpen your skills daily. Aim for at least 3 challenges per week.

  • HackerRank โ€” Python track (start here from Week 1)
  • LeetCode โ€” Easy problems from Week 4 onward
  • CheckiO โ€” Game-style Python challenges
  • Exercism.io โ€” Mentor-reviewed coding exercises
🎘
Dev Setup Checklist

Install everything below before Day 1, Week 1 โ€” without exception.

  • Python 3.11+ from python.org/downloads
  • VS Code with the Python extension by Microsoft
  • Git from git-scm.com for version control
  • GitHub account โ€” push every project you build