-
-
Notifications
You must be signed in to change notification settings - Fork 195
DOC: Template/checklist for uniform NumPy tutorial style #11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Check out this pull request on Review Jupyter notebook visual diffs & provide feedback on notebooks. Powered by ReviewNB |
Say "second-degree" polynomials sted "second-order" in "What to say in 'What you'll learn."
Hi @bjnath, I had some ideas for the tutorial (how-to) format as well. I was laying out some ideas as a technical/scientific document. What do you think about these: Learn to write a Numpy tutorial # Title:Give a descriptive title that tells readers what to expect e.g. How to solve a linear set of equations in Numpy Who is the audience:Tell the reader who you expect to be reading the how-to e.g. This is meant for engineers and scientists that want to use Numpy to solve a set of What is the problem:Define the vocabulary, background information, and the specific problem you're solving e.g. Linear equations are typically straigthforward to define in engineering and What you'll do:Give a brief overview of the approach you are documenting e.g. You'll use numpy arrays and the numpy.linalg functions to solve a set of linear What you'll learn:Give a brief overview of what skills will be taught or strengthened e.g. You'll learn to set up linear equations, define them as arrays, and get a solution
|
This has many good ideas! Your teaching experience shows. A question we haven't tackled is whether these student contributions are tutorials or how-tos. This isn't a pedantic distinction. Their goals diverge enough to require separate styles. My understanding is that these are tutorials -- they're guided tours with explanations.
|
Rereading your comments, I realized I misunderstood why the proposed structure reflected an academic paper -- you want students to be prepared to write in that style. I apologize for missing this and have no wish to interfere. Documentation writing is a valuable skill as well. But I think it's fine if students write to an academic-paper goal and we edit the content into more of a documentation style. |
Hi @bjnath, thanks for reviewing the suggestions!
I agree that these should be fit into tutorials or how-to's. I lean towards a more how-to-style because the pedagogical bar is a little lower. The writer can detail steps to achieve a goal for other people that may be familiar with Python or Numpy or other pieces of the guide without having to build small steps for new users to get comfortable.
If these are tutorials, then they should definitely be reframed. Maybe even "Learning linear algebra solutions in Numpy" or "The basics of linear solutions in Numpy"
This section (I think these could be more of a check-box response e.g.
This would be very important to help us organize the tutorials (beginner/intermediate/advanced) and it would help the writer explain to a target audience during writing.
Makes sense to me, thanks.
Maybe we could combine headings and have a list of questions that should be answered in each one: IntroductionWho is this for, what is the problem, what will you do MethodsWhat you'll need, What will you learn, what will you use ResultsList detailed steps of solution with brief explanations DiscussionConclusion
The discussion (in my mind) should answer the questions posed. So, for the linear equation example. We have For a circuit, we may be solving for the voltage drop across a set of resistors. So the units would be ohms and maybe we care about the total voltage drop from x[-1] to x[0] so deltaV = x[-1]-x[0] ohms.
I like that. It should definitely be in the Methods area of the document
I like the conclusion (even if its just a sentence) to wrap up the long document and bring the reader back to where they started: see problem -> build plan -> get solution -> return to beginning with new knowledge Sometimes I just read an intro-conc on documents to see if the problem and applications are really what I'm looking for.
Thanks! Missed that typo. |
Hi @bjnath, I do want students to practice writing, but I think they would still get a lot out of writing documentation-style documents or academic-style. I'm presenting some formats that work for me and that I usually have students follow. It would be great to tweak them if it reaches a broader audience or it becomes more clear. |
Thanks for this good discussion. Some thoughts:
Defining the target audience is essential, I agree, and easy to forget. But rather than using terms like intermediate, let's make it operational: "This assumes basic familiarity with linear algebra" -- the kind of concreteness used in listing course prerequisites. This information then goes in the "What you'll need" section (aka "Prerequisites") along with the physical prerequisites like installed libraries.
I resist opaque labels like "beginner, intermediate, advanced" for several reasons.
All that said, since we do want to organize the pieces easy-to-hard in some approximate ordering, I'm fine with an internal tag to help us know whether a piece is intended for the first, middle, or last third.
Let's calibrate. How would you characterize https://github.com/bjnath/numpy_ipynb/blob/master/tutorial-svd_gh.ipynb -- how-to (How to do singular value decomposition on an image) or tutorial (where SVD is a pretext to experiment with the linalg library)? There's been discussion on the mailing list of how to seed random sequences, with a follow-up on how to seed multiple parallel sequences. The defining how-to question is "I want to know about this, and nothing that's not connected with reaching this goal." A linear equation how-to would be "How to solve a system of linear equations using X technique."
Content written to this title might fall in Procida's |
This is an excellent discussion. I really like how this is shaping up. A few suggestions:
What do you think? Thanks for all your effort and energy! |
Thanks @melissawm and @bjnath,
I agree, the initial merge will be an excellent addition to the repo. It will be great to have the template included. Do you mind if I open a separate issue to discuss "2. Framing possible contributions"? |
Monday's doc meeting is approaching and we can wrap it up there -- @cooperrc, will you be joining? |
I'll be there 👍 |
Not at all! |
@bjnath the only remaining issue I'd like to check before merging is whether you think it would be useful to leave a bullet prompting the writer to think about who the learner is; I've always found it extremely useful when writing educational content. I believe empathy goes a long way to help guide the writer to choose what needs to be explained. I would also add something about the scope/length of the document. For example, the Absolute Beginners Tutorial is very long, and I would hope we got more concise documents with a more contained scope in this repo. |
I agree. It has as much significance as choosing a quadrant.
The tutorial format automatically restricts length: the subject is "Do X", and when X is done so is the tutorial. The reason Absolute Basics is long is that it isn't a tutorial. It has no goal, so it goes on until the writer decides to stop. We've learned a lot about doc structure since the time that was written. |
Also small revisions throughout.
Looks good to me! Maybe @rgommers wants to take a look? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM too. I just read it once, it all makes sense to me. I didn't read all the review comments - seems everyone is happy, but just in case there's still discussion ongoing I'll leave it to @melissawm to merge this.
Jupyter notebook serving as a template and tutorial for writing NumPy tutorials.
In common speech "tutorial" can mean several kinds of introductory material, but here it's meant in the narrow sense of Daniele Procida's guidelines. Thus the notebook is not meant to give general rules for introductory material, only for narrowly defined "tutorial" documentation.