Skip to content
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

build a story line to thread through the lesson #463

Open
dhuppenkothen opened this issue Jan 28, 2020 · 17 comments
Open

build a story line to thread through the lesson #463

dhuppenkothen opened this issue Jan 28, 2020 · 17 comments
Labels
help wanted Looking for Contributors type:discussion Discussion or feedback about the lesson type:enhancement Propose enhancement to the lesson

Comments

@dhuppenkothen
Copy link

I've taught this lesson for the first time last week. Thank you so much for the materials. I very much appreciate the care and work that goes into building and maintaining these lessons.

My class was almost entirely programming novices, and one thing I stumbled over as an instructor was motivating many of the concepts I taught in a coherent way. As is, they are kind of presented in isolation as a list of things that exist and that one could do, but many of the examples don't really relate to one another (sometimes we're talking about atom_name, then about pressures, then we're importing GDPs). From my own experiences, I often have trouble relating these concepts to things that would actually be useful in my daily research routine, and I got the impression many of my learners were wondering, for example, why they were learning about lists when they'd already learned about DataFrames. One thing that I've been wondering about is whether there's a way to build a coherent story around a problem or a question that would lead learners through the material, and as the question being asked becomes more complex, that motivates introducing more complex programming concepts.

I'm thinking of something like this: "Yesterday, you read in the newspaper that the per capita GDP of Iceland is 20,381* in 2019, an increase of 2 percentage points over the past year. You're curious how much that is in dollars: fear not, we can use Python to help you calculate the answer." One can move from there to variables (e.g. iceland2019 and iceland2018), and maybe build a story around how this person finds more data points, which they then want to store in lists, and plot, and convert to Euros (where one could introduce loops), and compare with other countries (where DataFrames come in).

Would that be helpful? I'd be very happy to try and work on something like this if the maintainers think this would improve the lesson.

*Note: I just invented that number. :)

@alee alee added the type:enhancement Propose enhancement to the lesson label Jan 29, 2020
@alee alee added the help wanted Looking for Contributors label Feb 7, 2020
@alee
Copy link
Member

alee commented Feb 7, 2020

I think this is a great idea! It's a tall order to create a coherent story across the entire lesson but doing it incrementally with small PRs for each episode should be workable.. other thoughts from the community are welcome!

@swcarpentry/python-novice-gapminder-maintainers

@alee alee added the type:discussion Discussion or feedback about the lesson label Feb 7, 2020
@ageorgou
Copy link

ageorgou commented Mar 2, 2020

I recently taught the second half of this and had the same issue. I changed the examples to be more or less relevant to the data storyline. For example:

  • For lists, I used names of countries or years ("these are the countries/years that we are mostly interested in looking at").
  • Similarly, loops were over countries/continents/years. Accumulation pattern was shown by computing the total GDP/capita of a collection of countries for a certain year, or the minimum GDP/capita for a country over a range of years (in retrospect, the total GDP/capita was not correct mathematically, so this may be trickier to do right!).
  • The functions episode was about turning bits of code from the above analyses into stand-alone functions.
  • For conditionals, examples included doing one thing for continents with "many" countries and another for those with fewer (e.g. warning if there are too few data points to get a reliable result).

I'd be happy to take a pass at some of this, or just share the examples I used.

Would it make more sense to start doing this one bit at a time, as @alee suggested above, or plan it out first?

@alee
Copy link
Member

alee commented Mar 2, 2020

I think a coherent plan / outline would be a great way to start, my incremental suggestion was more for creating separate, small PRs to implement these changes.

@dhuppenkothen
Copy link
Author

@ageorgou I think I could very much use some help for this! :) I'm busy today, but I can sit down tomorrow and start an outline in a shared document that is open to editing? We could iterate there for a bit and then propose an outline here, along with how to break it down into smaller PRs?

@ageorgou
Copy link

ageorgou commented Mar 2, 2020

@dhuppenkothen Happy to help with that!

@vahtras
Copy link
Contributor

vahtras commented Mar 2, 2020

Great idea!

@dhuppenkothen
Copy link
Author

dhuppenkothen commented Mar 6, 2020

All right, I've started a document to start working out a story line and structure here: https://docs.google.com/document/d/1FVuhO6e7oOmzXQao7wHlUnp6jTe6kbaQOL-PWuGWbHI/edit?usp=sharing

Feel free to edit and comment! I'm travelling next week, but after that, I'll try to put some more time and effort into this.

@ageorgou
Copy link

I've had a quick look but haven't been able to make comments yet, sorry. Will do so this week!

@eldobbins
Copy link
Contributor

I think this is a great idea and I'm surprised there have been no PR's issued to support it. Is this idea still under consideration?

(I think many of the other issues in this repo become irrelevant once this is implemented, so it's important to know if these changes are planned)

@dhuppenkothen
Copy link
Author

@eldobbins Last year was a bit chaotic on my end (aside from the obvious, I also moved continents and institutions), which is why there hasn't been any progress from my side. I'd love to jump back into this, though, and will try to make some time for this over the next couple of weeks.

One thing I'm a bit fuzzy on is how to approach this in practice: because this touches on so much of this lesson, I don't know whether we can do this one PR per episode, or do one giant restructuring in one go. If anyone has thoughts or advice, I'd be grateful.

@tobyhodges
Copy link
Member

@dhuppenkothen if and when you have agreement from the Maintainers on the outline you created in the document you linked above, I would recommend a single pull request (PR) per episode, made to a development branch other than gh-pages (e.g. narrative). Once all the episodes have been adjusted and every PR has been merged to that separate branch, the narrative branch can then be merged with gh-pages in one big PR.

This approach has the advantage that it keeps the new versions of each episode separate from the default version of the lesson until they are all ready, rather than episodes changing one-by-one in a way that could make the default version of the lesson disjointed for those teaching it (e.g. when half the lesson has a narrative but the other half doesn't). The advantage of individual PRs per-episode is that the diffs are much easier to review, and you will get more opportunities for feedback from the lesson Maintainers/community as you are going through the process. The disadvantage is that you won't see the new version of the pages being built each time your PRs are merged.

If you think it would be important to be able to see those updates in the online version of the lesson, I would recommend creating a fork and merging your per-episode PRs to the gh-pages branch there, before creating one big PR back to this repository from your fork when you're finished. But for this fork approach to work, you will need to ask the Maintainers of this lesson to review your changes as you're making them on your fork.

That answer got pretty long! I hope it made sense. Happy to provide clarification if needed.

@ageorgou
Copy link

I was also unable to think about this much in the end, but would still like to help. It still makes sense to first revisit @dhuppenkothen's list for individual episodes and elaborate on that, so that there is a more settled plan to discuss?

@eldobbins
Copy link
Contributor

I was going over the Google Doc, and it occurred to me that once you get past a certain point, it really helps to have a specific product you are building towards.

For instance, when I think of Gapminder, the image that appears in by head is https://www.gapminder.org/downloads/updated-gapminder-world-poster-2015/. So I wondered if it was possible to build towards that figure, or even animating it over the years with loops. But I think that is maybe too complex because it is illustrating 3 variables: population, life expectancy, and GDP.

On the other hand, Gapminder also offers this: https://www.gapminder.org/tools/#$chart-type=linechart. Something like that would be much more reasonable and would support the inquiry set-up by the article.

Another thing I think would help is some preprocessing of the datasets by us so that it is easier to produce the plots. For instance, with the current datasets, Episode 9 Plotting requires stripping the string 'gdpPercap_' to get the years. That should have been done by us beforehand so that the episode can concentrate on plotting.

@vinisalazar
Copy link
Contributor

Hi,

I would also like to work on this. Is there a position from the maintainers regarding the Google Document? If there is green light, it would be nice to have a narrative branch in the original repository, and possibly a repository milestone or project. This way, it is possible to track PRs associated with this proposal. I would be glad to start implementing changes as suggested in the document and along this thread.

Best,
V

@alee
Copy link
Member

alee commented Apr 27, 2021

https://github.com/swcarpentry/python-novice-gapminder/tree/narrative has been created - please issue pull requests related to this issue against the narrative branch..

Thanks!

vinisalazar added a commit to vinisalazar/python-novice-gapminder that referenced this issue May 7, 2021
@vinisalazar
Copy link
Contributor

Hi, I started work on this with #549 and I've also added a few comments to the Google Docs.

Best,
Vini

alee pushed a commit that referenced this issue May 8, 2021
  - Switch examples to use country names.
  - Related to #463.
alee pushed a commit that referenced this issue May 8, 2021
  - Switch examples to use country names.
  - Related to #463.
souravsingh pushed a commit that referenced this issue Sep 10, 2021
* bin/lesson_check.py: avoid inconsistent grammar

Pull Request: carpentries/styles#396

* util.py: hot fix for YAML loader

* add data-checker-ignore attributes to links that only work on GitHub

* add data-checker-ignore attributes to footer links

* make title show episode title first

* use ndash as separator

display it only if both `page.title` and `site.title` are defined.

* upgrade to bootstrap 3.4.1

* update coc incident reporting link

* Update PULL_REQUEST_TEMPLATE.md

* Update ISSUE_TEMPLATE.md

* links.md: fix lesson-setup link

* links.md: include base_path.html

* aio.md: multiple improvements

Pull Request: carpentries/styles#406

* change all-in-one file to have the same 'depth' as episode files

* move the core script of aio.md into _includes/aio-script.md

* include comment to inform maintainers to not edit the file

* move aio.md to the root of styles repository

* [fix #408] remove aio from files that need to be initialized

* lesson-check: exclude aio.md, fix read_references

* bump jekyll version to match github pages version

https://pages.github.com/versions/

* Callout (and other) blocks: proper font size, margins

* Use darker purple for code blocks

* Use 1px borders: fix Google Chrome & Edge

See swcarpentry/git-novice#662 (comment)

* specify language based on engine

- fix swcarpentry/r-novice-inflammation#436

* Ignore Jekyll 4's cache

See https://jekyllrb.com/news/2019/08/20/jekyll-4-0-0-released/#cache-all-the-things- & https://github.com/jekyll/jekyll/releases/tag/v4.0.0

It appears during `make site` & `make serve`.

* assets/css/lesson.scss: add proper padding to the top of paragraphs in blockquotes (#425)

* restore lost CSS settings

* Manual ordering of episodes and extras

Co-authored-by: stamper <tbyhdgs@gmail.com>

* [fix carpentries/workshop-template#513] remove site.title outside

lessons

* update survey links

* Switch to Liquid comments

HTML comments end up in the generated HTML pages: they're not displayed by the browsers but they're still present there. Liquid comments do not end up in the generated HTML pages

* bin/boilerplate/README.md: fix typo

carpentries/styles#441

* Use Jekyll to generate the 'all-in-one' page (carpentries/styles#438)

* manual_episode_order.html: fix typo in a comment

* Enable 'Sponsor' button on GitHub repos

* remove Jekyll command markers from comment block

fix carpentries/lesson-example#281

* Forced re-encoding of text to UTF-8, to avoid issues on Windows

* Refactored paths to make use of OS agnostic methods

* Modified shebang to use python, not python3.

* Reverted change of permissiveness on lesson_check

* Cleaned leftover debug code and old implementations.

* Added PYTHON variable to define executable to run python scripts

* Reverted variable names

* Removed shebang lines from Python scripts to avoid cross-OS problems

* Fixes encoding problem on Windows systems, with minimal changes to existing code.

* Silenced output of PYTHON calls

* Makefile: detect Python 3

* util.py: remove empty line

* Undo optimizations to read_all_markdown

These will be submitted in a separate PR

* Remove executable bits from Python scripts

We can't use a single shebang:
* on some platforms `python` may mean Python 2, on others - Python 3
* on some platforms `python3` does not exist at all

Therefore, we're removing the shebangs altogether.

* lesson_initialize: windows compatibility

* lesson_check.py: Windows-compatible regular expression pattern

* repo_check.py: enforce utf-8 encoding

... for compatibility with Windows

* clarify comment on python check block

* Makefile: Windows does not like single quotes

* test_lesson_check.py: skip unnecessary steps

* Makefile: suppress error message on Windows

* fix typo in lesson_initialize.py

* Makefile: suppress another error message on Windows

These '2>/dev/null' are important on Windows because without them
a mere `make` stalls.

* Makefile: handle MS Store's Python 3

* Makefile: fix syntax in conditional

* Makefile: fix two more syntax errors in conditionals

* fix urls in _config.yml

* use bundler to render lessons

* install gems locally

* refactor use of docker

Co-authored-by: Allen Lee <allen.lee@asu.edu>

* add @maxim-belkin suggestions

* add .bundle to .gitignore

* Makefile: Specify shell. Don't include commands.mk

* Makefile: use Python to execute repo_check.py

* Makefile: improve commands target and commands categories (#450)

* Makefile: improve commands target and commands categories

* replace 'files' with 'website'

* Update R install in .travis.yml (#430)

* Update R install in .travis.yml

See https://cran.r-project.org/bin/linux/ubuntu/README.html

* update .travis.yml

* specify YAML loader

Co-authored-by: Daniel McCloy <dan.mccloy@gmail.com>c

* add warning hook + CSS class for Rmd-based lessons (#455)

* Update PyPI link

* Use carpentries/lesson-docker for docker-serve make rule (#461)

* Use renv (#462)

* Improve issue template (#463)

Co-authored-by: Sarah Brown <sarah_m_brown@brown.edu>

* lesson.scss: style tab panels on setup pages (#464)

* Improve pull request template (#465)

* OS stripe color (#468)

* bump ruby version

* Upgrade jQuery to 3.5.1 (#469)

```
cd assets/js
wget https://code.jquery.com/jquery-3.5.1.min.js
wget https://code.jquery.com/jquery-3.5.1.min.map
mv -f jquery-3.5.1.min.js jquery.min.js
mv -f jquery-3.5.1.min.map jquery.min.map
```

Fixes carpentries/styles#460

* assets/js/lesson.js: use .length instead of .size()

.size() was deprecated in jQuery 3.0 in favor of .length attribute.
https://jquery.com/upgrade-guide/3.0/#breaking-change-deprecated-size-removed

Co-Authored-By: Thomas Green <tomgreen66@hotmail.com>

* License is not a copyright. License info ID (#472)

* fix AMY's URL

* Deprecated use of --path when installing bundle (#473)

* add warning blockquote style, carpentries/styles#49 (#475)

* Make links in code tags distinguishable (#478)

* _config.yml: link to Lesson Life Cycle chapter of CDH

To help users of the lesson template understand how to choose/when to update the value of life_cycle

* repo_check.py: allow URLs not ending with .git (#482)

* Makefile: fix comment in front of `lesson-check` (#481)

Comments prepended with `##` appear in the output of `make commands`.
This commit changes `#` to `##` in front of `lesson-check` so that it
appears in the output of `make commands`.

* repo_check.py: match https repositories (#483)

* Makefile: don't use /bin/bash shell (#484)

* [fix carpentries/styles#477] rewrite travis script

* add vendor folder to gitignore and _config.yml

* OS stripe: adjust line height (#490)

* Makefile: fix 'lesson-fixme' target for Windows (#486)

Git for Windows doesn't provide fgrep, which is a shortcut
to call `grep -F` on Mac and Linux. Instead, we have to use
full arguments.

* Fix Python scripts for Windows: UTF-8 encoding (#485)

To avoid problems with various symbols, we have to specify the encoding
when we read files.
The actual codec name is `utf_8` but aliases like `utf8`, `utf-8`, etc
are accepted. Here, I'm using `utf-8` alias.
https://docs.python.org/3.8/library/codecs.html#standard-encodings

This fixes `make lesson-check` when running under 'Git for Windows' for
lessons that have non-cp1252 characters.

* only display Episodes drop-down if we have episodes to show (#491)

* fix variable name

* GitHub Actions: check lesson template (#489)

Co-authored-by: Maxim Belkin <maxim.belkin@gmail.com>
Co-authored-by: François Michonneau <francois.michonneau@gmail.com>

* fix: tighten definitions of highlighter (#496)

* add three more common languages (#497)

* remove unused code highlight classes (#498)

* Sync styles first (#494)

Co-authored-by: Maxim Belkin <maxim.belkin@gmail.com>

* GitHub Actions: website (#488)

* GitHub Actions: better workflow and job names (#500)

* GitHub Action: website.yml: don't run in forks (#501)

* GH Website action: rename + don't use lesson directory (#504)

When 'Website' action tests a lesson, it checks out repositories into the current working directory: 'lesson' directory doesn't exist.
As a result, steps that use "lesson" as the working directory fail.

* lesson.scss: styling for DIVs for embedding Youtube videos (#503)

* update link to discuss mailing list (#507)

* add default repository to install_required_packages() (#509)

* add warning blockquote

* Revert "Merge branch 'gh-pages' of github.com:carpentries/styles into gh-pages"

This reverts commit 2c6b97e, reversing
changes made to 53e9913.

* add warning code block

* update expected reference filename (#508)

* lesson.scss: no borders around unrecognized code (#510)

* bump ruby version (as specified in github-pages v209)

* drop patch version, fix at v1

* removing contractions from CONTRIBUTING (#512)

* add image-with-shadow class

* _config.yml: mention Carpentries Incubator

* Matlab -> MATLAB

* set CRAN url if default is "@cran@"

This will fix #526

* Fix Ruby style

* accept any base filename for Rmd episodes

* run R-based lessons in forks

This is a modification for #501

* add control structure

* 404 page for better learner experience

* lesson.scss: wildcard selectors for code blocks

* Ignore .jekyll-metatada

* Speed up builds of R-based lessons

R-based lessons might take a while to build because packages need to be compiled from source. RStudio Package Manager has compiled versions of packages for ubuntu distros starting with 16.04: https://packagemanager.rstudio.com/client/#/repos/1/overview

I've added the necessary magic in the actions yaml to make it work.

* No need for User Agent string

* permissive checks for pre-alpha lessons

This will fix #533

* bin/lesson_check.py: allow 'language-*' code blocks (#532)

* bin/lesson_check.py: allow 'caution' blockquote

* avoid ansi color characters from being printed

* deploy from "website" action

* deploy R-based lessons without using another action

* also delete _site

* include @zkamvar suggestions

Co-authored-by: Zhian N. Kamvar <zkamvar@gmail.com>

* pin ubuntu version to 20.04 (#540)

Co-authored-by: Zhian N. Kamvar <zkamvar@gmail.com>

* GitHub Actions: cache required R packages (#534)

* add missing parenthesis

* Add incubator option for carpentry field. (#542)

Closes #541

* .editorconfig: don't trim trailing spaces in markdown

* lesson.scss: HTML block

carpentries/styles#519

* add patch to clean gh-pages before committing (#545)

This will address #544

* Fix Kramdown parser crash

... by using GFM (GitHub-flavored Markdown) parser (`kramdown-parser-gfm`)
instead of the default one (`kramdown`).

The default one fails to produce an AST (Abstract Syntax Tree) when
there is no blank line before the line with the opening code fence.

Related:
 - gettalong/kramdown#530
 - Python-Markdown/markdown#807

Fixes: carpentries/styles#543

* bin/util.py: Change ruby executable to "bundle exec ruby"

Closes: carpentries/styles#547

* Change link colours (#549)

...to make them distinguishable from regular text. And for accessibility!

* bin/workshop_check.py: update default contact email address

* Gemfile: add 'webrick' dependency for Ruby 3.0.0 and above

Fixes carpentries/styles#552

* lesson_check.py allow for missing life_cycle

This will fix carpentries/styles#556

* update with Maxim's suggestion

* Add catch for None type code block in lesson_check

There are times when the AST is malformed and does not emit a class for
the code element. We do not want the parser to crash when this happens,
but we also want to notify ourselves that the AST is malformed.

This should not result in an error because as we saw in
carpentries/styles#543, the parser itself can
cause these malformations when the lesson itself renders well. Even
though we fixed the previous issue with an updated parser, problems
still persist:
swcarpentry/r-novice-gapminder#696 (comment)

I fully admit that this is a kludge.

* fix syntax

I've removed the print condition, because it will just result in an error no matter what (sigh)

* Makefile: fix 'bundle config' command flags

* Makefile: clean target: remove .vendor, .bundle, Gemfile.lock

Clean up:
1. `.vendor` directory where Bundler installs all the gems.
2. `.bundle` directory where Bundler stores its settings.
3. `Gemfile.lock` file generated by the Bundler.

* Makefile: silence Docker commands

* use Ruby's official GH Actions

* Makefile: use SHELL to call bin/knit_lesson.sh

* Makefile: fix up PHONY targets

* Fix GitHub actions for lessons in Rmarkdown

Specifically, set CRAN repository to https://cran.rstudio.com

* apply single shadow to image class

* use grey shadow instead of transparent black

* expand image-with-shadow selection

* Makefile: don't fail when Python isn't found

* bin/dependencies.R: handle 'no packages were specified' error

Fixes the following issue:

```
$ make site
lib paths: /Library/Frameworks/R.framework/Versions/3.5/Resources/library
Error in install.packages(missing_pkgs, lib = lib, repos = repos) :
  no packages were specified
Calls: install_required_packages -> install.packages
Execution halted
make: *** [install-rmd-deps] Error 1
```

* Don't check links.md in lessons that use remote theme

Fixes carpentries/styles#570

* add link references to code_of_conduct.md (#572)

* Update links.md

* add source_dir argument

This will fix carpentries/styles#576

* Improved relative_root_path

* update contributing guide

* add further languages for box titles (#580)

Will be useful for HPC-Carpentry lessons, GPU programming lesson as well as Julia lessons which are currently in the incubator.

* bin/lesson_check.py: allow comments and empty lines in links.md

* bin/lesson_check.py: one more fix for using_remote_theme()

* Template workflow: add two more lessons

* add make lesson-check-all step

* Set working directory for the 'make site' step

* Template workflow: smarter syncing with the styles repo

Current syncing procedure that used in the Template workflow fails for:

1. Lessons that are, in fact, nsync with the styles repo.
2. For lessons that use The Carpentries' remote theme and have deleted
   some of the files.

This PR makes this step a little bit more intelligent and takes into
account the above two scenarios.

* Apply Zhian's suggestions

Co-authored-by: Zhian N. Kamvar <zkamvar@gmail.com>

* add math support with katex (#573)

* bin/util.py: remove unused 'IMAGE_FILE_SUFFIX' var (#590)

It should've been removed in 7e835fd.

* bin/lesson_check.py: use proper function

* bin/lesson_check.py: allow exceptions to line length limit

Allow lines that contain a single image or a single link
to go over the suggested line length limit.

* lesson_check.py: harden single-line image/link pattern

This change hardens the pattern that matches single-line
image or link:

1. It extends the pattern to be matched in a heading
2. It allows the line to contain {: ...} customizations
3. It allows the line to end with \

* lesson_check.py: relax P_LINK_IMAGE_LINE pattern

This PR allows up to 3 non-word (`\W` in Python's `re`-speak) characters
in the beginning and end of the pattern that matches links and images.
This is to allow lesson developers place punctuation marks, parentheses,
or other symbols before or after the link or image on the same line in
Markdown.

* bin/util.py: Factor out reporter class. Define __all__

* Don't force hostname into relative_root_path

* lesson_check.py: add a comment about importing * from a package

Co-authored-by: Zhian N. Kamvar <zkamvar@gmail.com>

* lesson.scss: define 'inline' class for images

Define `inline` class for images that should not be displayed as block
elements.

By appending `{:class="inline"}` or `{: .inline}` to the image definition
in Markdown, one can create an inline image that doesn't break the
current line and is embedded in the paragraph. Useful for showing
special symbols and hieroglyphs that we can't display by other means.

* Fix Reporter class imports

* update R dependency search; Allow Bioconductor packages (#600)

* Automatically add deep anchor links using AnchorJS

* Makefile: require index.md (#607)

* Makefile: docker-serve target: ensure Docker is installed (#608)

* Fix broken "How to contribute" link

* lesson_check.py: report check status at the end

* util.py: load_yaml: Don't fail when it's not necessary

Also, make 'require()' function not fail by default.
The only case where we really need to fail is when 'kramdown' parser is
not specified. This is a highly unlikely scenario, tbh (because
arguments to `lesson_check.py` are set in the Makefile), but we can
think about reworking/optimizing this part later.

* lesson_check.py: fix error message for the 'defaults' check

* lesson_check.py: use proper regex for matching episode files

* lesson-check.py: read `config.yml` only once

1. Read `config.yml` file only once and store the contents in a global
   variable `CONFIG`. We're currently reading this file twice.
2. Detect lesson life cycle in `main` instead of making `check_config`
   return it.
3. Replace `using_remote_theme` function with a single test that checks
   that `remote_theme` keyword is present in `_config.yml`
4. CheckEpisode class: `check` method: move "remote theme test" inside the `check_reference_inclusion`.
5. main: mvoe "remote theme test" inside the `read_references`

* 404.md: expand contractions (#620)

* Syllabus: add conditional intructor training pre-/post- surveys (#618)

Port of carpentries/instructor-training@f488d24

Co-authored-by: François Michonneau <francois.michonneau@gmail.com>

Co-authored-by: François Michonneau <francois.michonneau@gmail.com>

* Navigation bar: allow excluding extras (#617)

Port of carpentries/instructor-training@dc1b52a

Co-authored-by: maneesha sane <maneeshasane@gmail.com>

Co-authored-by: maneesha sane <maneeshasane@gmail.com>

* add styling for lesson in The Carpentries Lab

Co-authored-by: Toby Hodges <tbyhdgs@gmail.com>

* remove contractions

* remove contraction

* remove contraction

* remove funding file to use organization's

Co-authored-by: Katrin Leinweber <9948149+katrinleinweber@users.noreply.github.com>
Co-authored-by: Maxim Belkin <maxim.belkin@gmail.com>
Co-authored-by: maneesha sane <maneeshasane@gmail.com>
Co-authored-by: Rayna M Harris <raynamharris@users.noreply.github.com>
Co-authored-by: Allen Lee <allen.lee@asu.edu>
Co-authored-by: K.E. Koziar <katherine.koziar@ucr.edu>
Co-authored-by: stamper <tbyhdgs@gmail.com>
Co-authored-by: Michael Joseph <josephmje.22@gmail.com>
Co-authored-by: Joao Rodrigues <j.p.g.l.m.rodrigues@gmail.com>
Co-authored-by: Sarah Brown <sarah_m_brown@brown.edu>
Co-authored-by: Anthony Gitter <agitter@users.noreply.github.com>
Co-authored-by: Zhian N. Kamvar <zkamvar@gmail.com>
Co-authored-by: Thomas Green <tomgreen66@hotmail.com>
Co-authored-by: ocaisa <a.ocais@fz-juelich.de>
Co-authored-by: Joseph Stachelek <jsta@users.noreply.github.com>
Co-authored-by: Renato Alves <alves.rjc@gmail.com>
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
Co-authored-by: Christina K <christinakconnect@gmail.com>
Co-authored-by: Kilian <kilian.lieret@posteo.de>
Co-authored-by: Trevor Keller <trevor.keller@gmail.com>
Co-authored-by: Andrew Reid <andrew.reid@nist.gov>
Co-authored-by: Bailey Harrington <baileythegreen@gmail.com>
Co-authored-by: Alan O'Callaghan <alan.ocallaghan@outlook.com>
Co-authored-by: Benson Muite <bkmgit@users.noreply.github.com>
@SL202222
Copy link

SL202222 commented Jun 2, 2022

I think it is a good ideal to learn with examples. maybe we can analysis a simple data as an examples to combine all code together. for example, if we want to analysis data.csv file , first, we need to read the data from csv, in this first step we can introduce pandas, how to install pandas, how to read csv file, how to read other type of files. and then introduce how to save different type of files. after read data, we need to know the shape of data, the first several rows of data. etc. so we can put these code into our stories.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Looking for Contributors type:discussion Discussion or feedback about the lesson type:enhancement Propose enhancement to the lesson
Projects
None yet
Development

No branches or pull requests

8 participants