-
-
Notifications
You must be signed in to change notification settings - Fork 210
Curriculum Outline #8
Comments
Challenges/Lessons posted on previous thread |
In the root directory of the project there will exist a directory: challenges. For example: Each lesson directory will contain four files:
lesson_code.py will be loaded into the initial-code section (top left container) of the classroom. lesson_tests.py will be loaded into a hidden unittest file (behind the scenes). lesson.md will be loaded into the markdown section (bottom right container) of the classroom. lesson_settings.json will be used to store information such as Title, Chapter, Lesson number, ID(?). This will mainly be for FCC, but repl will be able to utilize the Title property and maybe the ID property. *Special Note - the challenges.json file will be used to track user progress via localStorage. May be worth writing a py script to build this automatically based on the challenges directory using the lesson_settings.json file inside each lesson directory. [Down the road feature?] |
@bgroveben @QuincyLarson @ginoskotheon Can I get some feedback on the previous comment before I send it to Amjad? |
This looks good! One question: how do you see the Chapter mapping on the Repl.it's taxonomy? Would it be the Classroom? Alternatively, it doesn't have to map to anything and we just prefix the assignment name with the chapter. |
@amasad I don't think it needs to map to anything on Repl.it's taxonomy (unless you plan on implementing chapters into classrooms in the future 😉). For the moment it'll just keep things more organized on our end. |
Yeah we might add chapters, some users asked for it, but for now we'll just leave it out. Are you ok with having the titles (directory names) have spaces and special characters? I'm fine with it, it just might make it harder for the authors. Some other thoughts:
|
Yes! I like this layout a lot. What would we do if the name is multiple words? i.e.
Would you like me to add a |
I think underscores for spaces might work best. |
sounds good to me. I'll start implementing this structure tomorrow 👍 |
@Ethan-Arrowood @amasad I like the layout and the naming conventions -- looks good! |
@Ethan-Arrowood We may want to update the gulpfile to watch for changes to the *.py, *.json, and *.md files we're writing for the lessons. |
Okay challenge directory has been pushed to master. Lets start writing challenges directly in the appropriate directories. Also, feel free to reorganize things as you see best fit I just pre filled it so there was some sort of structure present. |
@Ethan-Arrowood Looks great. I'll start trying to get some challenges going. |
Outstanding @Ethan-Arrowood ! I have written some of the lessons included in your challenges directory (as well as a few others); you can preview them in this Repl.it Classroom. I just need to make sure that the file and directory structure is consistent, update the tests, and see that everything works. Great job and thanks again! |
@bgroveben thank you 😄 when you're able to move your challenges over make a pr against master and I'll merge it 👍 |
@Ethan-Arrowood you got it. |
@bgroveben your course looks awesome! I hope the authoring experience on Repl.it was good. (I don't want to take this thread on a tangent but if you have any feedback for us we're at contact@repl.it). |
Hey all, meet @vpavlenko he's an engineer at Repl.it and will be working on implementing this Repl.it Classroom / Github integration. |
Hey guys, I'm going to implement everything necessary inside Repl.it. @bgroveben It would be super helpful if you could upload any single challenge to this repo soon, so I could have a real example as a reference. Happy to work with you all :) |
@vpavlenko I'll be able to get one or two up if @bgroveben is busy. |
Greetings @amasad @Ethan-Arrowood @vpavlenko ! Thank you for the kudos on the lessons I've made so far. I just have to fix a few more of the tests, and I'll be ready to submit a PR for the beginner/math challenges this morning. Please contact me if there is anything else I can do for you. |
I just submitted a PR for 14 beginner/math challenges that can be found in Chapter 4.1 through 4.E (I ran out of base ten digits, so I moved up to hexadecimal). Please feel free to review, revise, and so forth. I'm going to be working on a PR for beginner/operators next. Cheers! |
@amasad @vpavlenko Many Thanks and Cheers to you and the rest of the folks at Repl.it for helping us out with this project! You are all extra-special awe-sum. BTW I really like the new Classrooms you have been working on. I'm still learning my way around, but if I have any suggestions I'll contact you. Great Job! |
@bgroveben great work on the challenges. I went ahead and merged them in. For future PR's try to ref at least 1 issue just so we can track commits. We will have to be more strict about that in the future once we 'go live'. Next step: auto building the |
@bgroveben Thanks a lot for the PR. I wonder if you're going to store model solutions in the repo or somewhere else as well? |
@vpavlenko I don't think we are currently planning on providing model solutions; however, that may be a useful feature so if you can set it up, we will probably be able to use it down the road. |
@Ethan-Arrowood I'm asking because in @bgroveben 's Repl.it classroom every assignment already has a model solution added. However, I don't see it in the PR #17 . Another question: what is gonna be the source of truth for Assignment ID - the ID in lesson_settings.json or the directory name in the repo? Consider the following scenario: you pushed changes to assignment statement and you want to update your existing classroom backed by Github Repo based on the newest repo version. Then we need to understand which assignment from the repo belongs to which assignment in the Repl.it classroom. |
@vpavlenko I do not know whats going to power the Assignment ID. I was thinking about just using the chapter and lesson title something like: For the Will this be sufficient? Or do we need to implement something different? |
@vpavlenko just spoke to Quincy about the ID stuff. I'm going to use MongoDB objectid() method to generate ids. Will have to be done manually for each new challenge. |
Hey 👋 @Ethan-Arrowood @bgroveben, as @vpavlenko said I'll be taking over Repl.it's github classrooms from here on out. I'll keep you guys posted with our progress. Also, what is FCC's username on Repl.it, that way I can give you guys early access. |
Greetings @Ethan-Arrowood , I'm ready to begin putting all of the lessons for the beginner/operators lessons up. |
@bgroveben go ahead and edit the chapter array in Welcome @turbio! Glad to have you on board. I'll reach out to @QuincyLarson for FCC's Repl.it username and get back to you asap 👍 |
@vladdoster & @bgroveben - just realized you guys are both working on the same challenges. Take a minute to review each others work. I'd recommend one of you opening a PR and discussing changes in that and editing your code accordingly. Let me know if you need any help! |
@turbio team@freecodecamp.com for the email address - username is probably freecodecamp 👍 |
@bgroveben how's the challenges coming along? Do you need any help? |
@Ethan-Arrowood my beloved day job has eaten up most of my free time over the past few days, but I'll have a chance to update the chapter array and submit a PR for the operators challenges on (hopefully) Wednesday or (more likely) Thursday. Good looking out and thanks for offering your assistance! |
Great job @bgroveben 👏 |
I'm working on Chapter 2 now (Data Types) @turbio how is it going over on Repl.It? Anything more you need from us? |
@Ethan-Arrowood Everything's going smoothly on the Repl.It front, we'll hopefully have something you can try out by next week. |
@Ethan-Arrowood hey there! I can probably try to take up the machine learning parts of this. I'm trying to put together some notes on machine learning and I think using Python would be a great way to interact with those concepts. I haven't read through this whole thread yet, so if you already have plans for the machine learning part, my apologies. I'll try to take a look at the thread and the rest of the project later today. |
@erictleung yes go for it! Not much (if any) of the advanced lessons have been started yet. Thank you! |
@erictleung we support a lot of pypi module (including numpy and scipy) on Repl.it. But let me know if there is something you need that we don't support. |
@Ethan-Arrowood Hey, we're almost done building Repl.it's github integration. A few notes about unit tests:
Let me know what you think. I'll make github classrooms available to free code camp later today and then throw in unit tests once we've got the format figured out. |
@amasad thanks for the quick response! I didn't know Repl.it had package support. Very awesome 👍 The module I had in mind was scikit-learn. It is searchable in the module list, but it fails to load properly. I suspect it has something to do with the dash in the module name. If I should report this somewhere else, let me know. I've checked that numpy works, so for now, I can use that. |
@erictleung we haven't figured out how to best solve this problem because some module names are not the same as the import name. For scikit-learn it's
|
@turbio I'm pretty burnt out today but I'll make sure to review everything and work with you tomorrow. Thanks for all the hard work! |
@amasad awesome! Thanks for the clarification and insight. I'll let you know if I come across anything else while writing up the code. |
For reference, repl.it information on GitHub Backed Classrooms. |
Here are my thoughts on resources to use for creating the curriculum: I agree with the other's idea that Python should focus on the data science side. We can get more bang for our buck if we learn a new language and new skill set instead of using Python for web development. Learning web development in JS and then learning Python for data science provides enough overlap so that a dev can pick up python for web development. I have some experience trying to teach people python in a decentralized way, having done so at Fordham university and at coffeeshops via the Meetup I organize: https://www.meetup.com/NYHAIS/ I use a combination of hacker rank and code academy. Having people start out with codecademy then jump on Hacker Rank's Python track helps a lot. We can use those two sites for inspiration on how to design our intro to python curriculum. For reference book, I point people to No Starch Press's Crash Course Python and Allen B. Downey's first book Think Python. We can see what is covered there and in what order and design tasks around that. Lots of our work can also be aided by the work of Allen B. Downey of Olin College who has created a magnificent set of books on learning Python, Data Structures and Algorithms and Stats via Python. Check out his books on: http://greenteapress.com/wp/ For how to build this, we can look to this website for inspiration: We can also see how they use this thing called ok8: Python is a great language to pick up data structures and algorithms. This is asked for a lot during technical interviews and having a section on that can help enormously. For this we can look to Hacker Rank's Data Structures and its Algorithms track for inspiration on the types of challenge we can place in that section. We can also look at UC San Diego's data structures and Algorithms micro masters for inspiration on how to explain things. There is also interactive pythons free online course on the subject: http://interactivepython.org/runestone/static/pythonds/index.html For the data science aspect we can look to Datacamp (an amazing resource), Dataquest, and the data science micro masters on edx. We can also use this free book on introduction to data science. The data science aspect can encompass learning the math and tools behind data science. Then once that is out of the way we can focus on the machine learning aspect with tensorflow and keras. The trick is to introduce the probability, statistics and math aspects of data science gradually. So effectively we would be teaching these subject through python after learning the basics of the language. For this, we can look to UC San Deigo's course "Statistics and Probability in Data Science using Python" on edX for inspiration. Any math concepts that need more explanation can be linked to a khan academy video if needed. We can also look at Think Stats and Think Bayes by Allen B. Downey. Along the way we can use introduce the various packages in Python that help us do statistical analysis. There is sympy for creating "Symbolic computation deals with the computation of mathematical objects symbolically". There are also other tools used by data scientists NumPy, SciPy, Pandas. Another great source I found for data science is Chris Albon's site. The dude is next level. Also this website and the links (and links of links) offer lots of good resources: Any Thoughts? |
These are some great ideas and resources. I will have to give them a more in-depth read over next few days, but here is what I have to say off the bat. I think the data science track is a great idea as plays to Pythons strengths and would allow people to easily search StackOverflow for help if they ran across a problem. I think a good middle ground would for us to set a threshold for introducing probability and statistics into the exercises. At this point, users should know basics (functions/variables/conditional logic) and how to import modules. I think we could possibly create a survey to get some ideas of what people need/want to learn in prob and stat as a way to avoid trying to teach irrelevant things (I'm looking at you Ludic Fallacy). Have we decided on Jupyter Notebooks as a medium for curriculum? I think this would be a great way for both us as programmers to reason about design choices(easier than rolling our own) and for users that get the robustness of notebooks. |
Using Jupyter notebooks can allow for fast iteration. We can modifying it to imports of custom libraries like Pandas, etc. The Ace editor would need some configuration. Repl.it looks ok, but the classroom UI isn’t pretty. I will start to work on intro curriculum based around Python 3 this week. It will be small simple examples that can be solved in 2 minutes of less, similar to Codecademy. It should introduce concepts slow and steadily while not assuming any prior knowledge. |
Any updates to this? I too could start on some basic exercises and we could see what we come up with and maybe merge our solutions. |
@tesla809 @vladdoster thanks for your interests in contributing to the Python curriculum! @tesla809 I do believe that repl.it does have unit testing built in. What kind of unit tests were you thinking of? The unit tests I'm aware of is that you can build and use unit tests to test out the code users write. Great resources you've linked above, btw 👍 |
Curriculum Outline
In the root directory of the project there will exist a directory: challenges, and a file called classroom_settings.json
The challenges directory will contain each lesson directory title like so:
[C#].[L#].<name>
i.e.2.1.Addition
(means the Addition lesson is Lesson 1 of Chapter 2).Due note that chapter and lesson numbers is for our organization purposes and will not be reflected in the Repl.it Classroom.
Each lesson directory will contain four files:
lesson_code.py will be loaded into the initial-code section (top left container) of the classroom.
lesson_tests.py will be loaded into a hidden unittest file (behind the scenes).
lesson.md will be loaded into the markdown section (bottom right container) of the classroom.
lesson_settings.json will be used to store information such as Title, Chapter, Lesson number, ID(?). This will mainly be for FCC, but repl will be able to utilize the Title property and maybe the ID property.
Each Repl.it Classroom lesson url will be added to the challenges.json file in the project root directory.
[Down The Road] - implement a python script that auto builds the challenges.json file
The current structure for the FCC Python Curriculum is: Beginner Section, Intermediate Section, & Special Topic Section.
Beginner Section:
Intermediate Section:
Special Topic Section:
The text was updated successfully, but these errors were encountered: