Transforming Theoretical Sessions into Enjoyable and Practical Experiences: A Compliance Reminder Game
Dr. Fatma Ben Mesmia Chaabouni
Ph.D. in CS | MSc_B.Sc. in CS| NLP-AI and Data Analytics- Blockchain researcher | MBA mentor| Tunisian AI Society Member
#I am sharing my personal experience
In today's dynamic educational landscape, a key challenge for educators is to convert theoretical knowledge into practical, engaging experiences.
As a Computer Science professor, I aim to meet and exceed my students' expectations by integrating interactive and enjoyable learning activities.
One such initiative is the creation of the Compliance Reminder Game, a Python-based application designed to teach students the significance of legal and regulatory compliance in an engaging way.
Legal and regulatory compliance is essential for business operations, safeguarding employees, protecting consumers, upholding intellectual property rights, and preventing reputational harm and legal penalties.
However, teaching these concepts can often be dry and theoretical. To enhance engagement, I developed a game that educates while involving students in interactive decision-making processes.
Implementation Steps
The Compliance Reminder Game is a simple yet effective tool that transforms a traditional lecture into an enjoyable practical session.
Step 1: Setting Up the Environment
We used Python and the Tkinter library to create the graphical user interface (GUI) for the game. This library is straightforward and perfect for creating simple, interactive applications.
Step 2: Designing the Scenarios
The game consists of multiple scenarios, each representing a different aspect of compliance:
Each scenario presents a situation with two possible actions. Students must choose an action that aligns with legal and ethical standards.
Step 3: Develop the GUI
We developed a visually appealing interface using Tkinter, focusing on simplicity and user experience. Here's the core code for the game:
领英推荐
import tkinter as tk # Import the tkinter library for GUI applications
from tkinter import messagebox # Import the messagebox module from tkinter for popup messages
# Define the main application class
class ComplianceGameApp:
def __init__(self, root):
self.root = root # Set the root window
self.root.title("Compliance Reminder Game") # Set the window title
self.root.geometry("700x700") # Set the window size
self.root.configure(bg="#f0f0f0") # Set the background color of the window
self.introduction() # Call the introduction function to display the initial screen
def introduction(self):
self.clear_window() # Clear any existing widgets in the window
label = tk.Label(self.root, text="Welcome to the Compliance Reminder Game!", font=("Helvetica", 18, "bold"), bg="#f0f0f0") # Create a label widget for the welcome message
label.pack(pady=20) # Add the label to the window with padding
instructions = (
"In this game, you will make decisions in various business scenarios.\n"
"Your goal is to choose actions that align with legal and ethical standards.\n"
"Let's get started!\n"
) # Define the game instructions
instructions_label = tk.Label(self.root, text=instructions, font=("Helvetica", 14), bg="#f0f0f0", wraplength=500) # Create a label widget for the instructions
instructions_label.pack(pady=20) # Add the instructions label to the window with padding
start_button = tk.Button(self.root, text="Start Game", command=self.scenario_1, font=("Helvetica", 12), bg="#4CAF50", fg="white", padx=10, pady=5) # Create a button to start the game, linked to scenario_1 function
start_button.pack(pady=10) # Add the start button to the window with padding
def scenario_1(self):
self.clear_window() # Clear any existing widgets in the window
scenario_text = (
"Scenario 1: Ensuring Employee Safety\n"
"You are responsible for maintaining a safe workplace. What do you do?"
) # Define the scenario text
scenario_label = tk.Label(self.root, text=scenario_text, font=("Helvetica", 16), bg="#f0f0f0", wraplength=500) # Create a label widget for the scenario text
scenario_label.pack(pady=20) # Add the scenario label to the window with padding
option_a = tk.Button(self.root, text="A) Conduct regular safety audits and training.", command=self.scenario_1_correct, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option A, linked to scenario_1_correct function
option_a.pack(pady=5) # Add the option A button to the window with padding
option_b = tk.Button(self.root, text="B) Ignore safety regulations to save time and money.", command=self.scenario_1_incorrect, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option B, linked to scenario_1_incorrect function
option_b.pack(pady=5) # Add the option B button to the window with padding
def scenario_1_correct(self):
messagebox.showinfo("Correct!", "Regular safety audits and training ensure a safe work environment and comply with regulations.") # Show a popup message for the correct choice
self.scenario_2() # Proceed to the next scenario
def scenario_1_incorrect(self):
messagebox.showerror("Incorrect", "Ignoring safety regulations can lead to accidents, legal penalties, and harm to employees.") # Show a popup message for the incorrect choice
self.scenario_2() # Proceed to the next scenario
def scenario_2(self):
self.clear_window() # Clear any existing widgets in the window
scenario_text = (
"Scenario 2: Consumer Protection\n"
"You are developing a new toy for children. What safety standards should you ensure?"
) # Define the scenario text
scenario_label = tk.Label(self.root, text=scenario_text, font=("Helvetica", 16), bg="#f0f0f0", wraplength=500) # Create a label widget for the scenario text
scenario_label.pack(pady=20) # Add the scenario label to the window with padding
option_a = tk.Button(self.root, text="A) Ensure the toy is non-toxic and meets safety regulations.", command=self.scenario_2_correct, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option A, linked to scenario_2_correct function
option_a.pack(pady=5) # Add the option A button to the window with padding
option_b = tk.Button(self.root, text="B) Skip safety checks to reduce costs.", command=self.scenario_2_incorrect, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option B, linked to scenario_2_incorrect function
option_b.pack(pady=5) # Add the option B button to the window with padding
def scenario_2_correct(self):
messagebox.showinfo("Correct!", "Ensuring the toy meets safety regulations protects consumers and avoids legal issues.") # Show a popup message for the correct choice
self.scenario_3() # Proceed to the next scenario
def scenario_2_incorrect(self):
messagebox.showerror("Incorrect", "Skipping safety checks can lead to harmful products and severe legal penalties.") # Show a popup message for the incorrect choice
self.scenario_3() # Proceed to the next scenario
def scenario_3(self):
self.clear_window() # Clear any existing widgets in the window
scenario_text = (
"Scenario 3: Protecting Intellectual Property\n"
"You have developed a unique software algorithm. What do you do?"
) # Define the scenario text
scenario_label = tk.Label(self.root, text=scenario_text, font=("Helvetica", 16), bg="#f0f0f0", wraplength=500) # Create a label widget for the scenario text
scenario_label.pack(pady=20) # Add the scenario label to the window with padding
option_a = tk.Button(self.root, text="A) Apply for a patent to protect the algorithm.", command=self.scenario_3_correct, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option A, linked to scenario_3_correct function
option_a.pack(pady=5) # Add the option A button to the window with padding
option_b = tk.Button(self.root, text="B) Share the algorithm openly without any protection.", command=self.scenario_3_incorrect, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option B, linked to scenario_3_incorrect function
option_b.pack(pady=5) # Add the option B button to the window with padding
def scenario_3_correct(self):
messagebox.showinfo("Correct!", "Applying for a patent protects your intellectual property and prevents unauthorized use.") # Show a popup message for the correct choice
self.scenario_4() # Proceed to the next scenario
def scenario_3_incorrect(self):
messagebox.showerror("Incorrect", "Sharing the algorithm without protection can lead to unauthorized use and loss of competitive advantage.") # Show a popup message for the incorrect choice
self.scenario_4() # Proceed to the next scenario
def scenario_4(self):
self.clear_window() # Clear any existing widgets in the window
scenario_text = (
"Scenario 4: Avoiding Reputational Damage\n"
"Your company experienced a data breach. What do you do?"
) # Define the scenario text
scenario_label = tk.Label(self.root, text=scenario_text, font=("Helvetica", 16), bg="#f0f0f0", wraplength=500) # Create a label widget for the scenario text
scenario_label.pack(pady=20) # Add the scenario label to the window with padding
option_a = tk.Button(self.root, text="A) Inform affected customers and take corrective measures.", command=self.scenario_4_correct, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option A, linked to scenario_4_correct function
option_a.pack(pady=5) # Add the option A button to the window with padding
option_b = tk.Button(self.root, text="B) Hide the breach and hope no one finds out.", command=self.scenario_4_incorrect, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option B, linked to scenario_4_incorrect function
option_b.pack(pady=5) # Add the option B button to the window with padding
def scenario_4_correct(self):
messagebox.showinfo("Correct!", "Informing customers and taking corrective measures helps maintain trust and complies with data protection regulations.") # Show a popup message for the correct choice
self.scenario_5() # Proceed to the next scenario
def scenario_4_incorrect(self):
messagebox.showerror("Incorrect", "Hiding the breach can lead to severe reputational damage and legal consequences.") # Show a popup message for the incorrect choice
self.scenario_5() # Proceed to the next scenario
def scenario_5(self):
self.clear_window() # Clear any existing widgets in the window
scenario_text = (
"Scenario 5: Avoiding Penalties and Sanctions\n"
"Your company is required to follow environmental regulations. What do you do?"
) # Define the scenario text
scenario_label = tk.Label(self.root, text=scenario_text, font=("Helvetica", 16), bg="#f0f0f0", wraplength=500) # Create a label widget for the scenario text
scenario_label.pack(pady=20) # Add the scenario label to the window with padding
option_a = tk.Button(self.root, text="A) Ensure compliance with all environmental regulations.", command=self.scenario_5_correct, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option A, linked to scenario_5_correct function
option_a.pack(pady=5) # Add the option A button to the window with padding
option_b = tk.Button(self.root, text="B) Ignore the regulations to cut costs.", command=self.scenario_5_incorrect, font=("Helvetica", 12), padx=10, pady=5) # Create a button for option B, linked to scenario_5_incorrect function
option_b.pack(pady=5) # Add the option B button to the window with padding
def scenario_5_correct(self):
messagebox.showinfo("Correct!", "Ensuring compliance with environmental regulations avoids legal penalties and protects the environment.") # Show a popup message for the correct choice
self.conclusion() # Proceed to the conclusion
def scenario_5_incorrect(self):
messagebox.showerror("Incorrect", "Ignoring regulations can lead to severe fines and harm to the environment.") # Show a popup message for the incorrect choice
self.conclusion() # Proceed to the conclusion
def conclusion(self):
self.clear_window() # Clear any existing widgets in the window
label = tk.Label(self.root, text="Thank you for playing the Compliance Reminder Game!", font=("Helvetica", 18, "bold"), bg="#f0f0f0") # Create a label widget for the thank you message
label.pack(pady=20) # Add the label to the window with padding
conclusion_text = "Remember to always adhere to legal and regulatory requirements in your work." # Define the conclusion text
conclusion_label = tk.Label(self.root, text=conclusion_text, font=("Helvetica", 14), bg="#f0f0f0", wraplength=500) # Create a label widget for the conclusion text
conclusion_label.pack(pady=20) # Add the conclusion label to the window with padding
exit_button = tk.Button(self.root, text="Exit", command=self.root.quit, font=("Helvetica", 12), bg="#f44336", fg="white", padx=10, pady=5) # Create an exit button to close the game
exit_button.pack(pady=10) # Add the exit button to the window with padding
def clear_window(self):
for widget in self.root.winfo_children(): # Iterate over all widgets in the window
widget.destroy() # Destroy each widget to clear the window
# Main function to run the application
if __name__ == "__main__":
root = tk.Tk() # Create the main application window
app = ComplianceGameApp(root) # Create an instance of the ComplianceGameApp class
root.mainloop() # Run the main application loop
Step 4: Testing and Feedback
Once the application is developed, we test it extensively to ensure all scenarios and decision paths work as intended.
Step 5: Running the App
The final version of the game is shown in the attached figure, transforming a traditionally theoretical session into an interactive and practical learning experience. Students can now engage with the material in a way that is both educational and enjoyable.
By integrating technology and innovative teaching methods, we can create a more engaging and practical learning environment that meets the expectations of our students. The Compliance Reminder Game is just one example of how theoretical concepts can be transformed into enjoyable, interactive experiences, ensuring that students not only understand but also appreciate the importance of legal and regulatory compliance.
As educators, it is our responsibility to continually adapt and innovate, ensuring our teaching methods resonate with and engage our students.
I am committed to this approach and look forward to developing more interactive and practical learning tools in the future.
I hope you find this article insightful and inspiring. Let's continue to innovate and make learning an enjoyable and meaningful experience for our students!
Feel free to connect with me on LinkedIn to discuss more about interactive learning tools and share your thoughts on educational innovations. Together, we can create a better learning environment for our students.
#Education #InteractiveLearning #Compliance #Python #EdTech #Teaching #Innovation #LegalCompliance #StudentEngagement #PracticalLearning #Tkinter #GameDevelopment #HigherEducation #LearningExperience