Heating and cooling curves are graphical representations that show how the temperature of a substance changes as heat is added or removed over time. They illustrate the behavior of substances as they go through different states—solid, liquid, and gas.
Heating Curve: This curve shows how the temperature of a substance increases as it absorbs heat. The curve typically rises as the substance heats up, with plateaus indicating phase changes, where the substance absorbs energy but its temperature remains constant. Check out the heating curves for water and nitrogen using the drop-down menu.
Cooling Curve: This curve is the opposite of the heating curve. It shows how the temperature decreases as the substance loses heat. Like the heating curve, it also has plateaus where phase changes occur, but this time, the substance releases energy. In addition to water, you can also see the cooling curve for ethanol.
With these ChatGPT-generated interactive graphs, users can change the rate of heat input or released from the substance. They can also read the descriptions that explain the changes in the average PE and KE of the molecules during each process.
A Geiger-Muller (GM) counter is an instrument for detecting and measuring ionizing radiation. It operates by using a Geiger-Muller tube filled with gas, which becomes ionized when radiation passes through it. This ionization produces an electrical pulse that is counted and displayed, allowing users to determine the presence and intensity of radiation.
This simulation (find it at https://physicstjc.github.io/sls/gm-counter) allows students to explore the random nature of radiation and the significance of accounting for background radiation in experiments. Here’s a guide to help students investigate these concepts using the simulation.
Exploring Background Radiation
Q1: Set the source to “Background” and start the count. Observe the count for a few minutes. What do you notice about the counts recorded?
A1: The counts recorded are relatively low and vary randomly. This reflects the background radiation which is always present.
Q2: Why is it important to measure background radiation before testing other sources?
A2: Measuring background radiation is important to establish a baseline level of radiation. This helps in accurately identifying and quantifying the additional radiation from other sources.
Investigating a Banana as a Radiation Source
Q3: Change the source to “Banana” and reset the data. Start the count and observe the readings. How do the counts from the banana compare to the background radiation?
A3: The counts from the banana are higher than the background radiation. This is because bananas contain a small amount of radioactive potassium-40.
Q4: How do the counts per minute (CPM) for the banana vary over time? Is there a pattern or do the counts appear random?
A4: The counts per minute for the banana vary over time and appear random, reflecting the stochastic nature of radioactive decay.
Exploring a Cesium-137 Source
Q5: Set the source to “Cesium-137” and reset the data. Start the count and observe the readings. How do the counts from Cesium-137 compare to both the background radiation and the banana?
A5: The counts from Cesium-137 are significantly higher than both the background radiation and the banana. This is because Cesium-137 is a much stronger radioactive source.
Q6: What do the counts per minute (CPM) tell you about the intensity of the Cesium-137 source compared to the other sources?
A6: The CPM for Cesium-137 is much higher, indicating a higher intensity of radiation compared to the background and banana sources.
Understanding the Random Nature of Radiation
Q7: By looking at the sample counts, can you predict the next count value? Why or why not?
A7: No, you cannot predict the next count value because radioactive decay is a random process. Each decay event is independent of the previous ones.
Q8: How can you use the background radiation measurement to correct the readings from the banana and Cesium-137 sources?
A8: You can subtract the average background CPM from the CPM of the banana and Cesium-137 sources to get the corrected readings, isolating the radiation from the specific sources.
The hands-on workshop for Physics teachers will focus on the use of generative AI to create physics simulations without the user having to write code. The collection of the apps made using AI can be accessed hereand the github repository here. This deck of slides is made available here for the participants’ reference. The sample prompts that we will be using can be found at the bottom of this page.
The sample app that we hope the participants can produce will look something like this:
For your convenience, you may refer to the steps below.
STEP 1:
Open ChatGPT or any other GAI (e.g. Claude, CoPilot, Gemini)
STEP 2:
Copy these instructions and paste them into the AI.
Put all the codes in one page.
Create a canvas showing a ball dropped from rest from a height and bouncing off the ground using javascript.
Using the plotly library, plot the graph of velocity versus time for the ball. The time of contact with the ground is negligible.
Create an input box that allows the user to key in the initial height in metres.
Create a slider that changes the percentage energy loss after every collision with the ground.
Create a dropdown menu that changes the vertical axis to velocity or displacement.
Initialise the animation and graph upon loading. Use a button to start and stop the animation.
STEP 3:
Copy the generated code using the button provided.
STEP 4:
Paste into editor here:
“Run in New Tab” to view and test the app. Download the html file once you are happy with it, or if you would like to add media objects such as images and audio.
STEP 5:
Be prepared to generate 10 or more versions! Repeat STEPS 3-4.
Debugging Options:
Change the code manually yourself.
Describe any unexpected behaviour / missing component to AI.
Ask AI to try a new approach (usually after a few failed iterations).
To save time, just ask AI to generate the codes that need to be changed. It will tell you where to update.
STEP 6:
Make the app look pretty!
Optimise for SLS by asking AI to “limit the entire page to a size of max width 580px and max height: 460px”
Ask AI to beautify the app with styling.
Ask AI to add image / video / audio files into the code, giving it the filenames, e.g. replace the moving ball with an image of named “ball.png”. This is an example of such an image. You can right-click and “Save as” to save this image file into the same directory as the index.html file.
STEP 7:
To embed into SLS, you will need to copy the code libraries that are used (if any) in a new .js file. The code library is a collection of pre-written code that you can use to perform specific tasks, e.g.
Prompt 1: Create a javascript simulation in a single html file that demonstrates the addition of two velocity vectors to give a resultant velocity. The velocity of a boat travelling in still water moving across a river is shown as vertically upward. A slider will change the speed and direction of the water flow. The velocity of the river water is also shown. Finally, show the addition of the two vectors to give a third vector: the resultant velocity. Create a button for animating the boat’s movement.
Response: Here’s an HTML file with embedded JavaScript to create a simulation of the addition of two velocity vectors. This simulation includes a slider to adjust the speed and direction of the river flow, and a button to animate the boat’s movement. (Code is not included to avoid making this post too long.)
Prompt 2: Use two horizontal lines to show the shores of the river, also the starting and ending point of the boat’s journey. The boat should be represented with a pencil-like shape, moving upward from one horizontal line to another. The boat should be moving in the direction of the resultant velocity. The vectors should be represented with arrows, not just lines.
Response: Here’s the updated HTML file with the specified features:
Two horizontal lines representing the shores of the river. A pencil-like shape representing the boat, moving from one shore to the other in the direction of the resultant velocity. Arrows to represent the vectors.
Prompt3: Very good! Now invert the shape of the boat vertically. Also, draw some light blue wavy curves between the two horizontal lines that are stationary when the river speed is zero but move at the river velocity otherwise.
Response: Here’s the updated HTML file with the specified changes:
The boat shape is inverted vertically. Light blue wavy curves are drawn between the two horizontal lines to represent the river water. These waves are stationary when the river speed is zero but move at the river velocity otherwise.
Prompt 4: Keep the canvas to 640 pixels wide and 480 pixels tall. Resize everything else accordingly.
And what you see in the beginning of this post was the result.
Fleming’s Left-Hand Rule is a visual way to remember the direction of force on a current-carrying conductor in a magnetic field. In this rule, the thumb, forefinger, and middle finger of your left hand are held at right angles to each other. The thumb represents the direction of the force, the forefinger the direction of the magnetic field, and the middle finger the direction of the current.
To visualize this with GlowScript’s VPython, I used ChatGPT to generate a 3D scene with arrows representing each of these directions.
The prompts used were
Generate a glowscript python code for visualising fleming’s left-hand rule.
Use mouse or finger interactions to rotate the scene
Include a toggle to switch from the left-hand rule to the right hand rule.
I wanted to challenge ChatGPT to produce a complex interactive in order to prove that it is possible for teachers without much programming background to work with it as well.
This time, it was a lot more trial and error. The first major problem was when I thought the usual javascript library for graphs, Chart.JS would work. However, what I produced as a wonky wave in both directions that somehow attenuated as it travelled even though the equation of the waves did not have a decay factor.
The equation was generated by ChatGPT but looked like a normal sinusoidal function to me:
var y1 = Math.sin(2 * Math.PI * x / wavelength - 2 * Math.PI * time / period);
This is what the wonky graph looks like:
My suspicion is that Chart.JS makes use of points to form the curve so animating so many points at one go put too much demand on the app.
I then asked ChatGPT to suggest a different library. It then proceeded to make a new app with Plotly.JS, which works much better with moving graphs. This impressed me. I am learning so much with this new workflow. The final interactive graph can be found here:
I decided to add more functions after the first page was ready. While it took me about an hour to get the first page right with about 15 iterations mainly due to the wrong javascript library used, adding in more sliders to make the interactive more complex with variable wavelengths, periods and amplitudes took less than 10 minutes.
I shall just share the prompts that were given after I realised that plotly.js is the way to go.
Prompts for the index page:
Create a graph using plotly.js with a vertical axis for displacement of wave particles and a horizontal axis for distance moved by a wave. .
Draw the curve of an infinitely long transverse wave moving along the horizontal axis.
Create another infinitely long transverse wave of the same wavelength moving in the opposite direction along the same horizontal axis. Represent them in different colours.
Use a slider to change the period of oscillation of both waves and another slider to change the wavelength of the waves.
Each wave should have the same wavelength.
Revised prompt: Keep the vertical axis fixed in height, equal to the maximum possible amplitude of the third wave.
Revised prompt: Keeep the legend of the chart to the bottom so that the horizontal axis length is fixed at 640 pixels
Prompts for the second page:
Have separate sliders for the amplitudes, periods and wavelengths of wave 1 and wave 2.