Skip to content

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

License

Notifications You must be signed in to change notification settings

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
πŸ’‘ Graph-Tool graph-tool.skewed.de
βš™οΈ Gephi gephi.org
πŸš€ OSMnx github.com/gboeing/osmnx
πŸ’£ ChatGPT chat.openai.com
πŸ’Ύ Dataset snap.stanford.edu/data

Lessons

Week 01

  • Open in PDF Course Outline: Provides an overview of the course structure and topics covered.
    • 🎯 Week Goals
      • Your main goal for this week is to create a personal repository for tracking your progress and coursework.
      • Feel free to explore these resources and engage with the course material. If you have any questions or need assistance, please don't hesitate to reach out.
      • Happy coding! πŸ’»πŸš€
    • πŸŽ‰ GitHub Education Benefits
      • GitHub Education Pro: Get access to the GitHub Education Pro pack by visiting GitHub Education
    • πŸ“– Learning Resources
      • GitHub Learning Game: Check out the interactive Git learning game at GitHub Learning Game
      • Basic Python: Enhance your Python skills through the Kaggle Python course.
      • AI Python for Beginners: Learn Python programming fundamentals and how to integrate AI tools for data manipulation, analysis, and visualization. Andrew Ng
  • Open in PDF Network Fundamentals I: Outline, applications, math and graph theory.

Week 02

Week 03

  • Open in PDF Small World: This week, we explore key concepts such as Small World Networks, Homophily, and Assortativity. You will investigate how these concepts influence the structure and behavior of real-world networks.

Week 04

  • 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

Week 05

  • Open in PDF Hubs: the most important metrics and case studies.
    • Eccentricity, Diameter, Periphery, Radius and Center
    • Degree, Closeness, Betweenness and Eigenvector Centrality
    • Centrality Distributions
    • Core Decomposition
  • Jupyter Hands on centralities measures

Week 06

  • 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

Week 07

  • 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

Week 08

  • Open in PDF Complexity of Algorithms I: Fundamentals and notations, time and constant complexity.
    • Let's Practice!
      • Jupyter: Two numbers sum challenge.
    • Open in PDF How to Calculate the Complexity of the Most Common Use Cases Algorithms: Linear, quadratic, and constant complexity.
      • Fundamentals of Algorithms Complexity I Open in Loom
      • Fundamentals of Algorithms Complexity II Open in Loom
      • ⏳ Estimated time: 30min
    • Open in PDF Notations: Linear, quadratic, and constant complexity.
      • Big O Notation Open in Loom
      • Big Ξ© Notation Open in Loom
      • Big Θ Notation Open in Loom
      • ⏳ Estimated time: 30min
  • Let's Practice (homework)!
    • Time Complexity of Algorithms
      • πŸ‘Š Skills You'll Gain: You will learn how to a) measure the execution time of an algorithm; b) generate random inputs for an algorithm; c) model the execution time of an algorithm.
      • Jupyter: Time Complexity of Algorithms.
      • Jupyter: Constant Time Complexity.

Week 09

  • Open in PDF Complexity Algorithm II: Logarithmic time complexity
    • You will learn: a) explain logarithms and logarithmic complexity; b) apply the binary search algorithm to find elements in sorted lists.
    • Jupyter: Guided Project: Code interview challenge.
    • Let's Practice, it is challenge time.
      • Jupyter: Find closest value in BST: Write a function that takes in a Binary Search Tree (BST) and a target integer value and returns the closest value to that target value contained in the BST.
      • Jupyter: Find kth largest value in BST: Write a function that takes in a Binary Search Tree (BST) and a positive integer k and return the kth largest integer contained in the BST.
      • Jupyter: Benchmark: Compare the performance of the algorithms.

Week 10

  • 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.

Week 11

  • 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.

Week 12

  • References for unit 2 project.
    • Jupyter: Dijsktra: dijsdktra algorithm implementation modified to use min heap.
    • Jupyter: Kruskal: A practical example using mst and OSMnx with a real-world network of streets in Natal-RN.

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