Available courses

A systematic approach to the design, construction, and management of computer programs, emphasizing design, programming style, documentation, testing, and debugging techniques. Strings, multidimensional arrays, structures, and classes. Pointers: their use in arrays, parameters, and dynamic allocation. Introduction to linked lists.

COURSE STUDENT LEARNING OUTCOMES:

  • Read, analyze, and explain intermediate level C++ programs.
  • Design solutions for intermediate-level problems using appropriate design methodology incorporating intermediate programming constructs.
  • Create algorithms, code, document, debug and test intermediate level C++ programs.

TEXTBOOK: Starting Out with C++: From Control Structures through Objects By Tony Gaddis.8th ED


AP Computer Science Principles offers a multidisciplinary approach to teaching the underlying principles of computation. The course will introduce students to the creative aspects of programming, abstractions, algorithms, large data sets, the Internet, cybersecurity concerns, and computing impacts. AP Computer Science Principles also gives students the opportunity to use current technologies to create computational artifacts for both self-expression and problem-solving. Together, these aspects of the course make up a rigorous and rich curriculum that aims to broaden participation in computer science.

In this course, we follow the course standard in AP Computer Science Principles standard with enhancement in Web/App Programming.  Therefore, we will also go through HTML, CSS and JavaScript Programming lectures. 


Provides information and basic tool usage training for the new students to eC Academy.

Welcome to eC academy.  Have fun and let us know if there is anything we can improve.

Introductory Java Programming course for high school. 

We use Think Java 2.0 curriculum for this course. 

Think Java is an excellent introduction to computer science and programming intended for people with little or no experience. We start with the most basic concepts and are careful to define all terms when they are first used. The book presents each new idea in a logical progression. Larger topics, like recursion and object-oriented programming, are divided into smaller examples and introduced over the course of several chapters.


Introductory Java Programming course for high school. 

We use Think Java 2.0 curriculum for this course. 

Think Java is an excellent introduction to computer science and programming intended for people with little or no experience. We start with the most basic concepts and are careful to define all terms when they are first used. The book presents each new idea in a logical progression. Larger topics, like recursion and object-oriented programming, are divided into smaller examples and introduced over the course of several chapters.


Introductory Java Programming course for high school. 

We use Think Java 2.0 curriculum for this course. 

Think Java is an excellent introduction to computer science and programming intended for people with little or no experience. We start with the most basic concepts and are careful to define all terms when they are first used. The book presents each new idea in a logical progression. Larger topics, like recursion and object-oriented programming, are divided into smaller examples and introduced over the course of several chapters.


Introductory Java Programming course for high school. 

We use Think Java 2.0 curriculum for this course. 

Think Java is an excellent introduction to computer science and programming intended for people with little or no experience. We start with the most basic concepts and are careful to define all terms when they are first used. The book presents each new idea in a logical progression. Larger topics, like recursion and object-oriented programming, are divided into smaller examples and introduced over the course of several chapters.


Introductory Java Programming course for high school.

 

Object-Oriented Programming in Java with Games and Simulations

Welcome to Introduction to Programming with Greenfoot! In this course, we will discuss how to program graphical computer programs, such as simulations and games, using the Java Programming Language and the Greenfoot environment.

There are several goals in doing this: one is to learn to program, another is to have fun along the way. While the examples we discuss in this book are specific to the Greenfoot environment, the concepts are general: working through this book will teach you general programming principles in a modern, object-oriented programming language. However, it will also show you how to make your own computer game, a biology simulation, or an on-screen piano.

This book is very practically oriented. Chapters and exercises are structured around real, hands-on development tasks. First, there is a problem that we need to solve, then we look at language constructs and strategies that help us solve the problem. This is quite different from many introductory programming textbooks which are often structured around programming language constructs.


ABOUT THIS COURSE

Prepare for the AP Computer Science A exam with a full suite of review lectures, past FRQ practice programs, past released Multiple Choice problems and review book practice. Get feedback on how you're doing on quizzes and programming exercises from your teacher.

This course is designed to in 10-week AP review course format. 



Understand the core aspects of computer science which you can use to create solutions that are understandable, adaptable, and when appropriate, reusable.

The design and implementation of computer programs to solve problems involve skills that are fundamental to the study of computer science. This includes the development and analysis of algorithms and fundamental data structures and the use of logic and formal methods.

This course is in compliance with AP Computer Science A curriculum. 

Understand the core aspects of computer science which you can use to create solutions that are understandable, adaptable, and when appropriate, reusable.

The design and implementation of computer programs to solve problems involve skills that are fundamental to the study of computer science. This includes the development and analysis of algorithms and fundamental data structures and the use of logic and formal methods.



Understand the core aspects of computer science which you can use to create solutions that are understandable, adaptable, and when appropriate, reusable.

The design and implementation of computer programs to solve problems involve skills that are fundamental to the study of computer science. This includes the development and analysis of algorithms and fundamental data structures and the use of logic and formal methods.

This course is in compliance with AP Computer Science A curriculum. 

Understand the core aspects of computer science which you can use to create solutions that are understandable, adaptable, and when appropriate, reusable.

The design and implementation of computer programs to solve problems involve skills that are fundamental to the study of computer science. This includes the development and analysis of algorithms and fundamental data structures and the use of logic and formal methods.

This course is in compliance with AP Computer Science A curriculum. 

Understand the core aspects of computer science which you can use to create solutions that are understandable, adaptable, and when appropriate, reusable.

The design and implementation of computer programs to solve problems involve skills that are fundamental to the study of computer science. This includes the development and analysis of algorithms and fundamental data structures and the use of logic and formal methods.



ABOUT THIS COURSE

Prepare for the AP Computer Science A exam with a full suite of review lectures, past FRQ practice programs, past released Multiple Choice problems and review book practice. Get feedback on how you're doing on quizzes and programming exercises from your teacher.

This course is designed to in 10-week AP review course format. 



A data structure is a way of storing and organizing data in a computer so that it can be used efficiently. It provides a means to manage large amounts of data efficiently. And efficient data structures are key to designing efficient algorithms. 

In this Data Structures and Algorithms in Java course, we are going to cover basic data structures such as:

Let’s check out each of them.


Python for Data Science

What will we be learning?
  • Types
  • String Operators
  • Data Structures: List, Tuples, Dictionary
  • Conditions and Branching
  • Loops
  • Objects and Classes
  • Reading and Opening Files
  • Numpy and Data Visualization

Python for Data Science

What will we be learning?
  • Types
  • String Operators
  • Data Structures: List, Tuples, Dictionary
  • Conditions and Branching
  • Loops
  • Objects and Classes
  • Reading and Opening Files
  • Numpy and Data Visualization

Construction of programs for problems and computing environments more varied than in CS 31 Python Programming Essentials. Using library modules for applications such as graphics, sound, GUI, database, Web, and network programming. Language features beyond those in CS 31 are introduced as needed.

  • Python Object-Oriented Programming
  • Python File Systems 
  • Python Module
  • Python Network, Sockets, and Protocol
  • Duck Typing and Interfaces
  • URLs and HTTP
  • Web API
  • GUI with PyGame
  • Tkinter



Intermediate-level language features and programming concepts for larger, more complex, higher-quality software. Functional programming, namespaces, modules, class protocols, inheritance, iterators, generators, operator overloading, reflection. Analysis of time and space efficiency.

  • Tokenization
  • Functional Programming
  • Data Structures
  • Algorithm Analysis
  • Software Development



  • We will work hard to present the subject clearly, provide the student with examples.
    Programming, when feasible, is the method of choice. The student will be assigned homework,
    lab works, quizzes and projects. We expect the student to participate to discussions, ask
    questions and help the teacher and the class in achieving our objectives. A term project and its
    presentation are included. This term project experience will lead to mastering independent
    project development skills and getting ready for job interviews.
  • After completion of this course, a student will be able to
    • analyze the needs of a project and pick a proper language for the project development,
    • master the compilation process and be ready to learn detailed compiler design,
    • know about the key features of programming languages and learn a new language much faster,
    • utilize the lexical analyzer generator and parser generator so that he will be able to write good input processing programs and input form converters,
    • write engineering project proposals and reports, and
    • work on software development projects independently

An introduction to computer programming. Its primary objective is to teach problem-solving using the C++ programming language. Emphasis will be placed on structured procedural programming with an introduction to object-oriented programming. Designed primarily for computer science and related transfer majors.

STUDENT LEARNING OUTCOMES:

  • Design solutions for introductory level problems using appropriate design methodology incorporating elementary programming constructs.
  • Create algorithms, code, document, debug, and test introductory level C++ programs.
  • Read, analyze, and explain introductory level C++ programs.

Knowledge of linked structures is must for C programmers. This article explains the fundamentals of C linked list with an example C program.

Linked structure is a dynamic data structure whose length can be increased or decreased at run time.

How Linked lists are different from arrays? Consider the following points :

  • An array is a static data structure. This means the length of array cannot be altered at run time. While, a linked list is a dynamic data structure.
  • In an array, all the elements are kept at consecutive memory locations while in a linked list the elements (or nodes) may be kept at any location but still connected to each other.

When to prefer linked lists over arrays? Linked lists are preferred mostly when you don’t know the volume of data to be stored. For example, In an employee management system, one cannot use arrays as they are of fixed length while any number of new employees can join. In scenarios like these, linked lists (or other dynamic data structures) are used as their capacity can be increased (or decreased) at run time (as an when required).


An introduction to computer programming. Its primary objective is to teach problem-solving using the C++ programming language. Emphasis will be placed on structured procedural programming with an introduction to object-oriented programming. Designed primarily for computer science and related transfer majors.

STUDENT LEARNING OUTCOMES:

  • Design solutions for introductory level problems using appropriate design methodology incorporating elementary programming constructs.
  • Create algorithms, code, document, debug, and test introductory level C++ programs.
  • Read, analyze, and explain introductory level C++ programs.

A systematic approach to the design, construction, and management of computer programs, emphasizing design, programming style, documentation, testing, and debugging techniques. Strings, multidimensional arrays, structures, and classes. Pointers: their use in arrays, parameters, and dynamic allocation. Introduction to linked lists.

COURSE STUDENT LEARNING OUTCOMES:

  • Read, analyze, and explain intermediate level C++ programs.
  • Design solutions for intermediate-level problems using appropriate design methodology incorporating intermediate programming constructs.
  • Create algorithms, code, document, debug and test intermediate level C++ programs.

TEXTBOOK: Starting Out with C++: From Control Structures through Objects By Tony Gaddis.8th ED


  • To review the key ideas of computer science, programming, and problem-solving using the C++ language.

  • To understand abstraction and the role it plays in the problem-solving process.

  • To develop an understanding of Big O notation and other important techniques of algorithm analysis.

  • To develop comfort with standard data structures including queues, stacks, and trees.

  • To become conversant with sorting algorithms, including the advantages and disadvantages of each.

  • To learn to write and analyze recursive programs, functions, and methods.

  • To learn to traverse and to implement linked data structures such as linked lists and trees.


This course is designed for interviews and coding competitions. A brief introduction of the programming language and concept of recursion is explained. A number of problems based on recursion and array are explained.Then in the coming chapter, we will be looking into complexity analysis. Then we will be looking into Sorting & Searching techniques.

Then will look into the various data structures and their algorithms. We will be looking into a Linked List, Stack, Queue, Trees, Heap, Hash Table and Graphs.
Then we will be looking into algorithm analysis, we will be looking into Brute Force algorithms, Greedy algorithms, Divide & Conquer algorithms, Dynamic Programming, and Backtracking. 

In the end, we will be looking into System Design, which will give a systematic approach for solving the design problems in an Interview/competitions.

This course has two parts: Part A: Basic Problem Solving Skills.  Part B: Algorithms. 


This course is designed for interviews and coding competitions. A brief introduction of the programming language and concept of recursion is explained. A number of problems based on recursion and array are explained.Then in the coming chapter, we will be looking into complexity analysis. Then we will be looking into Sorting & Searching techniques.

Then will look into the various data structures and their algorithms. We will be looking into a Linked List, Stack, Queue, Trees, Heap, Hash Table and Graphs.
Then we will be looking into algorithm analysis, we will be looking into Brute Force algorithms, Greedy algorithms, Divide & Conquer algorithms, Dynamic Programming, and Backtracking. 

In the end, we will be looking into System Design, which will give a systematic approach for solving the design problems in an Interview/competitions.

This course has two parts: Part A: Basic Problem Solving Skills.  Part B: Algorithms. 


You’ll begin from square one, learning how the web and web pages work, then steadily build from there. Along the way, there are hands-on exercises and short quizzes to make sure you understand key concepts. By the end of the book, you’ll have the skills to create a simple multi-column site that works on all screen sizes.

  • Build HTML pages with text, links, images, tables, and forms
  • Use style sheets (CSS) for colors, backgrounds, formatting text, page layout, and even simple animation effects
  • Learn how JavaScript works and why the language is so important in web design
  • Create and optimize web images so they’ll download as quickly as possible

You’ll begin from square one, learning how the web and web pages work, then steadily build from there. Along the way, there are hands-on exercises and short quizzes to make sure you understand key concepts. By the end of the book, you’ll have the skills to create a simple multi-column site that works on all screen sizes.

  • Build HTML pages with text, links, images, tables, and forms
  • Use style sheets (CSS) for colors, backgrounds, formatting text, page layout, and even simple animation effects
  • Learn how JavaScript works and why the language is so important in web design
  • Create and optimize web images so they’ll download as quickly as possible

AP Computer Science Principles offers a multidisciplinary approach to teaching the underlying principles of computation. The course will introduce students to the creative aspects of programming, abstractions, algorithms, large data sets, the Internet, cybersecurity concerns, and computing impacts. AP Computer Science Principles also gives students the opportunity to use current technologies to create computational artifacts for both self-expression and problem-solving. Together, these aspects of the course make up a rigorous and rich curriculum that aims to broaden participation in computer science.

In this course, we follow the course standard in AP Computer Science Principles standard with enhancement in Web/App Programming.  Therefore, we will also go through HTML, CSS and JavaScript Programming lectures. 


•This course cover a wide range of robotics topics common to most robotics classes, including forward and inverse kinematics, sensors and computer vision (machine vision), and feedback motion control. Theory is paired with hands-on building and programming tasks using a kit of parts that allows you to practice as you learn, building and programming complete robots. 
•The course involves programming in C and Python. It is helpful if you have some experience already with matrix math (adding/subtracting and multiplying matrices and vectors) and trigonometry. 
•All of the topics in the course lead to building and programming a complete, working, 3-degree-of-freedom SCARA pick-and-place manipulator by understanding and practicing all of the theory underneath.  This course use XARM as an example robot model.


The purpose of this course is to introduce you to the basics of modeling, design, planning, and control of robot systems. In essence, the material treated in this course is a brief survey of relevant results from geometry, kinematics, statics, dynamics, and control.

The course is presented in a standard format of lectures, readings, and problem sets. There will be an quizzes, homework and a final project. These quizzes will be open book. Lectures will be based mainly, but not exclusively, on the material in the Textbook. Lectures will follow roughly the same sequence as the material presented in the book, so it can be read in anticipation of the lectures



Topics: robotics foundations in kinematics, dynamics, control, motion planning, trajectory generation, programming, and design.

Prerequisites: matrix algebra.

Textbook: Robotics: Modelling, Planning, and Control

                 (Advanced Textbooks in Control and Signal Processing) 1st ed. 2009 Edition

                 by Bruno Siciliano, Lorenzo Sciavicco, Luigi Villani, Giuseppe Oriolo

                 ISBN-13: 978-1846286414

                 ISBN-10: 1846286417

The AP Precalculus Course Framework provides a clear and detailed description of what students should know and be able to do to qualify for college credit or placement. The course framework includes two essential components: 

  • Mathematical Practices
  • Course Content


AP Statistics is an introductory college-level statistics course that introduces students to the major concepts and tools for collecting, analyzing, and drawing conclusions from data. Students cultivate their understanding of statistics using technology, investigations, problem solving, and writing as they explore concepts like variation and distribution; patterns and uncertainty; and data-based predictions, decisions, and conclusions.

Prepare students to pass the the USACO contest at Bronze level and get promoted to the Silver division, most of our students pass Bronze level on first attempt, and many with full scores!

Not like a lot of the USACO Bronze classes offered from some other institutes, we do REQUIRE students to already possess the fundamental programming skills (preferable in Java but other languages is fine too).  Our bronze level class is truly a contest and competition preparation,  and focuses on problem solving, algorithms and data structures, and consistently delivers more advanced topics and contents.  

Prepare students to pass the the USACO contest at Silver level and get promoted to the Gold division, most of our students pass Silver level on first attempt, and many with full scores!

Not like a lot of the USACO Silver classes offered from some other institutes, we do REQUIRE students to already possess the fundamental programming skills (preferable in Java but other languages is fine too).  Our bronze level class is truly a contest and competition preparation,  and focuses on problem solving, algorithms and data structures, and consistently delivers more advanced topics and contents.