Skip to content
forked from samuel-pc/edd

Collection of data structures implemented in Java

License

Notifications You must be signed in to change notification settings

JulioQaMath/edd

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Structures (course)

This repository contain the project and problem sets of the Data Structures course I took as part of my CS Curriculum at UNAM's Faculty of Science (Facultad de Ciencias de la Universidad Autónoma Nacional de México, UNAM.). imparted by @canek-pelaez in the first half of 2019.

Coursework description

@canek-pelaez's course focus was to understand data structures from a computational complexity point of view and also from an engineering point of view where he focused a lot on the implementation details using Java.

Problem sets

All problem set assignments goal was to implement a data structure completing some boilerplate code provided at the beginning of each one. The missing pieces of each data structures where primarily its algorithms, e.g.: In balanced binary trees, the task was to complete the algorithms that enable the data structure to have insertions, lookups, sorting, etc.

The final result of the problem sets is a collection of all the data structures reviewed in the course so you can navigate the source chronologically by starting with problem set 01 (linked lists) and see the final result at problem set 12 (optimized graphs using hash maps). Here's a list of all data structures by problem set:

Each problem set includes the original task description along with a commit with the given boilerplate (you'll have to search through the history, sorry).

Projects

Over the course 3 projects were assigned, this is what they were about:

Create a program that reads either from a text file or from the standard input and sorts its content lexicographically.

By far the most interesting of them all, given an specific data structure an its content, create a program that output an SVG file that represent that structure. Here are some of the results:****

  • Red-black trees: red-black-tree
  • Graphs graphs
  • Mean-heaps (array representation): meanheap-array

For graphs I implemented a super cool heuristic proposed in 1991 by Frutchman and Reingold in Graph Drawing by Force-directed placement Although @canek-pelaez was ULTRA STRICT and disallowed me to use any code coming from java.util so my heuristic had to be implemented without the use of pseudo-random generated numbers 💔😭 and most of the complex graphs were layed out symmetrically leaving behind the awesome, weird, and beautiful outcomes expected by the algorithm.

#### 03 - Word frequency counter with HTML reports

Create a program that reads from a text files and count the words frequency and then generate an HTML website with the report which uses the SVGs of balanced binary trees that the previous project was able to create.

Something cool about this project was that I created a template system that mimics that of Django's.

  • index.html index
  • file.html file-1 file-2

License

This project follows GNU General Public License v3.0 which you can fully read here

About

Collection of data structures implemented in Java

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 52.9%
  • HTML 47.1%