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 โ
-
๐ All the implementation files are located under the
lib/
folder and the test files are located under thetest/
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).
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 ๐ฌ
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 ๐
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
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 ๐
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) โ
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.