Emmy Code

Emmy Code

Share

Contact information, map and directions, contact form, opening hours, services, ratings, photos, videos and announcements from Emmy Code, Tutor/Teacher, Lagos.

28/10/2024

To go from beginner to expert in data structures and algorithms, it helps to follow a structured, progressive learning path. Here’s a roadmap to guide your journey, with key topics, resources, and practice tips at each stage.

1. Beginner Level: Fundamentals of Data Structures and Algorithms
Goal: Understand basic data structures, algorithm analysis, and problem-solving techniques.

Learn Basic Concepts:

What is an algorithm, and why are data structures important?
Time and space complexity (Big O notation).
Core Data Structures:

Arrays and Linked Lists
Stacks and Queues
Core Algorithms:

Sorting (Bubble Sort, Selection Sort, Insertion Sort)
Searching (Linear and Binary Search)
Resources:

Grokking Algorithms by Aditya Bhargava
"Data Structures and Algorithms" on YouTube (e.g., freeCodeCamp or Khan Academy)
Practice Platforms:

LeetCode Easy, HackerRank, CodeSignal
2. Intermediate Level: Advanced Data Structures and Algorithms
Goal: Gain proficiency in more complex data structures and efficient algorithms.

Advanced Data Structures:

Trees (Binary Trees, Binary Search Trees)
Heaps (Min-Heap, Max-Heap)
Hash Tables (Hashing concepts and collision handling)
Graphs (Introduction, Adjacency Lists, Adjacency Matrices)
Advanced Algorithms:

Recursive algorithms
Sorting (Merge Sort, Quick Sort)
Dynamic programming basics (Fibonacci, Knapsack)
Resources:

Cracking the Coding Interview by Gayle Laakmann McDowell
"Data Structures and Algorithms in Python" on YouTube by Tech With Tim or freeCodeCamp.
Practice Platforms:

LeetCode Medium, HackerRank, and CodeWars
3. Upper Intermediate Level: Problem Solving Techniques
Goal: Learn advanced techniques and apply them to more complex problems.

Key Techniques:

Backtracking (e.g., N-Queens, Sudoku)
Dynamic Programming (e.g., Memoization, Bottom-Up approach)
Graph algorithms (DFS, BFS, Dijkstra’s, A*)
Advanced Problem Types:

Combinatorial problems (Permutations, Combinations)
Shortest path problems
Divide and Conquer
Resources:

Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
Coursera’s "Algorithms Specialization" by Stanford University
“Algorithm Design Manual” by Steven Skiena
Practice Platforms:

LeetCode Hard, Codeforces, TopCoder
4. Expert Level: Specializations and System-Level Knowledge
Goal: Gain deep expertise in specific data structures, algorithms, and system design.

Advanced Data Structures:

Segment Trees, Fenwick Trees
Tries, Suffix Trees, and Suffix Arrays
Disjoint Set Union (Union-Find)
System-Level Algorithms:

Advanced graph algorithms (Kruskal’s, Prim’s, Floyd-Warshall)
Network flow algorithms (Ford-Fulkerson, Edmonds-Karp)
Probabilistic Data Structures (Bloom Filters, Count-Min Sketch)
System Design:

Learn to design scalable systems and use algorithms for efficient data retrieval, caching, load balancing, etc.
Resources:

Advanced Data Structures by Peter Brass
System Design Primer (GitHub repository)
Competitive Programmer's Handbook by Antti Laaksonen
Practice Platforms:

Codeforces, AtCoder, and Google’s Kick Start
5. Consistent Practice and Competitive Programming
Key Tips:
Practice daily: Set aside dedicated time for problem-solving.
Reflect on mistakes: Review solutions and optimize when possible.
Compete and collaborate: Engage in coding competitions and collaborate in study groups.
Platforms for Competitions:
LeetCode Contests, Codeforces, TopCoder, AtCoder
Summary
Follow a structured path from basics to advanced topics, and be consistent with practice. Engaging in regular problem-solving challenges and revisiting core concepts will build your expertise. With time and dedication, you’ll progress from understanding fundamentals to handling real-world, complex algorithmic challenges with confidence.

08/08/2024

JavaScript Array

JavaScript Arrays are a fundamental data structure in JavaScript, allowing you to store and manipulate collections of values. Here are some key aspects of JavaScript Arrays:

Creating Arrays

- Literal syntax: const arr = [1, 2, 3, 4, 5];
- Constructor syntax: const arr = new Array(1, 2, 3, 4, 5);

Array Methods

- push(): adds elements to the end of the array
- pop(): removes the last element from the array
- shift(): removes the first element from the array
- unshift(): adds elements to the beginning of the array
- splice(): adds or removes elements at a specified position
- slice(): returns a shallow copy of a portion of the array
- indexOf(): finds the index of a specified element
- includes(): checks if the array contains a specified element
- forEach(): executes a function for each element in the array
- map(): creates a new array with the results of a function applied to each element
- filter(): creates a new array with elements that pass a test implemented by a function
- reduce(): applies a function to each element to reduce the array to a single value

Array Properties

- length: the number of elements in the array
- prototype: allows you to add custom methods to all arrays

Multidimensional Arrays

- Arrays can contain other arrays as elements, creating a multidimensional array

Array Destructuring

- Allows you to extract elements from an array and assign them to variables

Array Spread

- Allows you to expand an array into a new array or function call

Remember, JavaScript Arrays are zero-indexed, meaning the first element is at index 0. I hope this helps! Let me know if you have any specific questions or need further clarification.

26/11/2019

HDLC

Special Instructional Objectives:

· On completion, the student will be able to:

· Explain how High-Level Data Link Control (HDLC) works

· Explain how piggybacking is done in HDLC

· Explain how data transparency is maintained in HDLC

Introduction

HDLC is a bit-oriented protocol. It was developed by the International Organization for Standardization (ISO). It falls under the ISO standards ISO 3309 and ISO 4335. It specifies a packetization standard for serial links. It has found itself being used throughout the world. It has been so widely implemented because it supports both half-duplex and full-duplex communication lines, point-to-point (peer to peer) and multi-point networks, and switched or non-switched channels. HDLC supports several modes of operation, including a simple sliding-window mode for reliable delivery. Since Internet provides retransmission at higher levels (i.e., TCP), most Internet applications use HDLC's unreliable delivery mode, Unnumbered Information.

Other benefits of HDLC are that the control information is always in the same position, and specific bit patterns used for control differ dramatically from those in representing data, which reduces the chance of errors. It has also led to many subsets. Two subsets widely in use are Synchronous Data Link Control (SDLC) and Link Access Procedure-Balanced (LAP-B).

In this lesson we shall consider the following aspects of HDLC:

· Stations and Configurations

· Operational Modes

· Non-Operational Modes

· Frame Structure

· Commands and Responses

· HDLC Subsets (SDLC and LAPB)

HDLC Stations and Configurations

HDLC specifies the following three types of stations for data link control:

· Primary Station

· Secondary Station

· Combined Station

Primary Station

Within a network using HDLC as its data link protocol, if a configuration is used in which there is a primary station, it is

09/10/2019

Hardware and Software



The following table highlights the points that differentiate a hardware from a software.

Hardware

Software

It is the physical component of a computer system.

It is the programming language that makes hardware functional.

It has the permanent shape and structure, which cannot be modified.

It can be modified and reused, as it has no permanent shape and structure.

The external agents such as dust, mouse, insects, humidity, heat, etc. can affect the hardware (as it is tangible).

The external agents such as dust, mouse, insects, humidity, heat, etc. cannot affect (as it is not tangible).

It works with binary code (i.e., 1’s to 0’s) .

It functions with the help of high level language like COBOL, BASIC, JAVA, etc.

It takes in only machine language, i.e., lower level language.

It takes in higher level language, easily readable by a human being.

It is not affected by the computer bug or virus.

It is affected by the computer bug or virus.

It cannot be transferred from one place to other electronically.

It can transfer from one place to other electronically.

Duplicate copy of hardware cannot be created.

A user can create copies of a software as many as he wishes.

01/10/2019

Programming Languages



The computer system is simply a machine and hence it cannot perform any work; therefore, in order to make it functional different languages are developed, which are known as programming languages or simply computer languages.

Over the last two decades, dozens of computer languages have been developed. Each of these languages comes with its own set of vocabulary and rules, better known as syntax. Furthermore, while writing the computer language, syntax has to be followed literally, as even a small mistake will result in an error and not generate the required output.

Following are the major categories of Programming Languages −

Machine Language

Assembly Language

High Level Language

System Language

Scripting Language

Let us discuss the programming languages in brief.

Machine Language or Code

This is the language that is written for the computer hardware. Such language is effected directly by the central processing unit (CPU) of a computer system.

Assembly Language

It is a language of an encoding of machine code that makes simpler and readable.

High Level Language

The high level language is simple and easy to understand and it is similar to English language. For example, COBOL, FORTRAN, BASIC, C, C+, Python, etc.

High-level languages are very important, as they help in developing complex software and they have the following advantages −

· Unlike assembly language or machine language, users do not need to learn the high-level language in order to work with it.

· High-level languages are similar to natural languages, therefore, easy to learn and understand.

· High-level language is designed in such a way that it detects the errors immediately.

· High-level language is easy to maintain and it can be easily modified.

· High-level language makes development faster.

· High-level language is comparatively cheaper to develop.

· High-level language is easier to document.

Although a

28/09/2019

Fundamental Concept



A computer is basically a programmable machine capable to perform arithmetic and logical operations automatically and sequentially. It is also known as a data processor, as it can store, process, and retrieve data as per the wish of the user.



Data processing involves the following three activities −

Input of data

Manipulation/processing of data

Giving output (i.e. management of output result)

In computer system, data is arranged orderly and systematically.

The term “computer” is derived from a Latin term “compute,” which means ‘to calculate.’ Initially, the computer system had been designed to calculate; it was intended to be a computing device. However, over a period of time, this device technically advanced; at present, it can perform a wide range of desirable works apart from data processing.

Major Functions of Computer System

Following are the core functions of a computer system −

· A computer accepts the command and/or data as input given by the user.

· A computer follows the instructions and stores the data given by the user.

· A computer processes the data as per the instructions given by the user.

· A computer gives the desirable results in the form of output.

Salient Features of Computer System

Following are the salient features of a Computer System −

· Automation − The operating system of a computer system is automatic, as no human intervention is required; simply you need to give the command and then it will do the work automatically.

· Speed − Depending upon the power of the computer, it can perform, it can take Millions of instructions per second.

· Storage − A computer system can store enormous quantity of data in different format. The storage capacity of a computer system is normally expressed in terms of Kilobytes (KB), Megabytes (MB), Gigabytes (GB), or Terabytes (TB).

· Accuracy − The accuracy of a computer system is very high.

· Versatility

27/09/2019

Diamond plus computer is offering free computer training if you are interested drop your number so that we can add you on our WhatsApp group

Want your school to be the top-listed School/college in Lagos?
Click here to claim your Sponsored Listing.

Category

Telephone

Website

Address


Lagos