0% found this document useful (0 votes)
16 views5 pages

Project Brief

Uploaded by

razi haider
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views5 pages

Project Brief

Uploaded by

razi haider
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Habib University

CS 102 Data Structures and Algorithms– Spring 2024

Project

● You are required to implement a data structure that has not been covered in the course
curriculum.
● Your task involves selecting a data structure and devising a solution for a specific
problem it addresses
● This data structure should then aim to solve a particular problem. So you need to come
up with a use case or an application of your chosen data structure.
● Any external resources utilized for learning about the data structure and developing the
project must be properly cited.
● This is a group project and a group can consist of 2-3 students.
● You have to finalize your team on Canvas by February 26, 2024 (Week 8).
○ This will be done by self-signing up to a team on the People tab on Canvas.
○ Note that this is due before your proposal.

Grade Distribution (late submission on any deliverable may entail varying amounts of
penalty)

● Project Proposal (10% of the Project)


○ The Project Proposal will be submitted by March 1, 2024 (Week 8), on the
course’s Canvas site.
○ In the proposal, you will describe the data structure that you will implement, and
mention your team composition (that you have already finalized during Week 7).
○ The course instructor and RA will review your proposal. Based on their approval,
you can proceed with the implementation, or resubmit your proposal after making
necessary changes.
○ Proposal Should include following sections:
■ Team Title
■ Team Members
■ Data Structure to be used
■ Application

● Interim Demo (20% of the Project)


○ The Interim Demo will take place during Week 14 (the exact date will vary based
on your section).
○ When you come for your Interim Demo, ensure that the ADT of your chosen data
structure is fully implemented and operational.
■ Having some small test cases would be helpful for your personal
verification, and for showing it during the demo.
○ In addition, you should have made some progress in actually utilizing your data
structure to solve your chosen problem.
● Final Demo (40% of the Project)
○ The Final Demo will take place during Week 16 (exact date will vary based on
your section). Note that this is the last week of the semester.
○ A detailed rubric for the Final Demo is given in the relevant section below.
● Poster (30% of the Project)
○ You would need to develop a poster for your project by Week 16.
○ Guidelines for the poster are given in the relevant section below.

Final Demo Rubric


Project Rubric

The code is properly commented and


readable. This implies good naming of
Comments variables and functions. Also, consistency in 10
naming style is important (camel case,
underscore, etc.).

The code was split up into well-defined and


Modularity 10
specialized functions.

Clearly present the problem the project aims to


address and the significance of solving it.
Presentation Skills 15
Describe at the ADT level how your chosen
data structure(s) solves your selected problem.

Understand and know the time complexity of


Time Complexity 15
your project.

Understand the memory usage of your data


Memory Requirements 10
structure.

Understand the implementation details of the


Data Structure(s) and
data structure(s) and the algorithm(s) you used 15
Algorithm(s)
in your project.

Demonstrating a thorough and comprehensive


Completeness of project 10
implementation.

Present a live demonstration showcasing the


project's functionality, features, and user
Live Demo 5
interactions. There should be no bugs or errors
(logical and otherwise).

Each member was able to answer the


Q/A 10
questions asked during the presentation.
Guidelines on Poster
Poster Rubric

Content - Clarity and depth of explanation about the 40


chosen data structure, including its
definition, characteristics, and operations.
- Describes why the chosen data structure
is important and relevant in the field of
computer science or specific applications.
- Usage of real-world or theoretical use
cases where the data structure can be
applied effectively.

Design/Layout - Layout is clear and easy to follow, with 30


logical sequencing of information.
- Effective use of diagrams, charts, or other
visual aids to illustrate key concepts.
- Overall design is visually appealing, with
attention to color scheme, font choice,
and readability.

Presentation and - Ability to demonstrate a working 30


Engagement understanding of the data structure
through examples or scenarios.
- Clear and articulate delivery of
information, with appropriate pacing and
volume.
- Ability to answer questions related to the
data structure, including its
implementation, limitations, and
comparisons with other structures.
Some data structures suggestions for the DSA project:
● Trie (Prefix Tree):
○ Trie is used for efficient retrieval of a key in a dataset of strings. It's commonly used in
applications like spell checkers and IP routers.
● Bloom Filter:
○ Bloom Filter is a space-efficient probabilistic data structure used to test whether an
element is a member of a set. It's used in applications where false positives are acceptable,
such as web caching.
● Splay Tree:
○ Splay Tree is a self-adjusting binary search tree that reorganizes itself after each operation,
bringing frequently accessed elements closer to the root. It's used in caching, network
routing, and memory management
● Skip List:
○ Skip List is a data structure that allows fast search within an ordered sequence of elements.
It's used in databases and file systems.
● Segment Tree:
○ Segment Tree is a tree data structure used for storing and querying intervals or segments.
It's often used in range query problems, such as finding the sum of elements within a given
range.
● Fenwick Tree (Binary Indexed Tree):
○ Fenwick Tree is a data structure used to efficiently update and query prefix sums of an
array. It's commonly used in numerical algorithms.
● Disjoint Set Union (Union-Find):
○ Disjoint Set Union is a data structure that keeps track of a set of elements partitioned into
disjoint sets. It's used in applications like image segmentation and maze solving.
● B-Tree:
○ B-Tree is a self-balancing tree data structure that maintains sorted data and allows
searches, insertions, and deletions in logarithmic time. It's used in file systems and
databases.
● Quadtree:
○ Quadtree is a tree data structure in which each internal node has exactly four children. It's
used in image compression, spatial indexing, and geographical information systems.
● KD-Tree:
○ KD-Tree is a space-partitioning data structure used for organizing points in a k-dimensional
space. It's used in applications like nearest neighbor search and range queries in
multidimensional databases.
● AVL Tree:
○ AVL Tree is a self-balancing binary search tree where the heights of the two child subtrees
of any node differ by at most one. It's used in scenarios where frequent search and
modification operations are performed.
● Radix Tree (Trie with Radix Compression):
○ Radix Tree is an extension of the Trie data structure where nodes with a single child are
compressed into a single node. It's used in IP routing and file systems.
● Bloomier Filter:
○ Bloomier Filter is an extension of the Bloom Filter that supports associating data with the
stored keys. It's used in applications where key-value associations need to be efficiently
maintained.
● Suffix Array:
○ Suffix Array is a data structure that stores all the suffixes of a given text in lexicographical
order. It's used in applications like bioinformatics for genome sequence analysis.
● Sparse Matrix:
○ Sparse Matrix is a data structure optimized for matrices where most of the elements are
zero. It's used in applications where memory efficiency is crucial, such as scientific
computing.
● Wavelet Tree:
○ Wavelet Tree is a tree data structure used for range queries on an array of integers. It's
used in applications like data compression and pattern matching.
● Huffman Coding Tree:
○ Huffman Coding Tree is a binary tree used for lossless data compression. It's used in
applications like file compression and network protocols.
● Ternary Search Tree:
○ Ternary Search Tree is a tree data structure used for storing and searching a set of strings.
It's used in applications like spell-checking and auto-completion.
● Treap:
○ Treap is a data structure that combines the properties of a binary search tree and a heap.
It's used in randomized algorithms and applications where both search and insertion
operations are critical.
● Other:
○ Feel free to brainstorm your own ideas or explore other data structures not listed here,
but be sure to consult with your instructors before finalizing your proposal.

You might also like