Course: Data Structures and Algorithms
Department: Information Technology
Author: Prof. Pragati T. Sawant
In Data Structures and Algorithms course, I teach students which algorithms or data structures are necessary to efficiently solve a given problem. Students may not fully understand why these algorithms or data structures are chosen, and they may not get an opportunity to empirically observe the impact of such design decisions.
So, I decided to plan and implement a PBL (Project Based Learning) activity for this course that will help students to demonstrate the importance of critical-thinking and analysis activities when developing software. The objective of the course project is to connect computer science theory with software development practice by incorporating algorithm design and analysis, data structure selection, and experimental analysis as part of the software development lifecycle.
My initial specifics of the PBL activity
It consists of 5 components:
- Questioning: Start with the basic need (Essential Question).
- Planning: Design a Plan for the Project (Project Calendar).
- Researching: Identifying the resources/requirement (In case of data structure suitable data structure and algorithm) to meet the basic need to solve the given problem/question.
- Implementing and improving: Monitor the Students and the Progress of the Project. Students implement and test their software, while teacher/mentor test cases impose grade penalties for incorrect and inefficient implementations. Teacher will give valuable insights about what went well and what they need to change.
- Presenting: Final Project will be shared with class/larger group (Fig1). Students perform experimental analysis to empirically observe performance differences when using different data structures. Students are expected to be able to measure the cost of the final product. Number of lines of code and number of modules are used as metrics (Fig3).
Basic Need : Where these data structures are applied in real time scenario? What is the problem they want to address/solve by implementing this application? What data structure they will choose to implement this application? What algorithm is suitable?
Presentation/ Application Development/ Prototype
What approach would I take to form teams
I have taken students input to form the teams. I asked students to form the groups based on their interest. In case students fail to form the groups on their own I will help them to form the groups based on their interest. And I also tried to balance the teams.
List of rubrics:
Rubrics are used through out the project in following ways:
- Basic Need: Has clear goal related to topic. Well thought and supports the soluton to question/problem
- Design a Plan for the Project (Project Calendar): Monitor the Students and the Progress of the Project. Performing the tasks as per the calendar.
- Identifying the resources/requirement: Choosing suitable data structure and algorithm to meet the basic need to solve the given problem/question.
- Assessment of the Outcome/solution to the question : Designing the test cases to test the final product.
Project-based learning encourages student engagement. The project-based practical assignments will help students to better understand the concepts explained in lectures. It will also lead to more student engagement and better learning. I find it interesting to have more student involvement with less lecturing which results into higher level thinking.