Computer Science · Ch 13 — Project Based Learning
Project Descriptions
Project Descriptions
Concept First
Project-based learning is not about writing code for its own sake — it is about building something that solves a real problem. Each project description in this section is a complete mini-brief: it tells you what to build, why it matters, and what specific features the final product must have. The three examples cover three very different domains — a business automation system, a logic-based game, and an educational tool — but they all share the same structure: a context, a goal, and a list of hard requirements. When you take up any project, you should be able to extract these three parts from the problem statement yourself.
The section also makes an important point at the very start: these are only examples. A group may choose any other project, provided it is done in consultation with the guide teacher. So treat these descriptions as templates of what a good project brief looks like, not as a closed list.
Project Title 1: Automation of Order Processing in a Restaurant
The context. A new restaurant called “Stay Healthy” is opening in your locality. The management wants to use a computer to generate bills and maintain other records. Your team is asked to develop application software that automates order placing and the processes associated with it.
The specifications. The owner wants the following functionalities:
- Two types of login — one for the manager of the restaurant, and one for the customer.
- Kiosks for customers — placed at the reception, running the software. On the opening screen, the menu for placing orders is displayed.
- Order placement — customers enter the Item Code(s) and the quantity desired.
- Soft copy of the bill — after placing an order, a soft copy of the bill is displayed on the kiosk, and it carries an Order Number.
- Unique bill identification — every bill must have a unique identification, such as a combination of the date and the order number of the day, and it must be saved in a data file or database.
- Order Number resets daily — the order number starts from 1 every day.
Manager login provisions. For the manager, the software must provide:
- Entry and change of the menu.
- Deletion of an order (on demand).
- Generation of reports.
The reports. One report is specified: a Summary of Sales made on a Day. The program should accept the date for which the summary is required. The second report is left to your choice — you must add at least one more relevant report of your own design.
Project Title 2: Development of a Puzzle
The context. You are to implement a puzzle-solving game in Python. The game presents a grid board composed of cells, in which some cells contain a Bomb. The player must clear the board of bombs without detonating any one of them, using clues provided on the board.
How the game works. When the player clicks a cell:
- If the cell contains a bomb, the game finishes.
- If the cell does not contain a bomb, the cell reveals a number — this number is a clue about how many bombs are hidden in the adjacent cells.
A practical suggestion from the book. Before you start coding, play any Minesweeper game five times. This will help you understand the project properly.
Complexity reduction. To keep the program manageable, you may fix the grid size to 6 by 6 and the number of bombs to 6.
A warning. Ensure that your code handles the various exceptions that may occur while the game is being played.
Project Title 3: Development of an Educational Game
The context. You are a member of the ICT club of your school. Your responsibility is to find ways to improve the mathematical skills of kids in the age group of 5 to 7 years. A club member suggests developing an edutainment game named “Match the Sum”. The game hones summing skills by allowing students to form the number 10 by adding 2 or 3 digits.
The specifications. The program must provide the following:
- Display of 15 cells on screen, where each cell can hold a digit from 1 to 9.
- Random digit generation — a digit is generated at a time and placed in the list from the right end. The program keeps generating digits at equal intervals of time and places each new digit in the rightmost cell. Already existing digits shift left by one cell with every new addition.
- Player input — the student is allowed to type 2 or 3 digits, one at a time, from the digits currently displayed in the list of cells.
- Removal on match — if the sum of those digits is 10, those digits get removed from the list of cells.
- Game continuation — the game continues till there is an empty cell to insert a digit in the list of cells. …
Project Title 1: Automation of Order Processing in a Restaurant
A restaurant’s kitchen runs on orders — but when every table’s request is scribbled on paper and shouted across the room, mistakes creep in. This project walks you through building a small digital system that captures each order, stores it in a database, and lets the kitchen view it instantly. You’ll learn how a few lines of Python, paired with SQL queries, can replace the chaos of a notepad with a clean, queryable record of every dish.
The textbook frames the task around a simple menu table and an order table. You start by creating the database structure with SQL:
CREATE TABLE menu (
item_id INT PRIMARY KEY,
item_name VARCHAR(50),
price DECIMAL(5,2)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
item_id INT,
quantity INT,
FOREIGN KEY (item_id) REFERENCES menu(item_id)
);
Then you insert sample data — a few dishes with prices, and a few orders referencing them. The core logic lives in a Python script that connects to the database, takes a customer’s choice, and inserts it into the orders table:
import sqlite3
conn = sqlite3.connect('restaurant.db')
cur = conn.cursor()
item = input("Enter item name: ")
qty = int(input("Enter quantity: "))
cur.execute("SELECT item_id FROM menu WHERE item_name = ?", (item,))
row = cur.fetchone()
if row:
cur.execute("INSERT INTO orders (item_id, quantity) VALUES (?, ?)", (row[0], qty))
conn.commit()
print("Order added.")
else:
print("Item not on menu.")
conn.close()
``` …
Project Title 2: Development of a Puzzle
The puzzle project asks you to build a complete, playable game where a player rearranges shuffled tiles to match a target pattern. You start by designing the game board as a 2D list in Python, where each tile holds a number or a symbol, and the empty slot is represented by a special value like 0. The core logic involves functions to shuffle the board, check if the current arrangement matches the winning condition, and swap a tile with the empty space when the player presses an arrow key.
# A simple 3x3 sliding puzzle board
board = [[1, 2, 3],
[4, 5, 6],
[7, 8, 0]] # 0 is the empty tile
def is_solved(b):
return b == [[1, 2, 3], [4, 5, 6], [7, 8, 0]]
def move_tile(b, row, col):
# Find the empty tile
for r in range(3):
for c in range(3):
if b[r][c] == 0:
er, ec = r, c
# Swap if adjacent
if abs(row - er) + abs(col - ec) == 1:
b[er][ec], b[row][col] = b[row][col], b[er][ec]
``` …
Project Title 3: Development of an Educational Game
An educational game is a powerful way to make learning interactive and fun. In this project, you will design a simple quiz-based game in Python that tests the player's knowledge on a chosen subject. The game will present questions, accept the player's answer, and give immediate feedback, all while keeping score.
The core of the game is a list of questions, each stored as a dictionary with the question text, the four options, and the index of the correct answer. You will use a while loop to keep the game running until the player chooses to quit, and an if statement to check each answer. The program will use the random module to shuffle the order of questions, and the time module to add a small delay for a better user experience.
import random
import time
questions = [
{
"question": "What is the capital of France?",
"options": ["London", "Paris", "Berlin", "Madrid"],
"answer": 1
},
{
"question": "Which planet is known as the Red Planet?",
"options": ["Venus", "Mars", "Jupiter", "Saturn"],
"answer": 1
}
]
score = 0
random.shuffle(questions)
for q in questions:
print(q["question"])
for i, option in enumerate(q["options"]):
print(f"{i + 1}. {option}")
choice = int(input("Enter your choice (1-4): "))
if choice - 1 == q["answer"]:
print("Correct!")
score += 1
else:
print("Wrong answer.")
time.sleep(1) …