{"id":16692851,"url":"https://github.com/egororachyov/learning-c","last_synced_at":"2026-05-19T08:39:19.224Z","repository":{"id":80166030,"uuid":"532226395","full_name":"EgorOrachyov/learning-c","owner":"EgorOrachyov","description":"A collection of tasks to learn C programming language and practice your skills","archived":false,"fork":false,"pushed_at":"2022-09-04T11:35:55.000Z","size":10,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-29T02:14:17.370Z","etag":null,"topics":["basic-programming","c","c-language","cmake","learn-to-code","learning","learning-by-doing","learning-c","mit-license"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EgorOrachyov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-03T10:26:38.000Z","updated_at":"2024-12-15T02:50:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"258ce81c-3718-485e-af87-d5edfded9a10","html_url":"https://github.com/EgorOrachyov/learning-c","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EgorOrachyov/learning-c","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EgorOrachyov%2Flearning-c","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EgorOrachyov%2Flearning-c/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EgorOrachyov%2Flearning-c/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EgorOrachyov%2Flearning-c/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EgorOrachyov","download_url":"https://codeload.github.com/EgorOrachyov/learning-c/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EgorOrachyov%2Flearning-c/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33208150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T07:54:09.561Z","status":"ssl_error","status_checked_at":"2026-05-19T07:54:08.508Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["basic-programming","c","c-language","cmake","learn-to-code","learning","learning-by-doing","learning-c","mit-license"],"created_at":"2024-10-12T16:28:38.023Z","updated_at":"2026-05-19T08:39:19.191Z","avatar_url":"https://github.com/EgorOrachyov.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Learning C programming language\n\nA collection of tasks to learn C programming language and practice your skills.\n\n## How to use it?\n\n1. **Get**. Download or clone this repo using git to your local machine and init submodules.\n   ```shell\n   git clone https://github.com/EgorOrachyov/learning-c.git\n   cd learning-c\n   ```\n\n2. **Setup**. Import this repository sources as a CMake project inside your favorite IDE or use any code editor.\n\n3. **Build**. Build tutorial examples to validate your development environment.\n   ```shell\n   cmake . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release\n   cmake --build build --target all -j 4\n   ```\n\n4. **Solve**. Start from basic tasks, write missing code in declared interfaces, and make tests working correctly and as\n   it expected from functions description.\n\n5. **Experiment**. Modify code, add new functions, do whatever you want.\n\n## Tasks\n\n| Task name                                 | Description                                                                   |\n|:------------------------------------------|:------------------------------------------------------------------------------|\n| [`1. 📁 strings`](./strings)               | Implement basic string manipulation utilities                                 |\n| [`2. 📁 array`](./array)                   | Implement dynamically-sized heap-allocated array of values                    |\n| [`3. 📁 linked list`](./linked_list)       | Implement dynamically-sized heap-allocated linked list of values              |\n| [`4. 📁 priority queue`](./priority_queue) | Implement heap-based priority queue                                           |\n| [`5. 📁 sorting`](./sorting)               | Implement various sorting algorithms and test their performance               |\n| [`6. 📁 dictionaries`](./dictionaries)     | Implement list and hash-table based dictionaries and test their performance   |\n\n## License\n\n```text\nMIT License\n\nCopyright (c) 2022 Egor Orachyov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegororachyov%2Flearning-c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fegororachyov%2Flearning-c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegororachyov%2Flearning-c/lists"}