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

Tweak timings of exercises to better reflect teaching times #1839

Merged
merged 2 commits into from
Feb 22, 2024

Conversation

randomPoison
Copy link
Collaborator

A few of the early exercises had much larger estimates than were actually necessary for the super simple early exercises. I've gone through and reviewed the time estimates for exercises and tweaked the estimates based on how much time students have actually needed in my classes so far.

Copy link

Fundamentals // Day 1 Morning

2 hours and 25 minutes: (40 minutes short)

  • Welcome - 5 minutes
  • Hello, World - 15 minutes
  • Types and Values - 45 minutes
  • Control Flow Basics - 55 minutes

Fundamentals // Day 1 Afternoon

2 hours and 25 minutes: (35 minutes short)

  • Welcome - 0 minutes
  • Tuples and Arrays - 45 minutes
  • References - 35 minutes
  • User-Defined Types - 50 minutes

Fundamentals // Day 2 Morning

2 hours and 40 minutes: (20 minutes short)

  • Welcome - 3 minutes
  • Pattern Matching - 50 minutes
  • Methods and Traits - 45 minutes
  • Generics - 40 minutes

Fundamentals // Day 2 Afternoon

3 hours and 10 minutes

  • Welcome - 0 minutes
  • Standard Library Types - 1 hour and 20 minutes
  • Standard Library Traits - 1 hour and 40 minutes

Fundamentals // Day 3 Morning

2 hours and 20 minutes: (45 minutes short)

  • Welcome - 3 minutes
  • Memory Management - 1 hour
  • Smart Pointers - 55 minutes

Fundamentals // Day 3 Afternoon

2 hours and 10 minutes: (50 minutes short)

  • Welcome - 0 minutes
  • Borrowing - 50 minutes
  • Slices and Lifetimes - 1 hour and 10 minutes

Fundamentals // Day 4 Morning

2 hours and 50 minutes

  • Welcome - 3 minutes
  • Iterators - 45 minutes
  • Modules - 40 minutes
  • Testing - 1 hour

Fundamentals // Day 4 Afternoon

2 hours and 10 minutes: (55 minutes short)

  • Welcome - 0 minutes
  • Error Handling - 55 minutes
  • Unsafe Rust - 1 hour and 5 minutes

New Course Schedule

This PR changes the course schedule. The new schedule is shown below.

Copy link

Fundamentals // Day 1 Morning

2 hours and 10 minutes: (55 minutes short)

  • Welcome - 5 minutes
  • Hello, World - 15 minutes
  • Types and Values - 45 minutes
  • Control Flow Basics - 40 minutes

Fundamentals // Day 1 Afternoon

2 hours and 25 minutes: (35 minutes short)

  • Welcome - 0 minutes
  • Tuples and Arrays - 45 minutes
  • References - 35 minutes
  • User-Defined Types - 50 minutes

Fundamentals // Day 2 Morning

2 hours and 40 minutes: (20 minutes short)

  • Welcome - 3 minutes
  • Pattern Matching - 50 minutes
  • Methods and Traits - 45 minutes
  • Generics - 40 minutes

Fundamentals // Day 2 Afternoon

3 hours and 10 minutes

  • Welcome - 0 minutes
  • Standard Library Types - 1 hour and 20 minutes
  • Standard Library Traits - 1 hour and 40 minutes

Fundamentals // Day 3 Morning

2 hours and 20 minutes: (45 minutes short)

  • Welcome - 3 minutes
  • Memory Management - 1 hour
  • Smart Pointers - 55 minutes

Fundamentals // Day 3 Afternoon

2 hours and 10 minutes: (50 minutes short)

  • Welcome - 0 minutes
  • Borrowing - 50 minutes
  • Slices and Lifetimes - 1 hour and 10 minutes

Fundamentals // Day 4 Morning

2 hours and 50 minutes

  • Welcome - 3 minutes
  • Iterators - 45 minutes
  • Modules - 40 minutes
  • Testing - 1 hour

Fundamentals // Day 4 Afternoon

2 hours and 10 minutes: (55 minutes short)

  • Welcome - 0 minutes
  • Error Handling - 55 minutes
  • Unsafe Rust - 1 hour and 5 minutes

New Course Schedule

This PR changes the course schedule. The new schedule is shown below.

Copy link
Collaborator

@mgeisler mgeisler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, it's super useful to get some real-life data on this!

@djmitche
Copy link
Collaborator

Yes, that's fantastic! I'm sorry the schedule comments are so verbose.. I'll work on that! (#1834)

@djmitche djmitche merged commit 9023dd9 into main Feb 22, 2024
36 checks passed
@djmitche djmitche deleted the legare/exercise-timing branch February 22, 2024 15:21
JasperPluijmers added a commit to nedap/comprehensive-rust that referenced this pull request Mar 8, 2024
* Fix typo in googletest.md (google#1804)

The word `strings` is repeated unnecessarily

* Update try.md - syntax error (google#1807)

Add second `:`

* Use existing function as an example for automatic dereferncing (google#1799)

* Fix Chromium link in README.md (google#1812)

Fixes google#1806.

* Make content of variable "name" an actual name (google#1816)

In the example, somebody who is trying to understand this code has to
follow a lot of moving pieces: prefix, name, make_greeter, and then also
learn the new move concept at the same time.

It'd be better if the content were to actually match the name of the
variables. "Hi" is a good prefix, but "there" is not a name, so let's go
with an actual name.

* Added break-continue section. (google#1793)

This is a contribution of a break-continue section for Comprehensive
Rust.


![image](https://github.com/google/comprehensive-rust/assets/65899331/e68bf439-bcbd-43c9-88bd-f66470a5956f)

![image](https://github.com/google/comprehensive-rust/assets/65899331/1644a460-8373-4878-b6b9-0ce498e8c95d)

---------

Co-authored-by: Dustin J. Mitchell <[email protected]>

* Change String representation to actual (google#1817)

Tested with rust 2015, 2018, 2021 and 2024, on amd64 musl, amd64 glibc
and aarch64 musl, all of them represent Strings with (ptr, capacity,
len).

This is an internal implementation detail, that shouldn't be exposed
anyway, so it's no big deal, but in the speaker notes, we provide a
debugging tool for demonstration purposes, so at least that should have
a correct output.

* zh-CN: index & preparation translation (google#1800)

The po file has been refreshed. Translation range: L1173-L2241.

google#324

---------

Co-authored-by: Yihao Wang <[email protected]>

* Added blocks and scopes section (google#1822)

* Translation correction on Update es.po (google#1780)

I added a tranlation correction on the line 1287, I change "tres"
instead "cuatro", because "cuatro" is the meaningful of four in Spanish.

---------

Co-authored-by: Henri F <[email protected]>

* da: refresh translation for January 2024 (google#1742)

This is a clean refresh, requires only a syntactical review.

You can skim this PR with the [GitHub CLI](https://cli.github.com/):

```
gh pr diff 1742 | bat -l patch
```

* fa: refresh translation for January 2024 (google#1751)

This is a clean refresh, requires only a syntaxtical review.

You can skim this PR with the [GitHub CLI](https://cli.github.com/):

```
gh pr diff 1751 | bat -l patch
```

* Translation correction on Update es.po (google#1781)

I added a tranlation correction on the line 1287, I change "tres"
instead "cuatro", because "cuatro" is the meaningful of four in Spanish.

---------

Co-authored-by: Henri F <[email protected]>

* cargo: bump the patch group with 1 update (google#1828)

Bumps the patch group with 1 update:
[clap](https://github.com/clap-rs/clap).

Updates `clap` from 4.5.0 to 4.5.1

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* uk: Day 3: morning (google#1826)

Day 3: morning

Signed-off-by: Andriy Redko <[email protected]>

* Suggest --locked for cargo installs (google#1792)

This is already used in the GitHub actions, and avoids issues like those
in google#1791.

Fixes google#1791.

* Fix style in glossary.md (google#1825)

`id` of `h1` title in the translated version will be changed to the
translated text.
Fixed `id` configured here will not take effect in the translated
version.

Correct style: https://google.github.io/comprehensive-rust/glossary.html
Wrong style (zh-CN): https://google.github.io/comprehensive-rust/zh-CN/glossary.html

* Add heading attribute to glossary.md (google#1829)

Add heading attributes[1] to avoid ID changes in translation.

[1]: https://rust-lang.github.io/mdBook/format/markdown.html#heading-attributes

Related: google#1825

---------

Co-authored-by: Martin Geisler <[email protected]>

* Rendered PDF improvements (google#1805)

Updates `mdbook-pandoc` to
[0.5.0](https://github.com/max-heller/mdbook-pandoc/releases/tag/v0.5.0)
to use some new features:
- Table wrapping (closes google#1709)
  
The wrapping logic mirror's
[Pandoc's](https://pandoc.org/MANUAL.html#extension-pipe_tables) (i.e.,
compare the relative widths of the `---` columns to determine column
widths) so tables in the source may need tweaking to get the proportions
right
- Replace broken links in PDF with corresponding links to
https://google.github.io/comprehensive-rust/

* Make the "break with label" example more illustrative (google#1830)

In the old version, using "break 'outer;" and using "break;" (without
the label) produce the same output.

This version fixes that to make the example more illustrative.

---------

Co-authored-by: Martin Geisler <[email protected]>

* fr: Updating the first few pages (up to 1.1). (google#1778)

* Update translations.md with new Korean contributor (google#1823)

Co-authored-by: Martin Geisler <[email protected]>

* Reformulate speaker notes regarding Box (google#1819)

The first change is to reformulate the English in a way, that
emphasizes, that this is not a decision of the compiler, but the
impossibility of computing an infinite value (e.g. changed the language
from "not compute" to "would not be able to compute").

The second change is to fix the error message, of course the error
message from the compiler is "recursive withOUT indirection", as
"recursive with indirection" is actually what we want.

* Put a header on schedule comments (google#1814)

This will add a little more context. See the current result in
google#1813.

* Add missing editable attribute to exercise (google#1827)

I was reading the docs and I stumbled upon this.

I'm unsure about when exercises should be solved directly on the site
and when they should be copied and pasted into a playground. But since
the previous chapter's exercise is solvable in the site [(fibonacci
sequence)](https://github.com/google/comprehensive-rust/blob/0cb7f496b542d76468fa950718f57f4037abc8fa/src/types-and-values/exercise.md?plain=1#L15),

I figured this one might be missing the attribute. Anyway amazing work
on the docs!

* Change hardcoded vector update to a for loop (google#1833)

iterating over the vector instead of hardcoding each item

---------

Co-authored-by: Martin Geisler <[email protected]>

* Expand Traits, add associated types (google#1815)

This breaks the "Traits" slide into three smaller sub-slides. It also
addresses part of google#1511 by explicitly addressing associated types.

---------

Co-authored-by: Martin Geisler <[email protected]>

* Update exercise to add also the tests, in a TDD style (google#1832)

Having the tests only in the result brings less value, so the
participants can do it following TDD practices

* Update user-defined-types/exercise.md (google#1835)

Allow us to edit so we can complete the exercise :)

* Move hello world example to second section (google#1838)

The current location for the hello world example is awkward since the
two surrounding pages are both talking about Rust from a high level
without talking about syntax at all. I think starting the second section
(types and values) with the hello world example would help the first
section flow more smoothly.

* Add translation comment to glossary (google#1831)

With google/mdbook-i18n-helpers#107 merged, we
can begin adding comments for the translators to our Markdown files.

* Tweak timings of exercises to better reflect teaching times (google#1839)

A few of the early exercises had much larger estimates than were
actually necessary for the super simple early exercises. I've gone
through and reviewed the time estimates for exercises and tweaked the
estimates based on how much time students have actually needed in my
classes so far.

* Flesh out `for` loop example (google#1841)

* Add example of iterating over a collection.
* Update speaker notes to call out the use of iterators.

I think it's useful to call out that `for` loops primarily are used to
iterate over a collection of objects, even though we haven't yet talked
about any concrete collection types at this point. I think using the
array literal syntax is simple enough to understand that it should be
quick to explain when we get to this slide.

* pt-BR: Merge CR v.2 pt-BR translation back into main (google#1846)

This PR merges the pt-BR v.2 translation back to main.
Also, it refreshes the .po file format removing the line numbers.
This requires just a syntactical review, as the partial PRs into this
branch were reviewed already.

You can skim this PR with the [GitHub CLI](https://cli.github.com/):

gh pr diff 1846 | bat -l patch

google#317 google#1463

---------

Co-authored-by: João Victor Mendes <[email protected]>
Co-authored-by: azevedoalice <[email protected]>

* Fix definition of Rust Fundamentals in glossary.md (google#1844)

Small nitpick: Days 1 to **4** are Rust Fundamentals

* Fix typo in cargo.md (google#1847)

* Remove tangential text from `if` slide (google#1840)

* Update cargo.md to fix typos (google#1848)

* cargo: bump the patch group with 6 updates (google#1850)

Bumps the patch group with 6 updates

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* cargo: bump the patch group in /src/bare-metal/aps/examples with 1 update (google#1851)

Bumps the patch group in /src/bare-metal/aps/examples with 1 update:
[cc](https://github.com/rust-lang/cc-rs).

Updates `cc` from 1.0.83 to 1.0.88

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* cargo: bump the patch group in /src/exercises/bare-metal/rtc with 1 update (google#1852)

Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[cc](https://github.com/rust-lang/cc-rs).

Updates `cc` from 1.0.83 to 1.0.88

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* uk: Day 3: afternoon (google#1849)

uk: Day 3: afternoon

Signed-off-by: Andriy Redko <[email protected]>

* Link to PDF version of course from first page (google#1836)

Re
google#1805 (review)

---------

Co-authored-by: Martin Geisler <[email protected]>

* Skip translation of large bare-metal code blocks (google#1853)

This was done a bit inconsistently before. We now skip all of these
large blocks which are meant to be used as-is by the students.

This removes 700 lines from the PO files. I found this during the review
of google#1651.

* Sort `mdbook` redirects (google#1761)

There were a few comments, but I think it’s better to make it all
uniform and avoid these comments. The comment was about the v2 rewrite,
but this is now done and so the comment is less useful.

I also normalized the quotes to double-quotes instead of single-quotes.
The latter is a literal string in TOML, but we don’t actually have any
special characters to escape here.

* Rework introduction of pattern matching (google#1843)

* Update course-schedule PR comments in-place (google#1856)

Instead of always adding a new comment, just update the existing comment
if one exists.

This fixes google#1834.

* cargo: bump the patch group in /src/bare-metal/aps/examples with 1 update (google#1871)

Bumps the patch group in /src/bare-metal/aps/examples with 1 update:
[log](https://github.com/rust-lang/log).

Updates `log` from 0.4.20 to 0.4.21

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump crate-ci/typos from 1.18.2 to 1.19.0 (google#1872)

Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.18.2 to
1.19.0.

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* cargo: bump the patch group with 4 updates (google#1873)

Bumps the patch group with 4 updates:
[log](https://github.com/rust-lang/log),
[tempfile](https://github.com/Stebalien/tempfile),
[cxx](https://github.com/dtolnay/cxx) and
[cxx-build](https://github.com/dtolnay/cxx).

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* cargo: bump the patch group in /src/exercises/bare-metal/rtc with 1 update (google#1874)

Bumps the patch group in /src/exercises/bare-metal/rtc with 1 update:
[log](https://github.com/rust-lang/log).

Updates `log` from 0.4.20 to 0.4.21

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* cargo: bump the minor group with 2 updates (google#1870)

Bumps the minor group with 2 updates:
[scraper](https://github.com/causal-agent/scraper) and
[tokio-websockets](https://github.com/Gelbpunkt/tokio-websockets).

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* URGENT: Fix course schedule watcher github action (google#1867)

@djmitche Currently all PRs are marked as schedule change PRs.

This is my try to propose a fix for this, but please review diligently,
I'm no github actions expert, and I don't have an environment to test.

* Small formatting fix (google#1866)

This is a typo, that actually @mgeisler stopped in my previous PR, I was
just not around to fix it fast enough to make it to the previous merge.
Thanks for the catch!

* Move Mockall and GoogleTest slides to Android section (google#1533)

After google#1528 and google#1532, we now have actual slides which showcase the
crates in action. So we can reclaim a few minutes by removing the slide
which mentions Mockall and GoogleTest slide.

The slide mentioned [proptest](https://docs.rs/proptest) and
[rstest](https://docs.rs/rstest) as well. While I'm sure the libraries
are useful, we don't have them imported into AOSP and I've never
personally used them. We should therefore not advertise them yet at this
point since they won't be useful to Android engineers.

Of course we can mention things that are not in AOSP (or in Chromium),
but I think we should do it in the speaker notes at most.

* Always install and run `mdbook-pandoc` (google#1713)

Before, we only installed and ran `mdbook-pandoc` when publishing the
course — which means that a PR change could accidentally break the
publish workflow. We now test that it works on every PR.

From a discussion in google#1704.

* Add a dev theme to help with slide aspect ratio (google#1842)

Added a dev theme to help with slide aspect ratio while updating content
or for reviewing PRs.

Fixes google#1796.

---------

Co-authored-by: Dustin J. Mitchell <[email protected]>
Co-authored-by: Martin Geisler <[email protected]>

* cargo: bump mio from 0.8.10 to 0.8.11 (google#1877)

Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.10 to 0.8.11.

* Fix some typos (google#1864)

Signed-off-by: geekvest <[email protected]>

* es: Merge CR v.2 Spanish translation back into main (google#1879)

This PR merges the Spanish (es) v.2 translation back to main.
This requires just a syntactical review, as the partial PRs into this
branch were reviewed already.

You can skim this PR with the [GitHub CLI](https://cli.github.com/):

gh pr diff 1879 | bat -l patch

google#1463 google#284

---------

Co-authored-by: David Martínez Martí <[email protected]>

* tr: cr2 update changes (google#1865)

updated for cr2 and added some translations

Part of google#500

* Divided Array and tuples (google#1859)

google#1824 PR Changes

* Make diagram consistent with code (google#1855)

* Retire @duyguisler as a Turkish reviewer (google#1880)

Thanks for the work so far, feel free to come back if you have more
time!

* Tweak solution to iter exercise (google#1884)

Because `.zip()` is limited to the shorter length, the `.take()` call
here is unnecessary. When explaining this solution I don't want to have
to explain a call to a method that, used as it is, does nothing.

* concurrency: Add detailed teaching notes for welcome and threads slides (google#1885)

These follow the flow of what I actually teach, which spends a
significant amount of time on the latter slide. I think it's worthwhile
to have a real flow documented in the teaching notes, both to make sure
nothing gets forgotten and to structure the experience of teaching.

* Do not show trait vtables as located in the heap in memory diagram (google#1882)

This diagram is misleading and I often explain that the character data
of string literals resides in the executable's static data, with vtables
working the same.

* concurrency: Update async trait slide (google#1883)

Clarify that the basics are stable, but dyn support is still missing.
This slide was outdated and didn't explain the current state of stable
correctly.

* set fallback fonts for PDF rendering (google#1728)

Once a new version of Pandoc is released that includes
jgm/pandoc#9204 and
jgm/pandoc#9353 (both merged), this will fix the
emoji and symbol rendering issues in google#1708.

It doesn't seem to be possible to set fallback fonts with
`luatexja-fontspec` (used to configure CJK fonts), which results in some
missing symbols in the translations but at least renders the emoji
properly.

Closes google#1708

* Fix typo in associated-types.md (google#1887)

A minor nitpick, but as someone new to the language I did spend a bit
more time than I'd like to admit trying to understand the meaning of
`allow` before realizing this is likely a typo. Maybe I still don't
understand, and in that case I'd appreciate a correction!

* Refreshed Bengali Translations and Added New Translations to Bengali (google#1876)

This PR aims to do the following:
1. Refresh the Bengali Translations
2. Add new translations in line with google#653 to complete up to 10%.
3. Corrections to existing translations.

Edit: Recent commits bump up the % completed to 12.

---------

Co-authored-by: abhik-bits <[email protected]>
Co-authored-by: Mir Wasi Ahmed <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Andriy Redko <[email protected]>
Signed-off-by: geekvest <[email protected]>
Co-authored-by: IP1llar <[email protected]>
Co-authored-by: Gergely Risko <[email protected]>
Co-authored-by: Dustin J. Mitchell <[email protected]>
Co-authored-by: Manichand Kondapaka <[email protected]>
Co-authored-by: Dustin J. Mitchell <[email protected]>
Co-authored-by: mobyw <[email protected]>
Co-authored-by: Yihao Wang <[email protected]>
Co-authored-by: Diego Romero <[email protected]>
Co-authored-by: Henri F <[email protected]>
Co-authored-by: Martin Geisler <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andriy Redko <[email protected]>
Co-authored-by: Martin Geisler <[email protected]>
Co-authored-by: Max Heller <[email protected]>
Co-authored-by: Marja Hölttä <[email protected]>
Co-authored-by: AdrienBaudemont <[email protected]>
Co-authored-by: titong0 <[email protected]>
Co-authored-by: Jean Carlo Vicelli <[email protected]>
Co-authored-by: Michael Graf <[email protected]>
Co-authored-by: Nicole L <[email protected]>
Co-authored-by: João Victor Mendes <[email protected]>
Co-authored-by: azevedoalice <[email protected]>
Co-authored-by: Adrian Taylor <[email protected]>
Co-authored-by: geekvest <[email protected]>
Co-authored-by: David Martínez Martí <[email protected]>
Co-authored-by: Enes Aydın <[email protected]>
Co-authored-by: Yuri Astrakhan <[email protected]>
Co-authored-by: Frances Wingerter <[email protected]>
Co-authored-by: Aaron M <[email protected]>
Co-authored-by: Abhik Banerjee <[email protected]>
Co-authored-by: abhik-bits <[email protected]>
Co-authored-by: Mir Wasi Ahmed <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants