CS 134 Midterm Solutions Fall 2009

Similar documents
CS 134 Midterm Fall 2009

CS 134 Midterm Fall 2006

CS 134 Midterm Fall 2006

// Class used to hold a list of Strings interpreted as web site addresses. public class URLList {

CS 134 Midterm Spring 2013

CS 134 Midterm Solutions Spring 2013

Final Examination May

Final Examination --- SAMPLE SOLUTIONS May

Lab 5 TOC to Me. Class Structure. IM Client Implementation --- Part 2 Due: 23:00 Monday 13 October. CS 150, Profs. Lawson and Szajda Fall 2008

A set, collection, group, or configuration containing members regarded as having certain attributes or traits in common.

ECE/CSC 570 Section 001. Final test. December 11, 2006

Programming Project. Remember the Titans

Lab 5 TOC to Me. IM Client Implementation --- Part 2

Lab 5 Classy Chat. XMPP Client Implementation --- Part 2 Due Oct. 19 at 11PM

ECE 653: Computer Networks Mid Term Exam all

CSCI 1680 Computer Networks Fonseca. Exam - Midterm. Due: 11:50am, 15 Mar Closed Book. Maximum points: 100

You Can Make a Difference! Due April 11/12 (Implementation plans due in class on 4/9)

King Fahd University of Petroleum and Minerals College of Computer Sciences and Engineering Department of Computer Engineering

Physical and Link Layers. CS144 Review Session 6 November 6 th, 2008 Roger Liao Based on slides by Ben Nham

Jaringan Komputer. Broadcast Network. Outline. MAC (Medium Access Control) Channel Allocation Problem. Dynamic Channel Allocation

Probing Questions. Chapter Accessor Methods

Sample First Midterm Exam The Questions

Multiple Access Protocols

Contention Protocols and Networks

Advantages and disadvantages

Ethernet. Introduction. CSE 3213 Fall 2011

UNIVERSITY REGULATIONS

Lab 3. A Multi-Message Reader

Questions Total Points Score

CS 123: Lecture 12, LANs, and Ethernet. George Varghese. October 24, 2006

15.4 Longest common subsequence

String Theory. Chapter Cut and Paste

Midterm Exam CSCE 232: Computer Networks Fall Instructions:

Midterm Exam II CMPSCI 453: Computer Networks Fall 2010 Prof. Jim Kurose

Faculty of Science Final Examination. Computer Science B Basics of Computer Networks

Midterm Exam #2 Solutions October 25, 2016 CS162 Operating Systems

Department of Computer Science COMP The Programming Competency Test

1 Lexical Considerations

Lexical Considerations

COMP 250 Winter 2011 Reading: Java background January 5, 2011

Midterm Exam 2B Answer key

Name: Username: I. 20. Section: II. p p p III. p p p p Total 100. CMSC 202 Section 06 Fall 2015

CS 2505 Computer Organization I

CS/ECE 374 Fall Homework 1. Due Tuesday, September 6, 2016 at 8pm

COS 126 Midterm 2 Programming Exam Fall 2012

15.4 Longest common subsequence

Lexical Considerations

CS140 Operating Systems and Systems Programming Midterm Exam

To gain experience using GUI components and listeners.

PUCPR. Internet Protocol. Edgard Jamhour E N G L I S H S E M E S T E R

CS106A Handout 18 Winter February 3, 2014 Practice Midterm Exam

Sample First Midterm Exam The Answers

Midterm #2 Exam April 26, 2006 CS162 Operating Systems

ECSE 414 Fall 2014 Final Exam Solutions

Midterm Exam #3 Solutions November 30, 2016 CS162 Operating Systems

CS/ECE 438: Communication Networks for Computers Spring 2018 Midterm Examination Online

4. Structure of a C++ program

CS244a: An Introduction to Computer Networks

Due Thursday, July 18 at 11:00AM

CSE 123: Computer Networks Fall Quarter, 2013 MIDTERM EXAM

Midterm 2 Solutions. CS70 Discrete Mathematics and Probability Theory, Spring 2009

ECE 461 Internetworking Fall Quiz 1

Invitation to Computer Science 7th Edition TEST BANK Schneider Gersting

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger

Midterm II December 4 th, 2006 CS162: Operating Systems and Systems Programming

Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY Spring Quiz III

CHAPTER 7 MAC LAYER PROTOCOLS. Dr. Bhargavi Goswami Associate Professor & Head Department of Computer Science Garden City College

FINALTERM EXAMINATION Fall 2009 CS301- Data Structures Question No: 1 ( Marks: 1 ) - Please choose one The data of the problem is of 2GB and the hard

Optimizing Finite Automata

Homework 1 Due Tuesday, January 30, 2018 at 8pm

Advanced Computer Networks. Rab Nawaz Jadoon DCS. Assistant Professor COMSATS University, Lahore Pakistan. Department of Computer Science

Networked Systems (SAMPLE QUESTIONS), COMPGZ01, May 2016

Computer Networks. 19 December This exam consists of 6 questions with subquestions. Every subquestion counts for 10 points.

COS 140: Foundations of Computer Science

Overview. Exercise 0: Implementing a Client. Setup and Preparation

One of Mike s early tests cases involved the following code, which produced the error message about something being really wrong:

About this exam review

Links, clocks, optics and radios

Activity 1 Creating a simple gradebook

UMBC CMSC 331 Final Exam

CS143 Midterm Fall 2008

CS103 Handout 42 Spring 2017 May 31, 2017 Practice Final Exam 1

First Midterm Exam September 28, 2017 CS162 Operating Systems

ITEC 350: Introduction To Computer Networking Midterm Exam #2 Key. Fall 2008

Questions Total Points Score

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #1 Examination 12:30 noon, Tuesday, February 14, 2012

MCS-378 Intraterm Exam 1 Serial #:

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012

Final Exam Computer Networks Fall 2015 Prof. Cheng-Fu Chou

Chapter 4. The Medium Access Control Sublayer. Points and Questions to Consider. Multiple Access Protocols. The Channel Allocation Problem.

CMSC 433 Section 0101 Fall 2012 Midterm Exam #1

CSE 123: Computer Networks

easel LANGUAGE REFERENCE MANUAL

CPSC 121 Some Sample Questions for the Final Exam Tuesday, April 15, 2014, 8:30AM

Computer Science 136 Spring 2004 Professor Bruce. Final Examination May 19, 2004

Getting Connected (Chapter 2 Part 4) Networking CS 3470, Section 1 Sarah Diesburg

Link Layer I: ALOHA, Time-, Frequency-, and Code Division. COS 463: Wireless Networks Lecture 4 Kyle Jamieson

CHAPTER 7 ARRAYS: SETS OF SIMILAR DATA ITEMS

Chapter 10 Error Detection and Correction. Copyright The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Transcription:

CS 34 Midterm Solutions Fall 29 This is a closed book exam. You have 9 minutes to complete the exam. There are 5 questions on this examination. The point values for the questions are shown in the table below. Your answers should fit in the space provided in the exam booklet. Paper for scrap work will be made available during the examination. Good Luck! NAME: Question Point Score 2 2 2 3 2 4 2 5 2 TOTAL I have neither given nor received aid on this examination. Signature:

) Suppose that two Ethernet stations named A and B are connected to opposite ends of a maximal length Ethernet, and that a third station C is attached to the network at some other point. Assume that A first sends a complete packet successfully, then B sends a complete packet successfully and finally, C sends a complete packet successfully. While C is finishing its transmission, A and B each decide that they would like to send another packet. In this case, A and B will both wait for C to complete the transmission of its frame. Then, A and B will both transmit and collide with one another as soon as the C s transmission completes. After this collision, A and B will both choose to delay for a random number of slot times before transmitting again, following the rules of exponential backoff. a) From what range of delay slots will each station choose before making its second attempt to transmit? What is the probability that A and B will collide during their second attempts to transmit? Each station will choose between delaying or slot times. There are a total of four equally likely pairs of delay values they might choose --- (,), (,), (,), (,). Two of these combinations lead to a second collision so the probability of a collision is /2. b) Suppose that they both choose the same delay during their second attempts to transmit so that they collide a second time. They will again choose random delay times and attempt to transmit after these delay periods are complete. In this case, what range of backoff times will they use and what is the probability that they will collide during their third attempt? Each station will choose between delaying,, 2 or 3 slot times. There are a total of 6 equally likely pairs of delay values they might choose. Four of these combinations lead to a second collision so the probability of a collision is /4. c) Suppose that they still happen to choose identical delays so that their third attempts also collide. Finally, in the fourth attempt, assume that they choose different delay periods and station A transmits successfully. The actual amount of time consumed by this entire process depends on the random delays the stations choose. What is the smallest amount of time (measured in slot times) that might elapse from the end of C s transmission to the beginning of A s successful transmission? Explain your answer. Each of the collisions described will consume one slot. In the fourth round, A can transmit immediately so that no additional delay in incurred. Since there are 3 collisions, the minimum number of time before A s transmission is 3 slot times.

d) What is the maximum amount of time (measured in slot times) that might elapse from the end of C s transmission to the beginning of A s successful transmission? Explain your answer. If we assume that in each round where a collision occurs, both stations choose the longest possible delay, then the first round will consume one slot, the second round two slots and the third round four slots for a total of 7. In the fourth round, A must delay for less time than B. The longest B can delay is 7 slots, so the longest A can delay is 6 slots. This delay gives a total of 3 slots as the maximum. e) What is the probability that the complete sequence of collisions and ultimately successful transmission events would occur and complete in the minimal time you described in your answer to part (c)? In this case, a formula like 3/4 * 7/8 * ( - /4), together with a brief explanation of the formula will probably be of more value than a single number like 3/28. After C finishes, A and B both transmit with no delay with probability. In the next round, to minimize delay, A and B must both transmit after delay. But they each can choose either delay or slot delay with probability /2. Therefore the probability that they both choose is /2 x /2 = /4. By a similar argument, the probability that they both choose slot out of the 4 options they have in the third round is /4 x /4 = /6. Finally, in round 4, A must transmit in slot. This happens with probability /8 since A has 8 choices. At the same time, for A to succeed, B must not transmit in slot. This outcome has probability ( - /8). Therefore the probability that A succeeds by transmitting in the th slot during the fourth round it /8 x ( - /8 ). Putting all of this together we get the probability of all of these things happening together is /4 x /6 x /8 x 7/8

2) This question explores how you can use what you know about Strings to solve a problem from computational biology. A strand of bacterial messenger RNA can be encoded as a long string of letters representing the four possible bases: adenine (A), guanine (G), cytosine (C), and uracil (U). For example, one short RNA strand is: UUACAUGUUAACGGACUAGGACGGAUGACACCAUAGAA Only certain parts of an RNA strand are responsible for protein synthesis-- the rest of the strand is unused while building proteins. The subsequences that are used for protein synthesis can be identified by the fact that they always begin with the triple of bases AUG, known as the start codon and end with the triple UAG, known as the stop codon. (Other stop codons exist, but we will ignore them.) The following is the example from above, rewritten to delineate the important subsequences from the junk: UUAC AUG UUAACGGAC UAG GACGG AUG ACACCA UAG AA junk start stop junk start stop junk Real strands are many thousands of bases, and the sections encoding proteins are much longer. Suppose we wish to write a method extractsequences that extracts the sequences of bases between adjacent start and stop codons in a form that would make it easy to display the results. The method takes a String composed only of the letters A, G, C, and U as a parameter, and it returns a String composed of just those subsequences of the original String that were preceded by a start codon and followed by a stop codon. Each sequence you extract should be separated from the next sequence extracted by a newline character. For example, the code String bunchofrna = "UUACAUGUUAACGGACUAGGACGGAUGACACCAUAGAA"; result.settext(extractsequences(bunchofrna)); would set the result text area to contain: UUAACGGAC ACACCA For simplicity, we will assume that a sequence never ends in the middle of a coding region, so every AUG will be matched by a UAG.

Here is one, correct implementation of extractsequences: public String extractsequences(string rna) { int start = rna.indexof( AUG ); String result = ; while (start >= ) { int end = rna.indexof( UAG, start); result = result + rna.substring(start + 3, end) + \n ; start = rna.indexof( AUG, end + 3); return result; On the following pages, you will find four programs that are similar but not identical to the program shown above. Each differs from above by a single line of code. The lines containing the changes are the ones identified by arrows. Some of these programs will function exactly like the program shown above. Others will work differently or not at all. For each program, indicate whether a) it will work like the original program, b) a syntax error will be detected as soon as you compile the program, c) the program will run, but it will not behave like the original (possibly including causing an error to occur while it runs). If there will be an error, identify the line on which it will occur and explain the nature of the error. If no error occurs, but the program behaves differently from the original, explain what would happen if it were applied to the string bunchofrna described above. We have placed a second copy of the correct code at the bottom of page 7 to make it easier to compare it to the modified versions. a) public String extractsequences(string rna) { start = rna.indexof( AUG ); String result = ; while (start >= ) { int end = rna.indexof( UAG, start); result = result + rna.substring(start + 3, end) + \n ; start = rna.indexof( AUG, end + 3); return result; BlueJ (or any other Java compiler) will reject this method as a syntax error because the variable start is not defined. (Alternately, if start was defined as an instance variable its use by this method is likely to cause a program error).

b) public String extractsequences(string rna) { int start = rna.indexof( AUG ); String result = ; while (start >= ) { int end = rna.indexof( UAG, start); result = result + rna.substring(start, end) + \n ; start = rna.indexof( AUG, end + 3); return result; Since indexof sets start to the position of the first character of the substring AUG, leaving the + 3 out of the invocation of substring will make it include this start codon at the beginning of each sequence it extracts: AUGUUAACGGAC AUGACACCA c) public String extractsequences(string rna) { int start = rna.indexof( AUG ); String result = ; while (start >= ) { int end = rna.indexof( UAG, start + 3); result = result + rna.substring(start + 3, end) + \n ; start = rna.indexof( AUG, end + 3); return result; The original version of this line asked indexof to start the search at the first character of the start codon AUG. The earliest a match for UAG could be found was after this start codon. As a result, adding 3 to the start position will not change the results the code produces (but might save a little time)

d) public String extractsequences(string rna) { int start = rna.indexof( AUG ); String result = ; while (start >= ) { int end = rna.indexof( UAG, start); result = result + rna.substring(start + 3, end) + \n ; start = rna.indexof( AUG, start); return result; At the last statement of this loop, we know that start indicates the position at which the previous use of indexof found a copy of the start codon AUG. As a result, if we ask it to find the same start codon starting at this position, it will return the current value of start so that the statement has no effect. This means that the program will get stuck in an infinite loop repeatedly processing the first copy of the start codon. ------------------------------------------------------------- // This is a copy of the correct code shown at the top of page 5 // provided to make it possible to compare it to the alternatives b, // c, and d without having to flip between pages // public String extractsequences(string rna) { int start = rna.indexof( AUG ); String result = ; while (start >= ) { int end = rna.indexof( UAG, start); result = result + rna.substring(start + 3, end) + \n ; start = rna.indexof( AUG, end + 3); return result;

e) Reading genetic sequences is made much easier when spaces are added between each codon. Please write a method insertspaces that takes a String composed only of the letters A, G, C, and U as a parameter and returns a String with a space added between each codon. For example, should return insertspaces( UUAACGGAC ) UUA ACG GAC You may assume that the length of the input is divisible by three. public String insertspaces(string rna) { String result = ; while ( rna.length() > 3 ) { result = result + rna.substring(, 3 ) + ; rna = rna.substring( 3 ); return result + rna;

3) On the following two pages, you will find the definitions of two classes designed to implement a very simple IM program. A sample of the user interface the program will present is shown below: The program is designed to provide a truly instant form of instant messaging. While the program is running, its user can enter his or her own screen name and password, a message, and the screen name of a person to whom the message should be sent. Then, when the user clicks the Send button, the program will log in to AOL, send the message, and immediately log out. Unfortunately, the program isn t quite complete. In particular, the declarations of several variables and/or formal parameters are missing. The names whose declarations are missing are listed below. toaol unnormalized message send To help you answer this question, we have highlighted the references to these variable in bold face within the code. What we want you to do is complete the program by adding the missing declarations. We have placed shaded bubbles at all the points in the program where the missing declarations might go. These bubbles can be found after the existing instance variables and at the locations where you might place local variable declarations at the start of each method. In addition, we left room between the parentheses in method headers for you to insert formal parameter declarations as necessary. You will not need to fill in all of the bubbles we have provided, but you should not need to place declarations anywhere outside these bubbles. Each name should be declared as locally as possible. That is, if the program would work if a given name was declared either as a local variable or an instance variable, then you should declare it as a local variable.

/* * A really instant Instant Messaging program */ public class Saim extends GUIManager { // Change these values to adjust the size of the program's window private final int WINDOW_WIDTH = 65, WINDOW_HEIGHT = 5; // Dimensions for fields used to hold login information and messages private final int LOGIN_INFO_WIDTH = 5; private final int TEXT_WIDTH = 4; // GUI components used for login information private JTextField screenname = new JTextField( LOGIN_INFO_WIDTH); private JTextField password = new JPasswordField( LOGIN_INFO_WIDTH ); // Used to enter screen name of destination for message private JTextField buddyname = new JTextField( LOGIN_INFO_WIDTH ); // Used to enter the message being sent private JTextField message = new JTextField( TEXT_WIDTH ); public Saim() { JButton send; this.createwindow( WINDOW_WIDTH, WINDOW_HEIGHT ); JPanel curpanel; // Create a pane containing fields for screenname and password curpanel= new JPanel(); curpanel.add( new JLabel( "Screen Name:" ) ); curpanel.add( screenname ); curpanel.add( new JLabel( " Password:") ); curpanel.add( password ); contentpane.add( curpanel ); // Create a pane for the message area and its label curpanel = new JPanel(); curpanel.add( new JLabel( "Message " ) ); curpanel.add( message ); contentpane.add( curpanel ); // Create a panel containing buddy list and send button curpanel = new JPanel(); curpanel.add( new JLabel( "Buddy Name" )); curpanel.add( buddyname ); send = new JButton( "Send Message" ); curpanel.add( send ); contentpane.add( curpanel );

// Code to respond when GUI buttons are pressed public void buttonclicked( JButton which ) { FLAPConnection toaol; // Attempt to create a connection and login toaol = new FLAPConnection( normalize(screenname.gettext()) ); toaol.out.printpacket( new TOCSignonPacket( normalize(screenname.gettext()), password.gettext())).tostring() ); String response = toaol.in.nextpacket(); // Determine if connection was accepted if ( response.startswith( "SIGN_ON" ) ) { toaol.out.printpacket( "toc_init_done" ); // send the message toaol.out.printpacket( new TOCSendIMPacket( normalize(buddyname.gettext()), message.gettext()).tostring() ); else { message.settext( "Unable to connect: " + response ); toaol.close(); String unnormalized private String normalize( ) { String normalized = unnormalized.tolowercase(); while ( normalized.contains( " " ) ) { int blankpos = normalized.indexof( " " ); normalized = normalized.substring(, blankpos) + normalized.substring(blankpos+); return normalized; public class TOCSendIMPacket { private String buddy; private String message; public TOCSendIMPacket( String screenname, String text ) { buddy = screenname; message = text; public String tostring( ) { return "toc2_send_im " + buddy + " \"" + message + "\"" ;

4) Consider the three messages shown in the table below. Each of these messages is composed of the letters g, i, n, o, r, and s. The table shows how often each of these letters appears in each message. (To keep the problem simple, we will ignore the spaces that occur in the messages.) g i n o r s snoring gorgons 3 3 3 2 2 rigging rigors 4 3 3 gross gnosis 2 2 4 Below, you will find four possible Huffman trees labeled i, ii, iii, and iv i. iii. S I N G G N O R I R S O ii. iv. O N G N G S I R S O R I a) Show the binary sequence that would be used to encode the word snoring using tree i. (i.e. In the table below, fill in the correct binary code for each letter in the word.) LETTER S N O R I N G CODE

b) As you know, at certain points in the construction of a Huffman tree, you can choose different ways to proceed. As a result, a given phrase may have several, distinct Huffman trees. In fact, two of the trees shown are both valid Huffman trees for the same phrase. Identify the phrase and the two trees that could be used to generate Huffman codes for this phrase. Trees ii and iv are both possible Huffman trees for the message snoring gorgons. c) Suppose that a message composed of the five letters a, b, c, d, and e is encoded using a Huffman code. Assume that the message contains more a s than b s, more b s than c s, more c s than d s, and more d s than e s. If the binary code used to represent an e is, what codes must be used for the other four letters? a =, b =, c =, d =

5) For this problem, we would like you to consider two coding schemes in which the amount of time between transitions rather than the presence or absence of energy flow is used to distinguish s and s. Morse Binary. The first scheme is nearly identical to the use of dots and dashes in Morse Code. Basically, we will use dots to represent s and dashes to represent s. To be more precise, we will represent a by turning the power on for time unit and then off for time unit. We will represent a by turning the power on for 2 time units and then off for time unit. As an example, the message would be transmitted using a signal of the form: Note, that with this scheme, the duration of a bit is not fixed. It takes longer to send a than to send a. We will call this scheme Morse Binary. Transition Spacing Coding. The second scheme assumes that every transition represents the beginning of a new bit and simply uses the time between transitions to determine whether the bit being sent is a or a. In particular, if only one time unit elapses between two transitions, that signal will be interpreted as a, but if two time units elapse between a transition, then that signal will be interpreted as a. For example, the signal shown above would represent the sequence if interpreted using this scheme. We will call this scheme Transition spacing coding. a) We have seen that the signal above could be interpreted either as an example of Morse Binary or of Transition spacing coding. Could it also be interpreted as an example of on-off keying? If so, what sequence of bits would it represent? If not, why not? In answering this question, assume that you know that the signal begins at the leftmost edge of the diagram (i.e. don t worry about start bits or other framing issues).

b) Could the signal shown above be interpreted as an example of Manchester encoding? If so, what sequence of bits would it represent? If not, why not? NO. Given that the signal begins at the left edge of the diagram, we know that the next first transition represents the beginning of a bit-time and that the second (downward) transition must therefore be the middle of the bit time and the third the end of the bittime. If this is true, following the rules of Manchester would require that there be a transition at the middle of every other bit-time. In the diagram, however, the signal remains at high for the duration of the next bit-time. Even if you were willing to assume the signal actually started at low shortly before what the diagram shows, there is no way to divide the signal shown into equal duration bittimes in such a way that a transition occurs in the middle of each bit. c) Consider the signal Indicate which of the four encoding schemes (on-off keying, Manchester, Morse Binary, and Transition spacing) might generate this signal and what sequence of binary digits would it be used to encode. Briefly justify your answer. ON-OFF KEYING = TRANSITION SPACING = MORSE BINARY - Impossible because the 3rd point where the signal is low is too long. All inter-bit lows are the same duration in this scheme. MANCHESTER - It depends. If you assume the signal starts at the left edge of the diagram, then it is invalid because the third point where the signal becomes high lasts too long (there is a mid-bit transition missing). If, on the other hand, you are willing to assume the first transition is the middle of a, then the signal can be interpreted as.

d) One advantage of using Manchester encoding rather than on-off keying is that it is possible for a receiver to automatically adjust its clock s frequency to remain in synchronization with the transmitter when Manchester encoding is used. Would this be possible with Morse binary? Briefly explain your answer. Yes. Because the pauses between bits are of fixed length and occur regularly (between every pair of bits) regardless of the sequence of s and s being transmitted, the receiver could measure these pauses and use these measurements to remain in synchronization with the sender. (Note, I am assuming here that a good approximation of the transmission rate is agreed on between the sender and receiver before communication is attempted. The only issue is to adapt if the sender or receiver s clock is slightly inaccurate.) e) We have seen that framing schemes are essential to enable a receiver to identify the beginning and end of a signal when on-off keying. With Manchester encoding, some form of start bit is essential, but it is actually possible for the receiver to identify the end of a message by simply detecting the lack of transitions in the signal. How would the use of Morse binary impact the framing issue? Would a start bit or some other form of start sequence be required to detect the beginning of a transmission. Would it be necessary to use fixed packet sizes or to include a packet length field to identify the end of a transmission? Justify your answer. No start bit would be required for Morse binary because the absence of a signal is not used to encode either a or a. It is only used to separate s for s. In practice, it would be unwise to rely on this unless some minimum message length was required. Otherwise, a short burst of static might be interpreted as a message containing just a single or a single.