STEP IT STEP | We have been teaching since 1999. High-quality IT-education for adults and children. We prepare programmers, designers and system engineers who cannot be replaced by artificial intelligence. In order to achieve this, we teach how to understand tasks, run projects and work in a team, in addition to core knowledge.

Your browser Internet Explorer is out of date!

Please, use Google Chrome, Safari, Mozilla Firefox, Opera

men cloud brackets setting lamp tools star star star star star star star star
banner

Opportunity to obtain strong fundamental knowledge of system programming

Advanced Algorithms Program - C and Assembler Languages

Course Highlights

University-level fundamental computer science course adapted to a talented high-schoolers level
Get understanding of how CPU works inside out, understand performance implications
Build strong computer science background
Practice on real-world tasks used for technical interviews in big tech

Possibility to outrun your peers in skills and knowledge

Computer becomes more a work tool rather than a gaming device

Get full understanding of computer hardware

Get prepared for coding competitions

Define college pathway and future career while in school

Become independent and confident in your abilities

Programmers career allows you to work from anywhere in the world

All graduates will receive an international diploma

Our graduates often get internships in the big tech companies

Computer becomes more a work tool rather than a gaming device

Get full understanding of computer hardware

Get prepared for coding competitions

Define college pathway and future career while in school

Become independent and confident in your abilities

Programmers career allows you to work from anywhere in the world

All graduates will receive an international diploma

Our graduates often get internships in the big tech companies

Brain Development

Understand not only how algorithms work but how to design them yourself

This 3-year course is designed so students get to the level of solving real world technical problems that are used during technical interview at big tech companies at the end of the second year of study.

Sign up

The curriculum:

Year 1

Year 2

Year 3

CPU architecture. Position numeral systems (decimal, binary, hexadecimal).

Information theory basics. Measuring information. Understanding PC specification

Quick recap of C syntax. Variables. Loops. Conditions

Functions. Strings in C. Passing parameters. Scanf, printf, stdin

Arrays. Pointers

Introduction to algorithms. Insertion sort

Bubble sort

Merge sort

Counting Sort

Preprocessor. Compiler. Linker

Profiling code. Comparing performance of sorting algorithms

Bit-wise operations

Operations performance

Multi-dimension arrays

Search algorithms

Structures. Data alignment. Pointer to pointer

Linked list definition. Difference between list and array

Implementing linked list. Passing arguments to functions

Working on linked list. Basic operations, adding, deleting, searching on list

Introduction to file I/O

Introduction of two-way linked list

Implementing CPU. Opcodes

Adding JMP and CMP operations. FLAGS register

Coding for our CPU, improving operation set

Digital image formats. Creating bitmap

Practicing two-dimensional addressing using bitmap as an output

Stack concept. Using RPN to solve arithmetic expressions

Continue to work on RPN. Shunting-yard algorithm

Other examples of stack usage. Solving a maze using stack

Using stack to generate the maze

Definition of queue and dqueue Starting working with queues

Recursion. Factorial implementation. Tower of Hanoi

Fractals using recursion

Debugger in depth

Access violation. Stack overflow. Stack corruption

Debug and Release

AppVerifier

Sign up

Developing of the algorithm. Measuring the time spent. Worst running case. Counting sort analysis

Bubble sort complexity analysis

Function growth speed (1, N, N^2, N^3). Finalizing bubble sort complexity analysis

Analysis of searching algorithms complexity. Algorithms with log(N) growth

Definition of brute force. Algorithms with O(N^2) complexity

Implementing password generator/cracker. Introduction to TSP

TSP brute force complexity analysis

Quick sort - classic implementation

Quick sort - pivot choosing strategies

Quick sort - hybrid optimizations

Bubble sort in-depth analysis. Cocktail sort. Comb sort.

Radix sort. Bucket sort

Stable sort. Sorting by multiple keys

Cycle sort and it's performance analysis

Definition of Process and Thread. Thread Creation

Events. Wait for multiple objects

Race condition. Mutex intro

Events. Wait for multiple objects

Mutex and Critical Section

Semaphores. Dining philosophers problem

Graphs definition and basic operations. Adjacency matrix

Incidence matrix. Adjacency list. Edges list

DFS algorithm

Implement recursive and iterative versions of DFS. BFS algorithm

Topology graph sorting. Introduction to SPF algorithms

Introduction to x86 instruction set. General purpose registers. MOV, LEA, ADD, SUB, MUL, DIV, JMP

Practicing writing assembler code. Working with MUL, DIV. Golden ratio derivation

Function call conventions. Working with stack. EBP and ESP registers

Debugging assembler code

LOOP command and applications. REP MOVS command

MMX extension set intro

MMX packing and unpacking instructions

Sign up

Refresh on graphics formats. Opening and writing BMP files. YUV color space

YUV444, 422 and 420 formats. Working with luminance. Edge detection starting

Practice YUV schemes. Chroma vs luma. Noise generation

De-noising algorithms. Image blurring

Introduction to the digital video formats. AVI/RIFF parsing

Creating of AVI file

Generating text

Generating of advanced animation

Generating fractals

Console graphics, practicing 2D addressing. Bit blitting practicing

Hash functions. Hash tables. Open addressing collisions resolving algorithm

Separate chaining. Comparing of separate chaining and open addressing

Hash functions for non-integer data. Hashing the book

Clustering. How to build hash function for a certain table size

Rehashing

Binary search tree. Basic operations

Deleting elements from BST. Searching performance analysis in the binary search tree. Balanced BST

AVL balanced BST. Building AVL tree, inserting elements

Rebalancing AVL tree. Deleting elements in AVL tree

Red-black trees introduction. 2-3-4 BST

Greedy algorithms. Activity selection problem

Coin change problem. Fractional Knapsack Problem

Dynamic Programming vs Greedy Algorithms. Coin change problem using DP

DP Solving Strategy (Recursive and Tabulation). Subset Sum Problem

Lumber Cutting Problem (Cutting a Rod). 0-1 Knapsack Problem. Recursive approach

0-1 Knapsack Problem. Memorization approach

Sign up

The curriculum:

Year 1

CPU architecture. Position numeral systems (decimal, binary, hexadecimal).

Information theory basics. Measuring information. Understanding PC specification

Quick recap of C syntax. Variables. Loops. Conditions

Functions. Strings in C. Passing parameters. Scanf, printf, stdin

Arrays. Pointers

Introduction to algorithms. Insertion sort

Bubble sort

Merge sort

Counting Sort

Preprocessor. Compiler. Linker

Profiling code. Comparing performance of sorting algorithms

Bit-wise operations

Operations performance

Multi-dimension arrays

Search algorithms

Structures. Data alignment. Pointer to pointer

Linked list definition. Difference between list and array

Implementing linked list. Passing arguments to functions

Working on linked list. Basic operations, adding, deleting, searching on list

Introduction to file I/O

Introduction of two-way linked list

Implementing CPU. Opcodes

Adding JMP and CMP operations. FLAGS register

Coding for our CPU, improving operation set

Digital image formats. Creating bitmap

Practicing two-dimensional addressing using bitmap as an output

Stack concept. Using RPN to solve arithmetic expressions

Continue to work on RPN. Shunting-yard algorithm

Other examples of stack usage. Solving a maze using stack

Using stack to generate the maze

Definition of queue and dqueue Starting working with queues

Recursion. Factorial implementation. Tower of Hanoi

Fractals using recursion

Debugger in depth

Access violation. Stack overflow. Stack corruption

Debug and Release

AppVerifier

Sign up
Year 2

Developing of the algorithm. Measuring the time spent. Worst running case. Counting sort analysis

Bubble sort complexity analysis

Function growth speed (1, N, N^2, N^3). Finalizing bubble sort complexity analysis

Analysis of searching algorithms complexity. Algorithms with log(N) growth

Definition of brute force. Algorithms with O(N^2) complexity

Implementing password generator/cracker. Introduction to TSP

TSP brute force complexity analysis

Quick sort - classic implementation

Quick sort - pivot choosing strategies

Quick sort - hybrid optimizations

Bubble sort in-depth analysis. Cocktail sort. Comb sort.

Radix sort. Bucket sort

Stable sort. Sorting by multiple keys

Cycle sort and it's performance analysis

Definition of Process and Thread. Thread Creation

Events. Wait for multiple objects

Race condition. Mutex intro

Events. Wait for multiple objects

Mutex and Critical Section

Semaphores. Dining philosophers problem

Graphs definition and basic operations. Adjacency matrix

Incidence matrix. Adjacency list. Edges list

DFS algorithm

Implement recursive and iterative versions of DFS. BFS algorithm

Topology graph sorting. Introduction to SPF algorithms

Introduction to x86 instruction set. General purpose registers. MOV, LEA, ADD, SUB, MUL, DIV, JMP

Practicing writing assembler code. Working with MUL, DIV. Golden ratio derivation

Function call conventions. Working with stack. EBP and ESP registers

Debugging assembler code

LOOP command and applications. REP MOVS command

MMX extension set intro

MMX packing and unpacking instructions

Sign up
Year 3

Refresh on graphics formats. Opening and writing BMP files. YUV color space

YUV444, 422 and 420 formats. Working with luminance. Edge detection starting

Practice YUV schemes. Chroma vs luma. Noise generation

De-noising algorithms. Image blurring

Introduction to the digital video formats. AVI/RIFF parsing

Creating of AVI file

Generating text

Generating of advanced animation

Generating fractals

Console graphics, practicing 2D addressing. Bit blitting practicing

Hash functions. Hash tables. Open addressing collisions resolving algorithm

Separate chaining. Comparing of separate chaining and open addressing

Hash functions for non-integer data. Hashing the book

Clustering. How to build hash function for a certain table size

Rehashing

Binary search tree. Basic operations

Deleting elements from BST. Searching performance analysis in the binary search tree. Balanced BST

AVL balanced BST. Building AVL tree, inserting elements

Rebalancing AVL tree. Deleting elements in AVL tree

Red-black trees introduction. 2-3-4 BST

Greedy algorithms. Activity selection problem

Coin change problem. Fractional Knapsack Problem

Dynamic Programming vs Greedy Algorithms. Coin change problem using DP

DP Solving Strategy (Recursive and Tabulation). Subset Sum Problem

Lumber Cutting Problem (Cutting a Rod). 0-1 Knapsack Problem. Recursive approach

0-1 Knapsack Problem. Memorization approach

Sign up

Additional program documents:

School year calendar

FAQ

Is there a homework?

Yes, for this program there is a homework for each class. Students can do the assignment and upload it via their MyStat portal.

What enrollment process looks like?

This program requires students to perform on college CS course level and even more. If you would like to enroll, reach out to us so we can schedule an evaluation session.

What should I do if my child is missing the class?

We do not offer any make up classes for this program, but kids can access information about their missed classed in their online MyStat account.

What software do you use?

We use Microsoft Visual Studio but for usual practice kids can use any C compiler (even online compiler will work).

Can I join a trial class?

For this program it’s really hard to join existing class (it’s very rare that kids have enough prior training level to join mid-term). Contact us and we’ll be happy to schedule an evaluation session with your child to see what enrollment options we can offer.

How many students are in each class?

Our groups have a maximum of 8 students, allowing our teachers to provide individualized attention to every child

Sing up now!

Summer Camp registration is now open! Secure your spot in any of the sessions at Early Bird prices.

Read

This site uses cookies

Privacy policy