# curriculum **Repository Path**: markhoo/curriculum ## Basic Information - **Project Name**: curriculum - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-02-03 - **Last Updated**: 2025-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DockYard Academy The DockYard Academy curriculum is an open source Elixir curriculum built with Livebook. We're proud to offer our open-source curriculum free of charge for anyone to learn from at their own pace. This curriculum is designed for our paid full time course, which is currently on hiatus. ## Prerequisites * Install [Elixir](https://elixir-lang.org/install.html) * Install [Livebook](https://github.com/livebook-dev/livebook) * Install [Postgres](https://www.postgresql.org/download/) (optional to get started) * Install [Phoenix](https://hexdocs.pm/phoenix/installation.html) (optional to get started) * Setup [WSL with Visual Studio Code](https://code.visualstudio.com/docs/remote/wsl) (Windows Users Only) * Optionally Install [asdf](https://asdf-vm.com/guide/getting-started.html) to manage Elixir and Erlang versions. We recommend the [Visual Studio Code](https://code.visualstudio.com/) editor for ease of collaboration with LiveShare. However, you may use any code editor you prefer. ## Getting Started Download and extract the [Latest Release](https://github.com/DockYard-Academy/curriculum/releases) source code zip file. Open the extracted `curriculum` folder in Livebook and open the `start.livemd` file to see all project lessons and exercises. Optionally [Create a GitHub Repository](https://github.com/new) and follow the instructions on GitHub to manage your downloaded `curriculum` with Git and GitHub. See the [Troubleshooting Guide](https://github.com/DockYard-Academy/curriculum/wiki/Troubleshooting) if you encounter issues setting up the curriculum. ## Course Outcome Our program is designed to produce highly qualified Elixir developers. Upon completion, students will possess a thorough understanding of Elixir fundamentals, project development using Elixir and Phoenix, LiveView, and OTP. They will have the expertise and problem-solving skills necessary to tackle complex coding challenges and continue to grow and excel in their careers. Graduates will be well-equipped to deliver idiomatic and well-tested features to production codebases. ## Curriculum Outline See [start.livemd](https://github.com/DockYard-Academy/curriculum/blob/main/start.livemd) for a full breakdown of our lessons and exercises. ## Elixir Fundamentals * Prerequisites * Course Tools * Basics * Data Structures And Intro To Pattern Matching * Control Flow And Abstraction * Modules And Structs * Enumeration * Built-in Modules * Comprehensions And Non-Enumerable Data Types * Reduce * Dates And Time * String Manipulation * Recursion ## Mix Projects * Elixir Build Tooling * Testing With ExUnit * Documentation And Static Analysis * Executables ## Advanced Syntax * Advanced Pattern Matching * Guarding * Protocols * Persistence Using The File System ## OTP * Processes * GenServers * Testing GenServers * Supervisor Basics And Fault Tolerance * Concurrency With Tasks ## Phoenix * HTML And CSS * APIs * Relational Databases * Phoenix * Group Project Blog * Phoenix And Ecto * Testing Phoenix * Phoenix Forms And Components * Phoenix And Ecto One-to-Many Associations * Phoenix Authentication * Phoenix And Ecto Many-to-Many Relationships * Phoenix And Ecto One-to-One Relationships * Tailwind * Deployment * Custom Feature * Group Project Presentation ## Capstone Project Preparation * Capstone Project ## LiveView * LiveView * LiveView And Ecto * LiveView Authentication * LiveView Image Uploads * PubSub * LiveView JS Interoperability And Pagination * Scheduling And Emailing With Swoosh And Oban ## Bonus Topics * Performance Optimization * Benchmarking And Performance * Ecto Changesets * State Management With Agents And ETS * Metaprogramming * Queues * Worker Pools * Rubix Cube Project