'15-'16 Sending Binary Messages with the Internet Simulator

I will use this lesson for our first block session of the year. I will give students some to time to experiment before showing the video. One of my sections will respond well to the competition but I may de-emphasize it for the others.

I think this is a great exercise which will create several “aha!” moments with students. The idea that the wire only gets to occupy one state and that the send/receiver need to synchronize their actions to keep from misunderstanding the messages that are being sent, is one. The issues surrounding that synchronization will also generate frustration as well, especially when I move students away from each other so they cannot communicate with one another verbally, but have to rely on their protocol instead.

I was really looking forward to this lesson except when I had the students connect to the Simulator, of course technology doing what it does, the server was incredibly slow and a lot of my students were having trouble getting the Simulator to be responsive. The idea is great and I will definitely be trying it again, hopefully with a little more luck in getting the Simulator to connect with no issues.

Thank you so much for reporting this issue. All of Code.org (so all of our courses on Code Studio, not just the Internet Simulator/CSP) experienced a partial outage this morning that resulted in extremely high page load times, or some pages not loading at all. The issue is resolved now, and we sincerely apologize for the inconvenience it caused you and your class! We’re also taking steps to make sure this doesn’t happen again.

Please do continue to report issues when they happen – we really appreciate it.

Thank you,
Sarah

OK - In the summer PD, my lesson didn’t use the simulator so I have never set it up for a class. Do I need to do something that sets up my class in Internet Simulator so that they only see each other? I’m teaching this next week so any quick help would be appreciated!

Hi!

The only thing you need to do is have your students join a section you’ve created. Brook created a how to video that you can watch here for how to do this: http://forum.code.org/t/setting-up-your-csp-section-in-code-studio/1670

Once your students are in a section together, you simply send them all to the same internet simulator url (depending on what lesson you’re on) and they’ll be able to see each other. By having your students in your section you’ll also be able to access things like their responses to assessment questions.

Hope that helps! Let us know if you run into any trouble.

-Sarah

1 Like

Sarah,

Thanks! I didn’t realize (or forgot!) that’s all I had to do. I have my section set up so the class should be good to go!

I am looking forward to teaching this lesson next week. The lesson is set up to introduce the students to the concept and then let them explore it themselves to give them a more detailed and in-depth understanding. Discovering things on your own (or hands-on learning) is great.

I really enjoyed this lesson, and I think my students did as well. I would, however, highly recommend watching the Teaching Tips video before jumping into this. I don’t think I could have visualized how this might have played out were it not for the example that video provided. That said, I did change up a few things. For one, I had students type out their “question” as part of their protocol (on the Activity Guide). That’s probably unconventional, but I felt that we needed to build a little more context around what we were doing. I also found that my “typical” students (I have a mix of AP and non-AP kids) needed quite a bit of scaffolding. However, once they got it, they were quite engaged. Once I had everyone on track, my primary emphasis became “let’s tighten our timings”. I told them they should see if they can sustain their pace over four consecutive runs. If their logs reflected that the data transferred as intended, great. If not, they should slow down and reattempt (and revise their protocol). I also had them switch protocols with another pair (as someone else here suggested) to see if their results could be reproduced by another party. It was fun.

One thing has me a little confused. When I say they need to “revise their protocol,” it just doesn’t sound right (to me). I don’t have any CS background, but it sounds more like we’re drafting a “specification” or developing a “standard”, and the protocols are more the particular criteria that must be met in order for the thing to work. I’m guessing I’m way off on this, so if anyone can offer clarification, that would be helpful.

Hi Joe! I think protocol, specification, and standards can be thought of more or less synonymously, but “protocol” is the CS vocab word that is important to use. A protocol is just a set of rules (or specifications) around how to communicate some kind of information. When a “protocol is revised” it means that the rules (or specifications) need to be modified to more effectively or efficiently make sure that the information is unambiguously communicated. Hopefully that clarifies a bit, and makes “revising a protocol” feel like an appropriate phrase to use.

Thanks!
Sarah

This lesson went really well for my students. The “racing” to see who could get the fastest bit rate was a good motivator. Another group created a protocol that could encode written messages like the word “Math” or “apple” - they did this without prompting, but I think this could be an extension given to some students.

Thanks, Sarah! That does help. I sometimes get hung up on things like that.

1 Like

I agree that the concept needs to be explained more. My kids were having trouble so I used the model of a light switch. It has 2 to the n (1) or 2x1 possible messages: State A (on) and State B (off). I did this with them. Then we went to a light with two switches and wrote the possible messages. 2 to the n (2), or 2x2 or 4. We wrote them out. Then we did 3 switches and wrote out the possibilities. I think the lightbulb went off then. We did our devices again and they all got it.

1 Like

Can someone please explain the answer to the following question.
A binary message consisting of four bits was sent to you by a friend. The message was supposed to be ABAB. Unfortunately, your friend sent the message at 1/2 the bit rate you agreed upon. What message did you receive instead?

How is the answer AABB?

Hi. So a source of confusion here is probably the phrase “bits per second”. Up to this point in the course students are probably thinking of how many seconds it takes to send a bit. For example, if I send 1 bit every 2 seconds, that’s 0.5 bits-per-second. This is confusing. So, as the writer of this question, I agree it should be re-worded to better fit students’ experience at this point in the course. If the problem were reworded this way it might be clearer.

“…Unfortunately your friend sent one bit every 2 seconds, but you read the wire once every second. What message did you receive?”

Then it might be easier to see the timeline events:

1:A--------B--------A--------B
2:^—^---^----^—

Does that make it more clear?

UPDATE: I have fixed the wording of this question in Code Studio. It should automatically push to the live version tomorrow (Wed. Sept. 23) Thanks for pointing it out.

1 Like

Thank you now I think I definitely get it. If you read the message to fast then you are reading the same bit sent twice?

The simulator is a great tool I had a hard time with it initially but now I am more confident with each use.

That’s actually much better way of putting it! Thanks.

Thus simulator drove my students a lit bunkers at first! However, they got used to using it and now they are okay with it!