/cit-594-plus

A resource for students to accompany CIT-594 (Data Structures & Software Design)

Primary LanguageJava

CIT-594 Plus

This is a community-repository created by and for the students of the UPenn MCIT Program. In the first half of CIT-594, we cover a number of data structures and our assignments cover some applications of each data structure and some problems that you may encounter when using these data structures.

However, as students, we know there's a lot more we still need to learn. So this is CIT-594 Plus, where we've prepared a number of leetcode questions of increasing difficulty to accompany each data structure, and to prepare you for more of the patterns that you may encounter in technical intereviews.

We encourage future students of CIT-594 to tackle these bonus problems each week as they're studying the data structure to increase the depth of their knowledge on the use and application of these data structures.

Module Data Structure # Questions
1 Arrays / ArrayLists 20
2 LinkedLists 18
2 Stacks & Queues 12
4 HashSets & HashMaps 6
5 Binary Search Trees 18
6 Balanced Binary Trees 3
7 Heaps 6
7 Tries 6
8 Graphs 12
Total 101

How to use this repository

Please fork your own version of this repository.

Each folder has a README file that will provide a recommended order for the different data structures. Please follow the recommended order as you tackle each problem as they serve to reinforce your learning.

When you tackle each problem:

  1. Copy and paste the base .java file into the solutions folder and number it; rename the class and update the package declaration
package [DataStructure].Solutions;
  1. Implement your solution and run the basic tests provided. Go to the corresponding leetcode link and run it through their tests. (We also encourage students to contribute new tests to the base file as they encounter or think about more edge cases!)

  2. Once both sets of tests pass, sign your solution in the solution notes section, and add some comments on your implementation.

  3. Review implementations that other students have done. (Please don't change your solution after this though.)

  4. Make a pull request to the original repository using the 'Solution' tag! (Please try your best to avoid committing configuration files and add to the .gitignore as necessary.)

Further Contributions

We welcome other contributions beyond your solutions.

Perhaps you believe there's a really important problem that students need to have experience with that you believe needs to be added to this repository and prioritized more above other questions. Please make a pull request with the 'New Question' tag.

Perhaps you want to contribute to documentation. We want to build a wiki describing in detail the different data structures patterns that students can use as a resource in the future. (Writing about these topics helps cement your learning as well!). Please make a pull request with the 'Documentation' tag.