You want to learn algorithms but have not had any knowledge? Or you have already had some experience in Algorithms but are still confused about it. When you search for the words “Algorithms self-learning”, you will receive many results, many documents, and many programming languages that make you more confused about what to choose to learn? You want to challenge yourself in a very challenging and interesting field of Algorithms but don’t know how to start?

Big-O Blue Course: Intermediate Algorithms is suitable for you, which will help you to get familiar with Algorithms. You will be guided in programming and solving problems on online grading systems (Codeforces, Topcoder, SPOJ…). The course has many practical examples, exercises that are designed from easy to difficult, illustrated visually, and easy to understand. Programming languages that are used in this course: C++, Python, Java.

Tuition Fee: Special offer for the first 5 early registrants. For details of tuition fees, please see the attached link below.

We also have a program to support paying tuition fees many times for students. Please contact us via Email: for information.

You can view the opening time, class timetable and register via this link.


  • Prerequisites: Students have learned basic programming before, or have studied the courses Introduction to Programming, and Programming Techniques

  • Optional: Those who have learned Data Structures & Graph Theory but are still  confused or those who have not studied these 2 subjects can also participate.

  • If you are not  a suitable student for this Big-O Blue class, please call us at: 0937.401.483 for advice on taking the next open classes in the near future.


  • The exercises are 100% written in English (also have detailed instructions in Vietnamese).
  • The exercises are extracted from Intern or Full-time job interview questions of Google, Facebook, Amazon, Microsoft, etc.
  • The exercises are extracted from practical projects of companies.
  • The exercises are extracted from famous exams such as ACM-ICPCInformatics Olympiad (simple sentence format).


  • Duration: 2.5 months (9 weeks)
  • Location: Jabes Building 1, No. 244 Cong Quynh, Pham Ngu Lao Ward, District 1, Ho Chi Minh City.
  • Number of students per class: 25 to 30 students maximum.
  • Each class has 1 main teacher and 5 teaching assistants.
  • Especially, there are weekly Office Hours for students to review the lesson if they can’t keep up with the lesson progress.



  • The programs are taught by Algorithm experts with many years of experience (see also “Teaching Staff”).
  • The courses work on world-famous grading systems such as Codeforces, Hackerrank, HackerEarth, SPOJ, etc.
  • Students have chances to meet and receive sharing from successful people who have gone before about their Algorithmic learning experiences and working experiences.
  • Each class in addition to the main lecturer has 5 teaching assistants: the teaching assistants are in charge of the class and the class’s own forum to ensure that all students’ questions will be answered quickly anytime, anywhere.
  • Each class will have a forum, and questions will be answered within 30 minutes to 1 hour at the latest.


  • Systematize all knowledge and set up a solid foundation in programming.
  • If you are a Software Engineer, you can participate in algorithmic contests from technology companies such as Samsung Challenge, Facebook Hacker Cup (Round 1), Google Codejan (Round 1).
  • If you are a student, you can participate in the Olympiad in Informatics, IOI (International Olympiad in Informatics), ACM-ICPC, Codeforces (Div 2).
  • You can apply what you have learned to your practical projects.
  • You are prepared to achieve your bigger goal which is having an internship, or full-time job at top tech companies.


Learn about dynamic arrays and strings: declarations, operations, notes, and how to apply them in solving problems. Familiarize yourself with the online grading system and improve your problem-solving skills.

Application exercises:

  • The optimal way to use the typewriter.
  • Find the string behind another string in lexicographic order.
  • Introduce and guide to evaluate and analyze the space and time complexity of the Algorithm. Learn about the two-pointer technique.

    Application exercises:

  • Count the number of books that can be read in a given time.
  • Calculate the maximum number of people that can fit the given number of shirts.
  • Introduce and guide to use the standard library STL (Standard Template Library) to organize from basic data types to structured data and to organize applications in solving real-life problems.

    Solve real problems:

  • Schedule the Olympic Games.
  • Predict programming contest rankings.
  • Familiarize yourself with the basic data structures of the standard library STL(Standard Template Library) including stack and queue.

    Solve real problems:

  • Solve supermarket queuing problems.
  • Optimizing the travel of Cargo Ferries.
  • Get started with Graph Algorithms, specifically Breadth Search (BFS). This is a very important knowledge, widely applied in AI and other fields.

    Solve some real problems:

  • Find the way out of the maze
  • Find the shortest path.
  • Learn about another graph search algorithm: depth-first search (DFS). Implement DFS using stack and recursion. Learn about DFS applications.

    Solve some real problems:

  • Find the minimum number of people to transmit the message to achieve the highest efficiency.
  • Find the longest route through town.
  • Build a complete binary tree to install the Heap (minHeap & maxHeap) and apply it to create a priority queue, and to reduce the complexity of the finding path Algorithms.

    Application exercises:

  • Build a Trending ranking.
  • Calculate the amount of money to spend on a promotion campaign.
  • Familiarize yourself with the algorithm to find the shortest path on the graph (Dijkstra algorithm) which is implemented by a priority queue.

    Solving the problem of finding paths:

  • Rescue the mouse in the laboratory.
  • Puzzle Game Commandos to lay mines.
  • Send Emails in the computer network in real-time.
  • Midterm contest of the course.

    Familiarize yourself with another shortest path algorithm on the graph, that is Bellman - Ford for further processing in some special cases.

    Solving the problem of finding the way:

  • Check if there is a negative cycle in the graph.
  • Find the shortest path with a negative weighted graph.
  • An algorithm to find the shortest path between every pair of vertices on the graph is the Floyd – Warshall which is applied in the fields of banking, finance, and financial price prediction.

    Solve the problem of finding paths, the problem of making friends:

  • Build a solution to meet Prof. Miguel.
  • Make a Facebook friend suggestion function.
  • Start familiarizing yourself with Data Structures and Tree-related Algorithms such as binary search over a sorted set.

    Solve problems:

  • Find the real root of a monotone function over a segment.
  • Search for a value in a sorted array.
  • Familiarize yourself with a very powerful tree data structure which is often used to solve search problems.

    Solve real problems:

  • Organize a party for the company.
  • The problem of dividing candy for children.
  • Familiar with advanced data structures, Trie data structure is especially suitable for search suggestion applications.

    Solve problems:

  • Construct the human DNA dictionary tree.
  • Solve the password detection problem.
  • Introduce the algorithm to find the smallest spanning-tree Prim. Apply to construct network roads and roads of public transport.

    Solve problems:

  • Build roads between cities.
  • Internet cable construction.
  • Learn to be a Tourist Guide.
  • An advanced structure Disjoint Set Union is applied in Machine Learning and AI. It is also used in the Kruskal minimum spanning tree algorithm.

    Solve problems:

  • Find the group of friends with the most people in the group.
  • Find the number of strongly connected components in the graph.