High school physics course notes, with JavaScript simulations
landgreen.github.io
landgreen.github.io
I hope it can be a resource for those learning and teaching physics. I've got some free time this summer so let me know if you have any advice about what else to add.
I wanted to do the same thing for a long time, but never got around to it, so seeing this made me very happy.
It mostly works on my phone, too (layout).
sigh
I created my own simulations when studying these topics, and sure it helped much (though they were not as tidy and organized like these). Not sure if it was the effort to make the simulation that made things clearer, but I believe this can be indeed a wonderful resource.
Also, I think the simulations can help one understand some of the emergent properties that come from physics principles.
https://landgreen.github.io/physics/notes/force/1-intro/inde...
<svg class='svgDiagram center' width="300" height="120" viewBox="-15 0 285 120">
<defs>
<g id="vector">
<line x1="0" y1="0" x2="0" y2="45" style="stroke:#000;stroke-width:2" />
<polygon points="0,50 -5,42 5,42" style="fill:#000;" />
</g>
</defs>
<g transform='translate(100 20) rotate(0)'>
<rect x="0" y="0" width="80" height="80" stroke='black' stroke-width='2' fill="#fff" />
<text x="40" y="40" fill="black" text-anchor="middle" alignment-baseline="middle" font-size='28px'>m</text>
</g>
<use xlink:href="#vector" transform='translate(100 60) rotate(90)' />
<text x="40" y="60" font-size='25px' text-anchor="middle" alignment-baseline="middle">F</text>
<use xlink:href="#vector" transform='translate(180 80) rotate(-90)' />
<text x="240" y="80" font-size='25px' text-anchor="middle" alignment-baseline="middle">F</text>
<use xlink:href="#vector" transform='translate(180 40) rotate(-90)' />
<text x="240" y="40" font-size='25px' text-anchor="middle" alignment-baseline="middle">F</text>
</svg>And here on gravity: https://landgreen.github.io/physics/notes/gravity/gravitatio...
(it's at the very bottom)
If you're taking nitpicks: some of your example calculations don't track units, like the ones on https://landgreen.github.io/physics/notes/momentum/1-intro/i.... I think they should: encouraging students to always track units in intermediate steps is really helpful for getting them to think about what they're doing and catch errors early, in my experience.
I think I should add units for more of the LaTex example problems. Maybe I could color code the units so it doesn't get confusing.
Back when everyone was on desktop, I liked using mouseover popups. VR/AR is going to be great fun. :)
There's a style of research talk, which I think of as a "Cal Tech style", merely because the speaker has been from there the few times I've seen this. It's putting up a colorized equation, and spending the entire talk walking through its expressions. If someone knows of a good example on youtube, it might be one way to see the many layers of narrative present in an equation.
I had an "F = m a" interactive like this "A feel for: torque"[1], but I don't think it ended up online. That's a step beyond scaffolding a qualitative understanding of the phenomenon - developing a rough quantitative feel for it. [1] http://www.clarifyscience.info/part/ZoomB?v=A&p=CK6Ji&m=torq...
FWIW, scientific practice is to have a space between number and units. If you'd like them close for pedagogy, perhaps \thinspace?
HA, I'm so inconsistent with my spaces on units. I'll add that to my summer todo list.
I say start throwing units in as early as possible (grade school?).
Add in more explicit unit analysis problems to each unit. Add in unit tracking to more solutions.
Here's what I came up with: http://electrons.surge.sh
• (Small Improvement) When updating the particle positions (your physicsAll function), you can skip a bunch of loop iterations and redundant distance math by using j > i rather than i != j, and updating both particles together: https://github.com/ivanreese/electrons/blob/8b21d1cf8c80e16c...
• (Big Improvement) Rather than using fillRect to draw each square of the scalarField, manipulate the canvas pixel data directly. Use context.getImageData() to get a ByteArray, then loop through it and update the color in each pixel. Much faster than using fills when you want to color every pixel in the canvas independently: https://github.com/ivanreese/electrons/blob/8b21d1cf8c80e16c...
• (Aesthetic Improvement) I also render at a lower resolution, and I use the CSS blur filter to smooth out the result: canvas { filter: blur(4px) }
I hope some of these suggestions are helpful. None of them require switching to a new rendering technology (like WebGL), and it should be pretty easy to slot them in to your existing code. Feel free to drop me a line if you'd like help implementing anything.
Last but not least, thanks for creating this fantastic educational resource! I work for a learning media company that produces some electrical content, and I shared your work with my teammates as an example of what we could aspire to. It was a real hit.
For all that, our books were still, well, books: dry, static, and squinty-small print.
This approach to teacher's notes (and the obvious care that went into it) would've changed my approach to physics, to learning, and to life, and that's coming from an uncommonly well-resourced background. I can't even imagine what this would do for students with less access.
http://www.falstad.com/mathphysics.html
Ripple Tank and Analog Circuit Simulator are my favs. I could play for days.
I owe this guy about 1000 beers. Seriously, I would love to meet him so I can thank him personally.
http://pickle-ts.com/relativity
Source code you can play with live: https://stackblitz.com/edit/pickle-samples?file=app%2Frelati...
Supporting social practices is an important part of a technology--folks without experience in schools (or informal learning environments) sometimes picture educational technologies being used alone in a vacuum, the mooc high school. I'm pretty hopeful about using educational technologies to help teachers grow their teaching practices.
Someone please correct me if I'm wrong, but Sixty Symbols (aka nottinghamscience) did at least 2 videos on this where they expressly pointed out that this is widely pushed but totally incorrect? https://www.youtube.com/watch?v=CiHN0ZWE5bk
Here is my updated text:
<p>While individual waves of light always move at c, light seems to move slower in dense media. This is because as the light wave propagates through a medium it produces ripples that <a href="https://www.youtube.com/watch?v=CiHN0ZWE5bk">interfere</a> in a way that slows the group velocity of the light wave.</p>
"dry friction"... As I remember the story, someone was trying to replicate Arrheniius's equipment and results. The results weren't matching, until they took the equipment to an outreach event... where it got covered with greasy fingerprints. Turns out, it's Arrheniius's law of large objects sliding on pig fat.
We actually now understand friction down to nanoscale. Something that wasn't true a decade ago. But I've never seen introductory friction content written to reflect that.
Would you say that this is accurate?
"Kinetic friction is primarily caused by chemical bonding between surfaces; however, in many cases roughness is dominant."
[1] "Bridging from Atomic Forces to Macroscopic Friction" http://online.kitp.ucsb.edu/online/suspensions-c18/robbins/ . And the preceding "Contact of rough solids" http://online.kitp.ucsb.edu/online/suspensions18/robbins/ . Robbins also has an old 2004 AJP article "Understanding and illustrating the atomic origins of friction" http://dx.doi.org/10.1119/1.1715107 , but I've not skimmed it, nor explored its cited-bys for something similar but more recent.
[1] Slides 2 and 3 of http://online.kitp.ucsb.edu/online/suspensions-c18/robbins/
http://galileoandeinstein.physics.virginia.edu/more_stuff/Ap...
I also built a CMS-type environment for this type of content. It combines content creation with an IDE to create simulations that can be combined with the content.
Here is a static and old version of the software: http://schoolnotez.com/
There are folks interested in creating these types of interactive learning environments, unfortunately it doesn't appear that there is much demand for it by schools.
Now, I think this should be a "Show HN" entry.
If I was to implement something like this I would try to make use of Jupyter or R with Shiny.
Electrons can just leave the atom, this is how static electricity works.
I used to use mathjax but I'm not sure if that's the case here