Skip to content

ivanovitchm/datastructure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Federal University of Rio Grande do Norte

Technology Center

Department of Computer Engineering and Automation

Algorithms and Data Structure II (DCA3702)

This is the repository for the Algorithms and Data Structures II course, offered by the Department of Computer Engineering and Automation (DCA) of the Technology Center (CT) at the Federal University of Rio Grande do Norte (UFRN).

The DCA aims to train professionals capable of designing and developing computer systems for industrial automation, embedded systems, software systems, distributed systems, computer networks, and information systems. The CT offers undergraduate and graduate courses in Engineering. This course is part of the curriculum of the Computer Engineering program at DCA/UFRN.

References

Tool Link
๐Ÿ˜ƒ Networkx networkx.org
โš™๏ธ Gephi gephi.org
๐Ÿš€ OSMnx github.com/gboeing/osmnx
๐Ÿ’พ Dataset snap.stanford.edu/data

Lessons

Week 01

  • Open in PDF Course Outline: Provides an overview of the course structure and topics covered.
    • ๐ŸŽ‰ GitHub Education Benefits
      • GitHub Education Pro: Get access to the GitHub Education Pro pack by visiting GitHub Education
    • ๐Ÿ“– Learning Resources
  • Open in PDF Network Fundamentals I: Outline, applications, math and graph theory.

Week 02

  • Open in PDF Network Fundamentals II: Probability, extended graphs, matrices, degree and representation.

Week 03

  • Project: Authorship Temporal Network Analysis

Week 04

  • Open in PDF Small World: This weekโ€™s content focuses on core concepts such as Small World Networks, Homophily, and Assortativity. You will analyze how these properties shape the topology and dynamics of real-world networks.
    • Jupyter Hands on assortativity: A hands-on notebook for computing and interpreting assortativity in real datasets.
    • Jupyter The art of seeing networks: Explore key NetworkX functionalities for analyzing and visualizing complex networks.
    • ๐Ÿ“š Further reading: chapters 30 to 31 from The Atlas For The Aspiring Network Scientist, including the exercises.

Week 05

  • Project unit 01

Week 06

  • Open in PDF Small World Cont.: Paths, Distances, Connected Components, Clustering Coefficient, Social Distance and Six Degrees of Separation
    • Jupyter Paths, Walks and Distances
    • Jupyter Connected Components
    • Jupyter Clustering Coefficient
  • Open in PDF Classical Algorithms: Dijsktra: Shortest path algorithm
    • You will learn: a) Explain how the Dijkstra algorithm works. b) Understand the algorithmโ€™s time complexity.
    • Ready to practice?
      • Jupyter: Dijsktra: Implement the algorithm both with and without path reconstruction.
      • Jupyter: Min-Heap: an implementation of Dijkstra's algorithm using a min-heap, with and without path reconstruction.

Week 07

  • U2T1 Evaluating Algorithms for the Shortest Path in Urban Graphs

Week 08

  • Open in PDF Heap Structures and Time Complexity: This lesson explores Min-Heap data structures, focusing on their array representation and the behavior of the main operations such as insert, remove, and peek.
    • Topics covered include:
      • Properties of a Min-Heap and array-based implementation
      • Understanding parent and child index calculations
      • Explanation of siftDown and siftUp mechanisms
      • Efficient heap construction from unsorted arrays using buildHeap
  • Jupyter MinHeap Implementation and Testing: Interactive Jupyter Notebook that includes the full implementation of a Min-Heap class in Python, along with detailed unit tests to validate correctness and ensure that the min-heap property is preserved after each operation.

Week 09

  • Open in PDF A* Algorithm: Introduction to the A* algorithm, combining Dijkstra's search with heuristic-based guidance. Key concepts:

    • Combines Dijkstra (guarantees cheapest path) and Greedy search (guides exploration).
    • Heuristics:
      • Euclidean: for local planar maps.
      • Great-circle: for large geographical distances.
      • Manhattan: for grid-like networks.
    • A* process:
      1. Start at source node.
      2. For each neighbor, compute:
        • ( g ): actual cost.
        • ( h ): heuristic estimate.
        • ( f = g + h ).
      3. Use priority queue (lowest ( f ) first).
      4. Repeat until reaching the goal.
    • Visual flow:
      Start โ†’ [g + h] โ†’ expand node โ†’ update queue โ†’ repeat โ†’ Goal
  • Jupyter A* Implementation: Jupyter Notebook with A* implementation using NetworkX and OSMnx, applying different heuristics to real urban graphs.

Weeks 10 and 11

  • U2T2 Evaluating A-Star Algorithm

Week 12

  • Open in PDF Classical Algorithms - Kruskal: Minimum Spanning Tree

    • You will learn: a) Explain how the minimum spanning tree Kruskal's algorithm works. b) Understand the algorithmโ€™s time complexity.
    • Ready to practice?
      • Jupyter: Kruskal: Implement the minimum spanning tree algorithm.
      • Jupyter: OSMnx example: A practical example using mst and OSMnx.
  • U2T3: Applying Kruskal's Algorithm to Points of Interest in Natal's Urban Graph.

    • Jupyter: Kruskal-POI: reference to be considered in the project.

Week 13

  • Open in PDF Hubs: key centrality metrics and illustrative case studies.
    • Eccentricity, Diameter, Periphery, Radius, and Center
    • Degree, Closeness, Betweenness, and Eigenvector Centrality
    • Centrality distributions and interpretation
    • Core decomposition and its relevance
  • Jupyter Hands on: practical exploration of centrality measures

Week 14

  • Directed networks: case study of Wikipedia pages

    • Building a networking from Wikipedia pages
    • Collecting data from a snowballing process
    • Truncate and eliminate duplicates
    • Exploring the network data
    • Jupyter Wikipedia pages network
  • Gephi: The Open Graph Viz Platform

    • A brief overview about Gephi Open in Loom
    • Quick start Open in Loom
    • Using layouts Open in Loom
    • Node and network measures Open in Loom
    • Visualize and filtering nodes and communities Open in Loom
    • Renderize, export the network, and highlight a community Open in Loom
    • Deploy the network into an HTML page Open in Loom Open in Loom
    • Another way to publish your network to the web using Retina and Gephisto Open in Loom
  • Final Project

    • Jupyter Notebook with the final project description and source code to generate the network under study.
    • .txt Nodes file
    • .txt Edges file

About

Repository for DCA0209, an undergraduate course about Data Structure and Algorithms

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published