(Introduction to Algorithms)

You want to learn programming from the beginning, to serve as a foundation for future career development? You have learned to program before but are still confused and need to systematize all your knowledge? You want to definitely master a programming language to lay the foundation for learning Algorithms later?

Big-O Green Course: Introduction to Programming and Problem-Solving is suitable for you, which will help you to get familiar with programming problems. You can also get acquainted with the automated grading system which is one of the most innovative teaching methods of programming in the developed world.

Programming Languages in this course: the 3 most used programming languages nowadays: C++, Python, and 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 do not need to know programming. Require a personal computer to learn.

  • Optional: Those who have learned Introduction to Programming & Programming Techniques 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 Green class, please call us at: 0937.401.483 for advice on taking the next open classes in the near future.


  • The exercises are illustrated in Vietnamese, but there will be more lessons in English for students to familiarize themselves with the Algorithm exercises later.
  • The exercises are uploaded to Big-O’s grading system, students can do the test anywhere, anytime, and get grading results instantly.
  • The exercises are extracted from classic exercises in the programming courses of MIT, Stanford universities, etc.
  • The exercises are extracted from famous exams such as ACM-ICPCInformatics Olympiad (simple sentence format).


  • Duration: 2 months (8 weeks)
  • Class schedule: 2 classes a week, weekday evenings from 18:30 to 21:00(depending on the class schedule, there will be specific classes). 
  • 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.
  • Help you have full knowledge of 2 subjects in the school: Introduction to Programming and Programming Techniques.
  • You are fully prepared to start learning Algorithms and Technology later.
  • You can participate in the Olympiad in Informatics for Colleges and Non-Specialist blocks.
  • You can take the online contest of world-famous websites for Div 3, Div 2 like Codeforces, Codechef. Notes: Div 3, Div2 are for those who have their rating < 1600 and < 1900 respectively in the Codeforces rating system.



Learn programming basic concepts. Introduction to a basic program structure, data types, arithmetic, and logical operations. Get familiar with the grading system.

Write a basic program:

  • Input and output data from the screen.
  • Perform some basic arithmetic operations.
  • Introduction to conditional structure, branching: concepts and notes.

    Solve real problems:

  • Check if a year is a leap year or not.
  • Calculate monthly electricity bill according to usage.
  • Introduction to the loop structure: concepts, classifications, and techniques for dealing with loops.

    Solve real problems:

  • Calculate the number of tiles needed to cover the floor.
  • Calculate the capacity of an electric train.
  • Learn about sub-program: concepts, structures, and uses

    Introduction to local and global variables.

    Introduction to the way to split program files.

    Install some commonly used basic functions:

  • Check for prime numbers.
  • Find the greatest common divisor of 2 integers.
  • Learn about array data types, 1-dimensional arrays: concepts, how to access elements, processing techniques on 1-dimensional arrays.

    Introducing the method of checking program errors, finding errors quickly.

    Introduction to calculation methods and quick approach to the problem.

    Solve some real problems:

  • Solve the problem of buying fruit in the supermarket.
  • Manage the IDs of the employees in the company.
  • Check which post has the most likes.
  • Learn about 2-dimensional and multi-dimensional arrays: concepts, how to access array elements, processing techniques on 2-dimensional arrays.

    Solve some real problems:

  • Playing chess.
  • Count the number of likes of a photo album on social networks.
  • Learn about strings and character types: concepts, programming techniques with string.

    Introduction to ASCII table.

    Application exercises:

  • Name normalization.
  • Count distinct characters.
  • Midterm contest of the course.

    Learn about Basic Recursive Programming Techniques: concepts, classifications, and recursive techniques.

    Basic introduction to advanced data structures Stack.

    Solving classical problems with recursion:

  • Find the Fibonacci number.
  • Binary and decimal conversion application.
  • Learn about struct/class: Apply struct/class to create new data types to help avoid confusion and ease program management.

    Introduction to getters and setters in accessing and manipulating properties in struct/class.

    Solve real problems:

  • Search and store student/staff information.
  • Find the furthest point in a two-dimensional (2D) coordinate system.
  • Learn about the classic Sorting Algorithms.

    Brief introduction and familiarization with Algorithm complexity.

    Solve practical problems:

  • Sort the IDs and scores of a list of students.
  • Find a solution to help Vasya build the tower
  • Introduction to the linked list, FIFO and LIFO single-linked list storage, basic operations on singly linked list.

    Pointer: Extra lessons for C++ language.

    Solving simple linked list problems:

  • Find hotel availability based on given information.
  • Find the reverse linked list.
  • Review what students have learned. With some exercises:

  • Fibonacci numbers.
  • Search for the required element.
  • Create a list of specified nodes.
  • Introduction to tree hierarchical data structures (Tree) in programming: Definition, classification, and basic concepts related to Tree.

    Learn about Binary Tree data structures, especially Binary Search Tree: operations and traversal on binary search trees.

    Solve tree problems:

  • Find the student with the highest score.
  • Visualize a binary tree from a top-down view.
  • Level order traversal.
  • Introduction to graph data structures: Graph definition, graph types, order of vertices, graph representation, graph isomorphism, subgraph - part graph, chain, path.

    Solve basic graph data structure problems:

  • Find the degree of a vertex in an undirected graph.
  • Calculate the weight product of the dotted edges in a directed graph.
  • The final contest of the course.