Modifying existing models is one of the most powerful tools you can use to teach a student the mechanics of coding – from syntax and logic to testing and debugging. These strategies represent a variety of pedagogical approaches one can use in the classroom to bridge your students’ conceptual understanding and their coding expertise so that they are ready to begin creating their own models.
Modifying Models to Teach Keywords
Oftentimes the most effective way to deliver challenging new content is through direct instruction. The same is true for coding. However, it can be very difficult maintaining a balance between teaching new coding techniques (keywords, skills, and algorithms) and having students use those new skills. A good balance is to teach a new technique using 1 or 2 examples and then give students at least five minutes – but even up to 30 minutes – to try using that skill on their own. Often times the easiest transition is to allow them to continue modifying a program that is pretty simple but allows for creative expansion using the new keyword. For example, if you are teaching the hatch keyword you might consider having a basic ecology model and have students expand it by first having the prey animal begin hatching, then solving the problem of over population by having the predator animal begin hatching.
Flipped Modification of Models to Teach Keywords
Unfortunately, there might simply be too many coding techniques to teach. Thankfully our students are often extremely motivated and will use their own time to learn to code. Providing flipped content can be incredibly valuable in accelerating your students coding skills without sacrificing as much classroom time. Consider assigning homework that has students use the 15 Lesson sequence in the NetLogo Coding section as well as the huge selection of keyword videos located throughout the NetLogo Coding section. Most of these are best used while modifying existing models.
Investigating Code Through Walk-Throughs – Code Commentary
A powerful strategy to have students learn about content while also taking some first steps in learning to code is to have students use a program you’ve built to illustrate a natural phenomena and then go through the code line by line – commenting each line as they go. This walk-though will allow them to understand your use of keywords, syntax, and logic and understand how the behaviors of the agents are dictated by the coding elements you’ve used.
You can download this model (or Run Online) and have students fill out this Worksheet to comment the code.
Testing and Debugging Model Behavior – Fix the Code
Providing students with testing and debugging opportunities can strengthen their understanding of coding while also delivering science or math content. You might consider creating complete programs that have an included info tab but some elemental of code isn’t working right or is missing altogether. Other activities might be warmups, tickets out the door, etc. which are simply questions on a whiteboard, projected, or on slips of paper that include fragments of code containing errors which students must identify and correct.
Scaling, Calibrating, and Tuning Models
Many models make a good attempt at simulating real world phenomena but often don’t conform to the physical dimensions of the problem in the way we would like – whether it be spacial, temporal, or a range of other aspects. Taking a model and calibrating it to fit into the dimensions of the problem we are trying to solve can often be a very demanding conceptional and mathematical task.
Getting Models to Produce Usable Data
Once a model functions and is properly scaled, calibrated, and tuned, data can be extracted from it to answer questions. However, it is often difficult to determine what data we want to look at and how we want that data to be produced.
Improving Models to Solve Problems
Modifying a model can be a challenging project because students will need to understand the inner workings of the existing model, understand the direction which they want to improve the model, and use coding techniques to accomplish that goal. An example of this would be to have students expand a program which finds the slope between two points (turtles) on a line and modify it to find the distance between the two points.