Git Product home page Git Product logo

spbu-fundamentals-of-algorithms's Introduction

spbu-fundamentals-of-algorithms

Materials for the practicum for "Fundamentals of Algorithms" course at SpbU

Getting started

Set up your environment

VSCode

Go to Run and Debug in the left panel, create a new launch file, select Python File and add the following field:

"env": {
    "PYTHONPATH": "${workspaceFolder}${pathSeparator}${env:PYTHONPATH}"
}

Practicum 1

We study basic tools necessary for the rest of the course: python, numpy and matplotlib. It is assumed that a student has some decent knowledge of python though he/she is not very experienced in it.

Plan:

  1. Warm-up
  2. Go through intro_to_numpy_and_matplotlib.ipynb together

Practicum 2

We start working on graph algorithms via introducing networkx and then a couple of simple algorithm for graph traversals.

Plan:

  1. Warm-up
  2. Go through intro_to_networkx.ipynb together
  3. Complete bfs_maze_template.py
  4. Go through dfs_recursive() in dfs_maze.py together
  5. Complete dfs_iterative() in dfs_maze_template.py
  6. Complete topological_sort() in dfs_maze_template.py
  7. Go through dfs_recursive_postorder() in dfs_maze.py together (solution for point 6)

Practicum 3

We study two classical graph problems: Minimum Spanning Tree and Shortest Path. We use Prim's algorithm to solve the former and Dijkstra's algorithm to solve the latter.

Plan:

  1. Warm-up
  2. Complete mst_template.py
  3. Complete sp_template.py. We can do both the original version and the version with a priority queue.

Practicum 4

We study fundamental data structures.

Plan:

  1. Warm-up
  2. Complete valid_parentheses.py (LIFO)
  3. Complete time_needed_to_buy_tickets.py (FIFO)
  4. Complete linked_list.py (linked list)

Homework:

  1. time_needed_to_buy_tickets.py: implement a proper solution for this problem.

Practicum 5

We study simple computaional geomtery algorithms such as convex hull computing.

Plan:

  1. Warm-up
  2. Complete slow_convex_hull.py
  3. Complete qwer

Homework:

  1. convex_bucket.py: implement a convex hull algorithm constructing only the lower part of a convex hull which would "hold" all the points if they fell due to the gravity.

Practicum 10

Cubic spline: http://getsomemath.ru/subtopic/computational_mathematics/approximation_theory/local_interpolation

LU: http://getsomemath.ru/subtopic/computational_mathematics/numerical_linear_algebra/gauss_methods

spbu-fundamentals-of-algorithms's People

Contributors

anton-pershin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.