Implementing and Reflecting on Sorting Algorithms Without AI Tools
Purpose
This assignment challenges students to manually implement and analyze sorting algorithms, encouraging them to develop a deeper understanding of the logic and mechanics behind algorithm design. By requiring students to build and test their own solutions, the assignment promotes critical thinking, problem-solving, and attention to detail. Through performance analysis, students gain insight into computational efficiency and practical considerations when selecting algorithms for various scenarios. Additionally, the requirement to document each step and reflect on the process reinforces the importance of clear communication in software development.
This assignment is human-centric because it leverages higher-order cognitive skills outlined in Bloom’s Taxonomy, such as creating, analyzing, and evaluating. By focusing on manual implementation without pre-built libraries or AI tools, students engage deeply with the material and develop a comprehensive understanding of the algorithm’s inner workings. This approach emphasizes the uniquely human ability to synthesize complex information, identify patterns, and make reasoned decisions based on observed results. It ensures that students cultivate critical programming skills and confidence in solving problems independently, which are essential for adapting to dynamic, real-world challenges.
Learning Outcomes
- Implement sorting algorithms without reliance on pre-built libraries or AI tools.
- Analyze and compare the performance of sorting algorithms based on computational efficiency.
- Reflect on the challenges and insights gained through manual algorithm implementation.
Instructions
Format (Final Deliverable)
- Algorithm Implementation
- Choose one sorting algorithm (e.g., insertion sort, selection sort, or bubble sort) and manually implement it in Python.
- Write comments within your code to explain each step of the algorithm.
- Create test cases to validate the algorithm, including cases with sorted input, reverse-ordered input, and edge cases.
- Performance Analysis
- Measure the performance of your algorithm for input sizes of 10, 100, and 1,000 elements.
- Compare your algorithm’s performance with a built-in Python sorting function (e.g.,
sorted()
) and discuss the differences in time complexity.
- Reflection
- Write a 300-word reflection addressing:
- The challenges faced during manual implementation.
- Insights gained about the algorithm’s efficiency and its practical applications.
- How manual implementation deepened your understanding of sorting processes.
- Write a 300-word reflection addressing:
Grading Criteria
- Correctness and functionality of the implemented algorithm (40%)
- Quality and clarity of code documentation and test cases (30%)
- Depth of analysis in comparing performance metrics (20%)
- Insightfulness of reflection on learning and challenges (10%)
Resources
- Writing Center consultations for organizing and refining reflections.
- Instructor-provided pseudocode examples for selected sorting algorithms.
- Python resources, such as GeeksforGeeks Sorting Algorithms, for reference.