Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upAdd pattern matching and otp concurrency homeworks #2341
Conversation
|
So exciting
This repo is pretty hefty thanks to all the markdown. Should we consider repurposing the Homework repo into something to support this? We could have a folder per category, with subfolders matching a lesson name, homeworks and solutions inside? We may also be able to fold some of those examples into these usage. |
That's a valuable insight I haven't considered. Partially agree, but I don't think we are storage-constrained here. We could repurpose the second repo, however I would need more of your input here. After we have that figured out I will happily follow the structure In terms of the actual Jekyll implementation I will experiment with it in the next week, but cannot promise anything |
I know we're not terribly storage constrained but this repository has no Elixir code in it, I don't think we should start. It will be easier to set up CI for Elixir on separate repo. Since this is the main repo, the vast majority of changes people will be forced to pull down won't relate to actual homework.
I'm here to help What do you think @elixirschool/developers? |
| @@ -0,0 +1,23 @@ | |||
| # OTP concurrency / GenServer homework | |||
|
|
|||
SophieDeBenedetto
Jun 30, 2020
Contributor
What do you think about using the tests like a guide, sort of like TDD? In other words, we instruct students to run the tests at the beginning, rather than only if they get stuck. This has the added benefit of giving students the chance to get familiar with running Elixir tests, reading test output and using that output to guide their decisions to get the tests passing.
Something like:
To get started, run the tests by executing elixir otp-concurrency.exs. The instructions below will tell you what you need to do to complete the homework assignment and get the tests passing.
What do you think about using the tests like a guide, sort of like TDD? In other words, we instruct students to run the tests at the beginning, rather than only if they get stuck. This has the added benefit of giving students the chance to get familiar with running Elixir tests, reading test output and using that output to guide their decisions to get the tests passing.
Something like:
To get started, run the tests by executing elixir otp-concurrency.exs. The instructions below will tell you what you need to do to complete the homework assignment and get the tests passing.
doomspork
Jun 30, 2020
Member
@SophieDeBenedetto I think this is great. I can't speak for @wkulikowski but I for one am not 💯 how to work this in in a non-invasive way and without reworking all the lessons to fit it. Do you have any suggestions or example material I could look at for ideas?
@SophieDeBenedetto I think this is great. I can't speak for @wkulikowski but I for one am not
SophieDeBenedetto
Jun 30, 2020
Contributor
@doomspork not totally sure what you're asking here? How to work what in in a non-invasive way?
@doomspork not totally sure what you're asking here? How to work what in in a non-invasive way?
doomspork
Jun 30, 2020
Member
Sorry, the TDD approach you described.
Sorry, the TDD approach you described.
SophieDeBenedetto
Jun 30, 2020
Contributor
Ah got it 👍
I'm not sure why adopting this approach would require re-working existing lessons? I'm thinking of this more as a framing devise for homework assignments specifically.
Ah got it
I'm not sure why adopting this approach would require re-working existing lessons? I'm thinking of this more as a framing devise for homework assignments specifically.
wkulikowski
Jul 1, 2020
Author
Member
Also 💯 for @SophieDeBenedetto I didn't put much thought into wording and assumed that tests = TDD. Will change that
Also
|
@wkulikowski thanks for this awesome contribution! I'm so excited to see homework assignments getting off the ground! Content looks good to me, I only had one small suggestion so far. Regarding where these homework assignment should live though--I would love to see use utilize the existing homework repo for a few reasons:
If that sounds okay to you @wkulikowski and @doomspork we should:
Totally happy to work on any of these action items if they sound good to you guys. Let's finalize our next steps first then @wkulikowski can split up the work any way that works |
| @@ -0,0 +1,47 @@ | |||
| defmodule SimpleQueue do | |||
SophieDeBenedetto
Jun 30, 2020
Contributor
I think this homework assignment is a great start for our beginners. What do you think of also including (and updating if need-be) this old homework assignment on the GenServer topic in which we prompt students to build a "bank" with a GenServer? https://github.com/elixirschool/homework/tree/master/simple_bank
I think it might be a nice "stretch" homework assignment for anyone looking for a challenge.
I think this homework assignment is a great start for our beginners. What do you think of also including (and updating if need-be) this old homework assignment on the GenServer topic in which we prompt students to build a "bank" with a GenServer? https://github.com/elixirschool/homework/tree/master/simple_bank
I think it might be a nice "stretch" homework assignment for anyone looking for a challenge.
|
@SophieDeBenedetto I've updated all of the permissions again, you should have access to do whatever you need on Homework as a part of the developer group. I've added @wkulikowski to the developer group as well |
|
Thanks for the detailed wrap up @SophieDeBenedetto. I don't have much to say as I agree fully with every idea. Summary: Action points:
|
|
@wkulikowski thanks for the sum-up of action items above! I'll work on setting up the existing homework repo to include your new assignments (and re-location of the simple bank assignment) over the weekend |
|
What remains to be done can be seen in this comment here. Looks like next on the list is updating the |
This PR refers to issue #2295 where we considered adding homeworks to the Elixir School.
Here is my proposal:
Homework definition
A homework should consist of:
Integration with Elixir School
Not yet implemented
My opinion here: we should add the markdown file content to the lesson and give clear instructions for cloning the repo and running the code. But this remains open for a while
Implemented homeworks
In this PR I implemented 2 exemplary homeworks. Feel free to play with them and check if they are reasonably close to the lessons contents: pattern matching and OTP concurrency
Next steps
If you like the contents of those lessons we should implement them into frontend (as in Integration with Elixir School section) and produce more homeworks. Once we have a useful coverage (let's say 30% of basic/advanced section) we could release it to the public