FCSP - Semester Project
FCSP - Semester Project
Semester Project: Complex Algorithm Analysis and Data Sorting Tool Using Truth Tables (Console-
based application)
Overview
In this project, you will be developing a tool that processes complex data objects and evaluates the efficiency
of various sorting and searching algorithms. These data objects will have both numerical and logical properties,
and your task is to implement sorting that incorporates truth tables and logical propositions. You’ll be working
with object-oriented programming principles while analyzing the performance of your algorithms using loops,
recursion, and a variety of data types.
You have the freedom to choose any dataset that interests you. Whether it’s related to e-commerce, scheduling,
or something entirely different, your goal is to build a system around that dataset, applying appropriate
algorithms to solve a specific problem. The system could involve sorting products, organizing a schedule, or
analyzing complex logical expressions—it's up to you! Some examples recommended by ChatGPT are:
Performance analysis will be an important part of your project, so make sure to assess how your algorithms
perform as dataset size and logical complexity increase, and understand how recursion and truth table
evaluations impact efficiency.
Name: _________________________
Key Components
1. Sorting Algorithms: Implement at least 1 sorting algorithms (Insertion sort, Merge sort, Selection sort,
etc.), with the following requirements:
o At least one sorting algorithm must use a loop (e.g., Insertion Sort, Bubble Sort).
o At least one sorting algorithm must use recursion (e.g., Merge Sort, Recursive Selection Sort).
o Sorting is based on two layers:
▪ Primary Sorting: Sort based on numerical, string, or float data properties.
▪ Secondary Sorting: Use logical propositions and truth tables as secondary criteria. For
example, sort objects where logical expressions (p ∧ q, p → q) evaluate to True before
those that evaluate to False.
2. Truth Table and Logical Complexity:
o Each object will have an associated logical expression, evaluated using truth tables.
o Propositions and logical operators (∧, ∨, ¬, →, and ↔) will influence the sorting order.
Objects will be sorted first based on their numerical properties, then by the truth table
evaluation of their logical expressions.
o Encourage innovation in how the truth table and logical expressions are implemented and
integrated with the sorting process.
3. Performance Analysis:
o Analyze and compare the time complexity of the implemented sorting algorithms using Big-O
Notation.
o Measure performance for different dataset sizes and levels of logical complexity (i.e., simple
vs. complex logical expressions).
o Visualize the performance impact of adding logical expressions and recursion to the sorting
process.
4. Object-Oriented Design:
o Use OOP principles to design the tool with class objects that best represent your data set and
structure.
o Implement abstraction, inheritance and polymorphism to allow flexibility in adding more
sorting algorithms and types of data.
o Ensure error handling for invalid inputs (e.g., malformed logical expressions or improper data
formats).
o A minimum of 4 objects is required.
5. Data Handling:
o Read datasets from CSV files, with each row containing objects with numerical and logical
fields (e.g., columns for numbers and logical expressions like p ∧ q).
o Use Pandas for efficient data manipulation and integration with the sorting and truth table
processes.
6. User Interaction:
o Allow users to input datasets manually or through file uploads, select which sorting algorithm
to use, and view real-time sorting results and truth table evaluations.
7. Innovation & Complexity:
o Encourage students to develop creative ways to handle complex data objects (e.g., visualize
truth table evaluations or recursive processes).
o Innovation in performance analysis (e.g., visualizing the time taken by recursion) and
extensions such as integrating new sorting criteria will be rewarded.
Submission
o Final code to be pushed to Github. Invite your lecturer as a collaborator. The latest commit
before the deadline will be considered the submission.
o Deadline: The night (23:59) before your last lecture.
o Present your project on the last day of classes during class time.
Name: _________________________
Note: Marks are only awarded if they work. i.e. If the file input and output don’t work, you don’t get
the full marks for that criteria.
Max Mark
Project Grand Total = Project total – Validation criteria 100