-
Notifications
You must be signed in to change notification settings - Fork 259
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #738 from DockYard-Academy/welcome
Create a welcome lesson that new students will work through to learn …
- Loading branch information
Showing
5 changed files
with
178 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,166 @@ | ||
# Start Here | ||
|
||
```elixir | ||
Mix.install([ | ||
{:jason, "~> 1.4"}, | ||
{:kino, "~> 0.8.0", override: true}, | ||
{:youtube, github: "brooklinjazz/youtube"}, | ||
{:hidden_cell, github: "brooklinjazz/hidden_cell"} | ||
]) | ||
``` | ||
|
||
## Navigation | ||
|
||
[Return Home](../start.livemd)<span style="padding: 0 30px"></span> | ||
[Report An Issue](https://github.com/DockYard-Academy/beta_curriculum/issues/new?assignees=&labels=&template=issue.md&title=) | ||
|
||
## Setup | ||
|
||
Ensure you type the `ea` keyboard shortcut to evaluate all Elixir cells before starting. Alternatively you can evaluate the Elixir cells as you read. | ||
|
||
## Welcome | ||
|
||
Welcome to DockYard Academy. We are proud to offer a fully open-source Elixir curriculum that anyone can access for free. We use this curriculum for our (paid) academy. | ||
|
||
If you would like to be considered for a future cohort, you can signup for our [Newsletter](https://academy.dockyard.com/) to receive updates. | ||
|
||
## The DockYard Academy Way | ||
|
||
At DockYard Academy, our mission is to provide high-quality training in Elixir. We strive to empower our students with the skills and knowledge they need to become professional web developers, equipped with the ability to build robust and scalable web applications using the powerful Elixir programming language and its associated frameworks. | ||
|
||
We believe in providing a hands-on, practical learning experience and dedicate ourselves to preparing our students for the real-world challenges of building web applications. We foster a community of learners who are passionate about web development and who continue to learn and grow throughout their careers. | ||
|
||
## Academy Core Values | ||
|
||
* **Practicality**: We value hands-on learning experiences directly relevant to the real-world challenges of building web applications with Elixir. Instructors will provide a broader context to the material and share relevant experiences in the industry. | ||
* **Engagement**: Classes focus on active, engaged learning rather than passive lectures. Students will be front and center as they learn through building projects, group discussions, and collaborative problem solving. | ||
* **Collaboration and Community**: DockYard Academy fosters a supportive community of learners who can learn from each other and work together to achieve their goals. We believe in the importance of teamwork and strive to provide opportunities for our students to work together and learn from each other's experiences. All community members treat each other with kindness, respect, and care. | ||
* **Excellence**: We strive to provide our students with the highest quality education and training and hold ourselves to the highest standards of excellence in everything we do. | ||
* **Humility**: We encourage our students to approach their learning journey with an open mind, being open to learning from their mistakes and their peers. Students are encouraged to feel comfortable expressing confusion and lack of understanding at all times. Saying “I don’t know” is always acceptable, especially when followed by a supportive and collaborative effort to learn and understand. Instructors and mentors will also embrace humility to create a positive and inclusive learning environment where students feel comfortable participating, learning, and providing open feedback. | ||
* **Student Driven**: Students drive the pace of the class. Instructors and students work together to ensure core learning outcomes are achieved by every student while simultaneously offering high-achieving students additional opportunities to go beyond the material. | ||
|
||
## Learning Outcomes | ||
|
||
DockYard Academy aims to provide students with practical, hands-on training to prepare them with the skills to find Elixir employment or start their own Elixir efforts. Graduating students should be able to demonstrate the following outcomes: | ||
|
||
1. Understand Elixir fundamentals to solve practical programming problems. | ||
2. Build Mix projects and manage configuration, dependencies, and tests. | ||
3. Understand the principles of OTP and how to build fault-tolerant concurrent systems. | ||
4. Use advanced Elixir syntax to write more expressive and efficient code. | ||
5. Build full-stack web applications with Phoenix, including routing, controllers, views, and templates. | ||
6. Manage Relational Databases with Ecto to model real-world data. | ||
7. Use LiveView to build interactive, real-time web apps with minimal JavaScript. | ||
8. Understand the best practices for developing robust and maintainable web applications with Elixir. | ||
9. Troubleshoot and solve problems that arise while building web applications and Elixir programs. | ||
10. Be able to find the resources needed to continue their learning journey after the course. | ||
|
||
## Lecture Schedule and Format | ||
|
||
For the full-time course, classes run Monday to Friday from 9:30 am to 3:00 pm (Pacific Time). Students will have a one-hour lunch break from noon to 1:00 pm (Pacific Time). | ||
|
||
## Meet Your Instructor | ||
|
||
Hello, I'm Brooklin Myers, I'm the instructor at DockYard Academy and the content creator behind the lessons and exercises in this course. I'm also the host of the Elixir Newbie podcast and write about Elixir on the Elixir Newbie website. Since entering Elixir, I've focused on helping new developers, and DockYard Academy has been a perfect opportunity to continue that mission. | ||
|
||
As a bootcamp graduate, I empathize with the struggle to enter the programming industry without a computer science background. With that in mind, I aspire to make technical concepts approachable for beginners. In addition, having transitioned to Elixir from JavaScript, I tailor lessons to help students from an object-oriented background transition to functional programming. | ||
|
||
In my classes, I aspire to create a low-stress environment for a high-stress activity. Learning can be difficult, but it's easier when you have a supportive group of mentors and peers surrounding you. I look forward to being your teacher. | ||
|
||
## Taking the Course | ||
|
||
Currently, there are two ways to take this course. | ||
|
||
1. **Self-Led (free)**: Anyone can work through this course and complete it at their own pace. | ||
2. **Academy Student (paid)**: Students can join our official academy cohort to learn with an instructor, receive a certificate upon graduation, and get career support after graduation. Paid students also get access to class recordings and the DockYard Academy Discord, where they can receive support from their peers and mentors. | ||
|
||
If you are interested in joining our next cohort, you can sign up for our [Newsletter](https://academy.dockyard.com/) or email [email protected] to express your interest. | ||
|
||
This curriculum was designed and developed as an instructor-led course. However, a beginner should be able to go through the concepts self-led and at their own pace. We've done our absolute best to make this material approachable, and completely self-contained. | ||
|
||
That said, learning on your own can be challenging. To increase your chances of success, we recommend finding a mentor or a study group with other self-led students. | ||
|
||
## Solutions Branch | ||
|
||
We recommend you create a solutions branch to avoid making any commits on your `main` branch. This way, your `main` branch is clean if you want to contribute to DockYard Academy. | ||
|
||
Instructions are included in the [Student Setup Guide](https://github.com/DockYard-Academy/curriculum/wiki/Student-Setup-Guide). | ||
|
||
If you are unfamiliar with Git and GitHub, consider reading the [Lesson on Git](git.livemd) for an overview. | ||
|
||
## Troubleshooting and Support | ||
|
||
It's common to find yourself blocked and needing help when learning new concepts. This can be especially challenging for a self-led learner. If you need support or encounter any issues with a lesson, there is a [Report An Issue](https://github.com/DockYard-Academy/beta_curriculum/issues/new?assignees=&labels=&template=issue.md&title=) button you can use to get support. | ||
|
||
In addition, students in a DockYard Academy cohort (paid) get direct access to a community of peers and mentors on the DockYard Academy Discord. Post on the `#questions-and-answers` channel whenever you need support. | ||
|
||
## Post Lesson Breakdown | ||
|
||
There is a **Commit Your Progress** and a **Mark as Completed** section at the end of every lesson. We use these steps for tracking progress and receiving feedback from the instructors. These sections are primarily for active students rather than self-led learners. | ||
|
||
However, self-led students can complete these sections if they want to track their progress and get more practice using GitHub. We ask that you don't create pull requests to the DockYard Academy repo, as this spams our PR tracker. If you are not an academy student, we also ask that you refrain from @mentioning the instructor as this spams our notifications, and 1-1 feedback is only available to academy students. | ||
|
||
## Mark As Completed | ||
|
||
<!-- livebook:{"attrs":{"source":"file_name = Path.basename(Regex.replace(~r/#.+/, __ENV__.file, \"\"), \".livemd\")\n\nsave_name =\n case Path.basename(__DIR__) do\n \"reading\" -> \"start_here_reading\"\n \"exercises\" -> \"start_here_exercise\"\n end\n\nprogress_path = __DIR__ <> \"/../progress.json\"\nexisting_progress = File.read!(progress_path) |> Jason.decode!()\n\ndefault = Map.get(existing_progress, save_name, false)\n\nform =\n Kino.Control.form(\n [\n completed: input = Kino.Input.checkbox(\"Mark As Completed\", default: default)\n ],\n report_changes: true\n )\n\nTask.async(fn ->\n for %{data: %{completed: completed}} <- Kino.Control.stream(form) do\n File.write!(\n progress_path,\n Jason.encode!(Map.put(existing_progress, save_name, completed), pretty: true)\n )\n end\nend)\n\nform","title":"Track Your Progress"},"chunks":null,"kind":"Elixir.HiddenCell","livebook_object":"smart_cell"} --> | ||
|
||
```elixir | ||
file_name = Path.basename(Regex.replace(~r/#.+/, __ENV__.file, ""), ".livemd") | ||
|
||
save_name = | ||
case Path.basename(__DIR__) do | ||
"reading" -> "start_here_reading" | ||
"exercises" -> "start_here_exercise" | ||
end | ||
|
||
progress_path = __DIR__ <> "/../progress.json" | ||
existing_progress = File.read!(progress_path) |> Jason.decode!() | ||
|
||
default = Map.get(existing_progress, save_name, false) | ||
|
||
form = | ||
Kino.Control.form( | ||
[ | ||
completed: input = Kino.Input.checkbox("Mark As Completed", default: default) | ||
], | ||
report_changes: true | ||
) | ||
|
||
Task.async(fn -> | ||
for %{data: %{completed: completed}} <- Kino.Control.stream(form) do | ||
File.write!( | ||
progress_path, | ||
Jason.encode!(Map.put(existing_progress, save_name, completed), pretty: true) | ||
) | ||
end | ||
end) | ||
|
||
form | ||
``` | ||
|
||
## Commit Your Progress | ||
|
||
Run the following in your command line from the curriculum folder to track and save your progress in a Git commit. | ||
Ensure that you do not already have undesired or unrelated changes by running `git status` or by checking the source control tab in Visual Studio Code. | ||
|
||
``` | ||
$ git checkout -b start-here-reading | ||
$ git add . | ||
$ git commit -m "finish start here reading" | ||
$ git push origin start-here-reading | ||
``` | ||
|
||
Create a pull request from your `start-here-reading` branch to your `solutions` branch. | ||
Please do not create a pull request to the DockYard Academy repository as this will spam our PR tracker. | ||
|
||
**DockYard Academy Students Only:** | ||
|
||
Notify your teacher by including `@BrooklinJazz` in your PR description to get feedback. | ||
You (or your teacher) may merge your PR into your solutions branch after review. | ||
|
||
If you are interested in joining the next academy cohort, [sign up here](https://academy.dockyard.com/) to receive more news when it is available. | ||
|
||
## Up Next | ||
|
||
| Previous | Next | | ||
| -------- | ---------------------------------------------: | | ||
| - | [Command Line](../reading/command_line.livemd) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters