Introduction to Algorithms and Data Structures in Java

Introduction

We use algorithms in our daily lives without even known it, sorting your business cards, calculating the nearest route to your friends house and even in simple operations like money exchange. In computer science algorithms are fundamental for understanding the importance of every piece of code you write and how common problems can be solved in the most efficient way, and how to understand the complexity of your code to decide if it worth optimization or not.

By understanding the commonly used algorithms, you get the sense of designing new algorithms and how to analyze every new algorithm you come up with to solve your programming problems efficiently and to make sure you are not wasting CPU cycles or your mobile device battery if you are writing applications for mobile.

We also have been using storage structures in our day-to-day lives to store our personal stuff efficiently. You want to store your stuff in a way to be optimized for certain operations on them, like to store your books to be optimized for search or for maximum storage efficiency. The computer memory is no different, we store data in certain structures that are designed to give you the maximum storage efficiency or to give you search performance, among other requirements.

We normally use algorithms to perform certain operations on data stored in data structures to solve certain programming problems, that’s why in computer science it’s very important to learn both in the same course.

Table of Contents

  • Definition of Algorithms
  • Understanding Complexity in Relation to Algorithms
  • Understanding Big-O Notation
  • Introduction to Unit-Testing and JUnit
  • Introduction to Algorithm Analysis
  • Recurrences
    • Recursion and Iteration
    • Divide and Conquer Algorithms
    • Anatomy of Recursive Algorithms
    • Merge Sort
  • Understanding and Testing Lists
    • ArrayList
    • Linked List
  • Understanding Queues and Stacks
    • Queue Operations
    • FIFO, LIFO
    • Blocking Queues
    • Undo/Redo
  • Basic Sorting
    • Understanding Comparators
    • Inserstion, Selection ,Bubble
    • Sorting Stability
  • Advanced Sorting
    • Shellsort, Quicksort
  • Priority Queues
  • Binary Search and BST
  • Hashing and Hashtables
  • Maps (ListMap, HashMap, TreeMap)
  • B-Trees
  • String Searching
  • String Matching
  • Computational Geometry
  • Introduction to Graph

Prerequisites

To attend this course you must have a good knowledge of the Java programming language or any other similar language (C++, C#)

Duration

50 Hours including hands-on exercises

One Response

  1. كريم عامر
    كريم عامر
    September 12, 2011 at 4:44 pm ·

    when will it start :D

Comments are closed, but trackbacks and pingbacks are open.