Skip to content

A non-official Dart Implementation with 100% test coverage for "Algorithms Analysis and Design from scratch" course provided by "Cloud Native Base Camp" platform and instructed by "Eng. Ahmed Metwally" ๐Ÿ’™

License

Notifications You must be signed in to change notification settings

moazelsawaf/cnbc_algo_01_dart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

52 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Repository Banner

Cloud Native Base Camp
Algorithms Analysis and Design from scratch
Dart Implementation

Star on GitHub GitHub Open Issues GitHub Last Commit Date


๐Ÿ’ก Overview

This repository provides a (Non-Official) Dart Implementation with 100% test coverage for Algorithms Analysis and Design from scratch course provided by Cloud Native Base Camp platform and instructed by Eng. Ahmed Metwally ๐Ÿ’™โค

The course comprises 30 instructional videos on algorithms, beginning with fundamental concepts and progressing to an average level suitable for software development work ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป

Visit the above hyperlinks for more information about the course, the platform ,and the instructor โœ…

๐Ÿ“– Repository Philosophy

The repository is designed with the following key points in mind:

  • ๐Ÿ“‚ All the implementation files are located under the lib/ folder and the test files are located under the test/ folder.

  • ๐Ÿ“น Each code video has its own folder with the same name of the video (code videos are the videos that have code implementation in them and they are all postfixed with "- Code" in the name).

  • ๐Ÿ“ The code is written in a way that is almost exactly to the code in the videos.

  • โœ The code of the requested exercises is provided and located in the same folder of the code video that requested it and the file name is prefixed with "exercise_".

  • ๐Ÿงช Each file has its own unit test file with the same name postfixed with "_test" as per the Dart convention.

  • ๐Ÿ“Š The test coverage for the whole repository is 100% and should always be 100%.

  • ๐Ÿ”ข Each algorithm has at least two test cases, and always has the same test cases used in the videos.

  • ๐Ÿšง Each video has its own code separated from the other videos, so that if two algorithms shares some code, it is duplicated in both files to keep them isolated from each other (for example, graph traversal algorithms and merge sort algorithm).

๐Ÿ•น How to Try?

You can play around with all the code in the repository by using it in playground.dart file located under the bin/ folder ๐ŸŽฎ

You can also write tests for your code in the playground_test.dart file located under the test/ folder ๐Ÿ”ฌ

๐Ÿงช Code Testing

The code in the repository has more than 50 unit tests with test coverage of 100% and should always be 100%.

All the tests are located under the test/ folder and they are all written with AAA (Arrange, Act, Assert) pattern to make them more readable, maintainable, and easier to understand, to learn more about AAA pattern, visit this article ๐Ÿ“

Running Tests

To run all the tests, run the following command:

dart test

To run a specific test file, run the following command:

dart test test/<test_file_name>.dart

To run the tests with coverage report, run the following command (Must have Flutter SDK installed):

flutter test --coverage

Coverage Report

The coverage report for this repository is uploaded automatically to Codecov by Sentry after each commit to the main branch to be analyzed, archived, and hosted for everyone to check along with more powerful features ๐Ÿ’ช๐Ÿป

The latest coverage report can be found here, and the following graph shows the latest coverage report for the repository ๐Ÿ“Š

๐Ÿ’™ About Dart

Simply, Dart is a client-optimized language for fast apps on any platform โšก

It is a programming language that was developed by Google in 2011. It is designed to be expressive, concise, and scalable for web, mobile, and desktop applications. Dart can be compiled to native code, JavaScript, or run on a virtual machine ๐Ÿ’™

Dart is closely related to Flutter, which is a framework for building cross-platform user interfaces with Dart. Flutter allows developers to create beautiful and responsive apps that run on iOS, Android, Windows, Linux, and the web with a single codebase ๐Ÿ“ฑ๐Ÿ’ป

Dart has many features that make it a powerful and productive language for modern app development. Some of these features are ๐Ÿ’ช๐Ÿป:

  • Strong typing with type inference and null safety
  • Support for both object-oriented and functional programming paradigms
  • Asynchronous programming with futures, streams, and async/await
  • Generics, mixins, extension methods, and metadata
  • Native interoperability with C and JavaScript
  • Hot reload and hot restart for fast development cycles
  • A comprehensive set of libraries and packages for common tasks
  • And much more!

To learn more about Dart, visit the official website (dart.dev) โœ…

๐Ÿ’ช๐Ÿป Contribution Guide

If you come across a bug or have an idea for a new feature, please let me know by creating an Issue ๐Ÿ›๐Ÿ’ก

If you've already fixed a bug or implemented a feature, feel free to submit a Pull Request ๐Ÿš€

Having questions, ideas, or feedback? Don't worry, simply open a Discussion ๐Ÿ”Š

Find this project useful? Don't forget to show some love by giving a Star โญ

I would be happy to have your contributions ๐Ÿ’™

Made with contrib.rocks.

About

A non-official Dart Implementation with 100% test coverage for "Algorithms Analysis and Design from scratch" course provided by "Cloud Native Base Camp" platform and instructed by "Eng. Ahmed Metwally" ๐Ÿ’™

Topics

Resources

License

Stars

Watchers

Forks

Languages