Quiz 4 Info
Quiz 4 Information
Quiz details

Quiz 4 will be held on Thursday, June 22nd.

The quiz will be held at the start of class in EMA 302:
 A1 class (MTR 9:30am12pm): Quiz will be 9:30am10:00am
 A2 class (MTR 1:30am4pm): Quiz will be 1:30pm2:00pm

We will continue the class as usual after the quiz.

You must bring your BU ID to the quiz, so that we can check it when you turn in your quiz.

You will have the 30 minutes for the quiz.

You may not use any electronic devices during the quiz.

Once you leave the quiz room, you may not return, so please use the restroom ahead of time.

The quiz will include questions similar to the ones posed in class – both the clicker questions and the openresponse ones. However, these questions will not be multiplechoice. You will need to determine and write the answer without a list of options to choose from.

In addition, there will be questions that ask you to write a function or a short program, similar to the problems from the homework.
Material covered
The quiz will focus on the material that we have discussed in class from the beginning of the summer session through Tuesday, June 13th. This corresponds to the following readings:

from CS for All:
 Chapter 6: Sections 6.1, 6.2, 6.3, 6.4, 6.5 and 6.6 of our textbook, “CS For All.”
Note: You are not responsible for details from the case studies in the readings (e.g., the information about how sorting works). However, you are responsible for the programming and problemsolving concepts that those case studies were used to illustrate.
In addition, you should be familiar with concepts that were introduced in the preclass videos, inclass discussion, or on the homeworks that were not covered in the readings.
Preparing for the quiz

One way to prepare is to review the readings and lecture notes and make a summary of the key points in your own words. “Boiling down” the material in this way is a great way to ensure that you really understand the key concepts.

We also encourage you to do practice problems (see below).
When working on practice problems, try to come up with your answers on paper, rather than through a trialanderror approach on IDLE or in another programming environment. This will be give you an experience that is similar to the one that you have during the quiz.

Feel free to post questions on Piazza (using the
quiz4
tag) or to email the course account (cs111staff@cs.bu.edu
).
Additional practice problems

Create a Python class called
Triangle
. The constructor for this class should take two arguments,base
andheight
, and store those values in appropriately named attributes. In addition, you should add a method calledarea
that computes and returns the area of the triangle. (The area of a triangle is 0.5 times the product of its base and height.) For example:>>> tri = Triangle(3, 4) >>> tri.area() 6.0

Add a method to your
Triangle
class that enables you print aTriangle
object in a readable way. For example:>>> tri = Triangle(3, 4) >>> print(tri) triangle with base 3 and height 4

Add a method to your
Triangle
class that will allow you to use the==
operator to test if twoTriangle
objects are equal–i.e., if they have the same base and height. For example:>>> tri1 = Triangle(3, 4) >>> tri2 = Triangle(3, 4) >>> tri3 = Triangle(4, 3) >>> tri1 == tri2 True >>> tri1 == tri3 False

Write a function called
main
that creates three triangle objectstri1
(with base 3 and height 4),tri2
(with base 6 and height 6), andtri3
(also with base 3 and height 4). The function should print the three objects and their areas. Next, it should test whethertri1
andtri2
are equal and report the result. Finally, it should test whethertri1
andtri3
are equal and report the result. Your function should take full advantage of theTriangle
methods you have written. Here is the desired output:>>> main() tri1: triangle with base 3 and height 4 (area = 6.0) tri2: triangle with base 6 and height 6 (area = 18.0) tri3: triangle with base 3 and height 4 (area = 6.0) tri1 and tri2 are not equal tri1 and tri3 are equal

Create a Python class named
Phonebook
with a single attribute calledentries
. The constructor should initializeentries
to be a dictionary containing the following names and phone numbers:
Bob 72345, Sally 71000, John 79999. Use the names as the keys of the dictionary and the phone numbers (which you should represent asint
s) as the values. 
Add a method named
contains
to yourPhonebook
class. It should take a parametername
and returnTrue
ifname
is present in the phonebook, andFalse
otherwise. For example:>>> book = Phonebook() >>> book.contains('Foo') False >>> book.contains('Bob') True

Write another method for your
Phonebook
class callednumber_for
that takes a parametername
and returns the phone number forname
in the calledPhonebook
object. It should return1
ifname
is not found. Here is an example:>>> book = Phonebook() >>> book.number_for('Sally') 71000 >>> book.number_for('foobar') 1
Hint: Consider using your
contains
method from problem 8. 
Write another method for your
Phonebook
class calledadd_entry
that takes as parameters aname
and anumber
and adds an appropriate entry to the phonebook. For example:>>> book = Phonebook() >>> book.number_for('Turing') 1 >>> book.add_entry('Turing', 77777) >>> book.number_for('Turing') 77777
MORE TO FOLLLOW