Size: px
Start display at page:

Download ""

Transcription

1 CS 11 Project #6 Due THURSDAY, December 7 th, 11:59pm. Classes and Exceptions Background: Classes allow us to define new types for Python. We can first think of a class as defining a new container instead of a list, tuple, set, or dictionary, we can have our own collection of values, each with a chosen name rather than an index/key. We can then read out a value or update a value, much like reading or replacing the values in a list or dictionary. But we can also put methods in a class definition, giving us a way to specify the exact ways we should interact with values of this new type. Once we have created a class definition, we can create as many objects of the new type as we want and use them in our programs. We can create entirely new types during the design phase of writing a program. This enables us to think in terms of types (and instances of types) that better model what we see in the real world, instead of endlessly relying on lists or dictionaries (and having to remember exactly how we intended to use those things as proxies for the values we actually had in mind). Exceptions allow us to recover from unusual events some unavoidable (user types in bad file name or bad input in general), some unexpected (such as IndexErrors when stepping through a list). Without exceptions, we tend to program in an "ask permission, then attempt" style of calculation. But using exceptions, we can instead program in a "try it first, beg for forgiveness" approach by writing code that specifies how to recover from exceptions that we allowed to occur. Project Basics document: Project Six tester file: Grading Rubric There are 105 test cases, each worth one point. There's no specific function identified as the extra credit. if you don't comment your code or submit it correctly, we might deduct up to 10 points. if you use globals, we might deduct up to 10 points. if you import unauthorized things, you might lose all points for related test cases. What's Allowed? As long as you don't import anything, you can use anything built-in or that you create. Now that we're really writing our own datatypes, the built-ins aren't really designed to solve our quite-specific problems! Just as we used to say "add your own helper functions and call them", you can also add your own helper methods and use them. Task We will implement some basic classes and method to manage invitations and responses for planning a party. An Event can add/discard Invitations, and can receive Responses. By calling the methods, someone could managd their attendees list for their party. 1

2 Notes / Assumptions / Requirements Don't import anything, and you can use all built-ins/methods that are otherwise available. J adding definitions: You may add additional methods and functions in support of your solution. displaying things: str and repr are used by many other places in Python to get a string representation of the object. Specifically, str() calls str, and repr() calls repr, on any objects they receive as arguments. str often generates a human-centric representation, appropriate for a human reading what is present. repr often generates a Python-centric representation. The goal of repr is actually to have a string that could be evaluated to re-generate an identical object. In general, we would quite prefer it to look like a valid constructor call, if possible. Ultimately, we can have the same representation in str and repr if we'd like; in fact, when we didn't explicitly describe two different string representations for str and repr to return, we can define one in terms of the other, like this: def repr (self): return str(self). Just remember the original intent of str vs repr. It's good practice to define init, str, and repr immediately before writing any extra methods in a Python class at a minimum, and perhaps also eq as well. what to return? Many methods don't specify a return value, and thus they return None after modifying the object. handling exceptions: notice where we create exception types, and where we catch those exceptions. Be sure you don't catch the exception too early, or when not requested! When testing smaller parts of your code, it may be possible and even expected/required that specific inputs to a function/method will cause an exception to propagate (crash), rather than returning normally with a return value. We could extend this project to a full program with user interactions; this top-level layer of code would be a great place to catch more exceptions and ask for decisions and responses whenever we catch certain exception types. Since we're not writing the larger program that was described, there's no menu and user interaction present to do this particular style of interaction. testing individual methods: you can also narrow down the focus of our tester by feeding it the name of a class (which only runs the init/str/repr/eq/lt kinds of tests), or the method name of things that are needed in a particular class; this is the Event class. We had to manually create this listing, and it's how the test cases were named. Here is the full list of test batches you can select: o classes: Invitation, Response, InviteNotFoundError, TooManyError, Event o methods: find_invite, pop_invite, add_invite, find_response, pop_response, read_response, count_attendees, count_rejections, max_attendance, count_pending, rescind_invitation o for example: demo$ python3 tester6p.py Event Response find_invite pop_invite

3 Required Classes Working through the classes in the given order is the simplest path to completion. Be sure to complete the init/str/repr/eq/lt definitions before moving on to other classes that use them. class Invitation: def init (self, name, num_invited): create/initialize instance variables for name and num_invited. Assume num_invited is a positive int. def str (self): create/return a string as in this example: "Invitation('Alice', )" def repr (self): create/return a string identical to the str output. def eq (self, other): determine if this object (self) is equivalent to other. Two Invitations are considered equal if they have the same name and same number of invited people. def lt (self, other): this is the "less than" method. Return the boolean answer of if self<other. First compare names, then num_invited if needed, to determine if self<other. Examples in the test cases. o By providing this method,.sort()/sorted() can sort lists of Invitations. class Response: def init (self, name, ans, num_attending): create/initialize instance variables for all three non- self parameters. Assume ans is a bool and num_attending is a non-negative int. def str (self): create/return a string as in this example: "Response('Alice',, )" def repr (self): create/return a string identical to the str output. def eq (self, other): determine if this object (self) is equivalent to other. Two Responses are considered equal if they have the same values for all instance variables. def lt (self, other): this is the "less than" method. Return the boolean answer of if self<other. First compare names, then ans if needed, then num_attending if needed, to determine if self<other. Examples in the test cases. class InviteNotFoundError(LookupError): Be sure to include the (LookupError) portion above in your class declaration, so that this is an extension of the LookupError class (with all the exception properties that implies). def init (self, name): create/initialize instance variable for name. def str (self): create/return a string as in this example: "no invite for 'Alice' found." def repr (self): create/return a string as inthis example: "InviteNotFoundError('Alice')" def eq (self, other): determine if this object (self) is equivalent to other (both have same name). class TooManyError(ValueError): Be sure to include the (ValueError) portion above in your class declaration, so that this is an extension of the ValueError class (with all the exception properties that implies). def init (self, num_requested, num_allowed): create/initialize instance variables for both numbers. Assume that num_requested > num_allowed. Assume both are non-negative ints. def str (self): create/return a string as in this example: "too many: requested, 3 allowed." def repr (self): create/return a string as in this example: "TooManyError(5, 3)" def eq (self, other): determine if this object (self) is equivalent to other (both have same instance variable values). 3

4 class Event: def init (self, title, invites=none, responses=none): create/initialize instance variables for title, invites, and responses. When invites or responses is None, use an empty list as the value. The incoming lists of invites and responses might not have been sorted, but must be sorted as part of this constructor. def str (self): create/return a string similar to: """Event('party', [], [])""" Hint: when obtaining strings for the lists of invites/responses, how can you rely upon other str definitions to make this a short/trivial method to write? def repr (self): create/return a string identical to the str output. def eq (self, other): determine if this object (self) is equivalent to other (both have same instance variable values). find_invite(self, name): retrieve the Invitation by that name, and return a reference to that Invitation object. When no such invitation is found, this method will raise an InviteNotFoundError. pop_invite(self, name): retrieve and remove the invitation by the given name from the list of invites, and return it. Any Responses of the same name should be discarded. When no such invitation is found, this method will raise an InviteNotFoundError. add_invite(self, inv): add this invitation to the event's list of invites; the list must be sorted before returning. If there is already an invitation by that name, discard the previous one. Hint: use sort(). find_response(self, name): retrieve the Response by that name, and return a reference to that Response object. When no such response is found, this method will raise a LookupError such as the following: "no Response found with name='alice'." pop_response(self, name): retrieve and remove the response by the given name from the list of responses, and return it. When no such response is found, it will raise a LookupError as follows: "no Response found with name='alice'." read_response(self, response): check the response, and possibly add it to the list of responses, count_attendees(self): return how many people are currently attending, according to the responses list. count_pending(self): return how many inviteds' invitations have no corresponding response. max_attendance(self): return the highest number of attendees, if all remaining unanswered invitations according to the following rules: o If the name wasn't on the invitation list, raise an InviteNotFoundError out of the method. o When the response indicates more attending than invited, raise a TooManyError out of the method. o When the previous two errors are avoided, add response to the list (removing any old ones by that name) o The responses list must be sorted before returning. o When the response indicates not attending, replace its num_attending with 0. responded 'yes' with the full number of invited. count_rejections(self): Count how many responses indicated not coming (how many invited people are not coming, not just how many rejection responses were received some are "no" responses, others are bringing less than invited). All responses should have been validated when added, so if a response has no associated invitation, behavior is undefined (you don't have to consider the situation, and whatever your program does in these situations is acceptable; this is the normal idea of "undefined behavior", look for it in specs in the future!). rescind_invitation(self, name): we've decided a person is no longer invited to our party; find and remove the invitation by that name from this event, as well as any response they may have sent. This method raises no errors when invitations or responses weren't found. Hint: use exception handling to make this a simple function.

5 Example Session i = Invitation("Alice", ) i. str () "Invitation('Alice', )" i. repr () "Invitation('Alice', )" i. eq (Invitation("Alice", )) i. lt (Invitation("Bob", 1)) i. lt (Invitation("Alice", 3)) i. lt (Invitation("Alex", 3)) r = Response("Alice",,) str(r) "Response('Alice',, )" repr(r) "Response('Alice',, )" r == Response("Alice",,) r == Response("Bob",,) r < Response("Bob",,) r < Response("Alice",,) r < Response("Alice",,) = Event("party",[Invitation("Alice", ), Invitation("Bob", ), Invitation("Alex", 3)], [Response("Alice",,0), Response("Alex",,)]) Invitation('Alice', ), Invitation('Bob', )], [Response('Alex',, ), Response('Alice',, 0)]).find_invite("Alice") Invitation('Alice', ).pop_invite("alice") Invitation('Alice', ) Invitation('Bob', )], [Response('Alex',, )]).add_invite(invitation("allen", 3)) [Response('Alex',, )]).find_response("alex") Response('Alex',, ).pop_response("alex") Response('Alex',, ) []).read_response(response("allen",,)) [Response('Allen',, )]).read_response(response("alex",,1)) [Response('Alex',, 0), Response('Allen',, )]).count_attendees().count_pending().max_attendance().count_rejections().rescind_invitation("allen") Invitation('Bob', )], [Response('Alex',, 0)]) # exception related ie = InviteNotFoundError("Alice") str(ie) "no invite for 'Alice' found." ie == InviteNotFoundError("Bob") raise ie main.invitenotfounderror: no invite for 'Alice' found. te = TooManyError(,3) str(te) 'too many: requested, 3 allowed.' te == TooManyError(,3) raise te main.toomanyerror: too many: requested, 3 allowed..find_invite("patrick") main.invitenotfounderror: no invite for 'Patrick' found..pop_invite("patrick") main.invitenotfounderror: no invite for 'Patrick' found..find_response("patrick") LookupError: no Response found with name='patrick'..pop_response("patrick") LookupError: no Response found with name='patrick'..read_response(response("patrick",,3)) main.invitenotfounderror: no invite for 'Patrick' found..read_response(response("bob",,100)) main.toomanyerror: too many: 100 requested, allowed..rescind_invitation("patrick") Invitation('Bob', )], [Response('Alex',, 0)])

CS 1110 Final, December 8th, Question Points Score Total: 100

CS 1110 Final, December 8th, Question Points Score Total: 100 CS 1110 Final, December 8th, 2016 This 150-minute exam has 8 questions worth a total of 100 points. Scan the whole test before starting. Budget your time wisely. Use the back of the pages if you need more

More information

CSE : Python Programming. Homework 5 and Projects. Announcements. Course project: Overview. Course Project: Grading criteria

CSE : Python Programming. Homework 5 and Projects. Announcements. Course project: Overview. Course Project: Grading criteria CSE 399-004: Python Programming Lecture 5: Course project and Exceptions February 12, 2007 Announcements Still working on grading Homeworks 3 and 4 (and 2 ) Homework 5 will be out by tomorrow morning I

More information

CS 1110 Final, December 8th, Question Points Score Total: 100

CS 1110 Final, December 8th, Question Points Score Total: 100 CS 1110 Final, December 8th, 2016 This 150-minute exam has 8 questions worth a total of 100 points. Scan the whole test before starting. Budget your time wisely. Use the back of the pages if you need more

More information

CSC148: Week 1

CSC148: Week 1 CSC148: Week 1 http://www.cdf.utoronto.ca/~csc148h/summer/ Sophia Huynh Summer 2018 1 Outline Introduction Object-Oriented Design 2 Your instructor Sophia Huynh Master's Student Undergrad was done at UofT

More information

PREPARING FOR THE FINAL EXAM

PREPARING FOR THE FINAL EXAM PREPARING FOR THE FINAL EXAM CS 1110: FALL 2017 This handout explains what you have to know for the final exam. Most of the exam will include topics from the previous two prelims. We have uploaded the

More information

Exceptions CS GMU

Exceptions CS GMU Exceptions CS 112 @ GMU Exceptions When an unrecoverable action takes place, normal control flow is abandoned: an exception value crashes outwards until caught. various types of exception values can be

More information

PREPARING FOR PRELIM 2

PREPARING FOR PRELIM 2 PREPARING FOR PRELIM 2 CS 1110: FALL 2012 This handout explains what you have to know for the second prelim. There will be a review session with detailed examples to help you study. To prepare for the

More information

Lecture 21. Programming with Subclasses

Lecture 21. Programming with Subclasses Lecture 21 Programming with Subclasses Announcements for This Lecture Assignments Prelim 2 A4 is now graded Mean: 90.4 Median: 93 Std Dev: 10.6 Mean: 9 hrs Median: 8 hrs Std Dev: 4.1 hrs A5 is also graded

More information

CS61A Lecture 32. Amir Kamil UC Berkeley April 5, 2013

CS61A Lecture 32. Amir Kamil UC Berkeley April 5, 2013 CS61A Lecture 32 Amir Kamil UC Berkeley April 5, 2013 Announcements Hog revisions due Monday HW10 due Wednesday Make sure to fill out survey on Piazza We need to schedule alternate final exam times for

More information

Exceptions & a Taste of Declarative Programming in SQL

Exceptions & a Taste of Declarative Programming in SQL Exceptions & a Taste of Declarative Programming in SQL David E. Culler CS8 Computational Structures in Data Science http://inst.eecs.berkeley.edu/~cs88 Lecture 12 April 18, 2016 Computational Concepts

More information

Try and Error. Python debugging and beautification

Try and Error. Python debugging and beautification Try and Error Python debugging and beautification What happens when something goes wrong Catching exceptions In order to handle errors, you can set up exception handling blocks in your code. The keywords

More information

Lecture 18. Classes and Types

Lecture 18. Classes and Types Lecture 18 Classes and Types Announcements for Today Reading Today: See reading online Tuesday: See reading online Prelim, Nov 6 th 7:30-9:30 Material up to next class Review posted next week Recursion

More information

Iterators & Generators

Iterators & Generators Iterators & Generators Sequences A sequence is something that you can: Index into Get the length of What are some examples of sequences? Sequences We ve been working with sequences all semester! Examples:

More information

MITOCW watch?v=flgjisf3l78

MITOCW watch?v=flgjisf3l78 MITOCW watch?v=flgjisf3l78 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free. To

More information

Skill 1: Multiplying Polynomials

Skill 1: Multiplying Polynomials CS103 Spring 2018 Mathematical Prerequisites Although CS103 is primarily a math class, this course does not require any higher math as a prerequisite. The most advanced level of mathematics you'll need

More information

CS 1110 Final, December 17th, Question Points Score Total: 100

CS 1110 Final, December 17th, Question Points Score Total: 100 CS 1110 Final, December 17th, 2014 This 150-minute exam has 8 questions worth a total of 100 points. Scan the whole test before starting. Budget your time wisely. Use the back of the pages if you need

More information

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration Who am I? I m a python developer who has been working on OpenStack since 2011. I currently work for Aptira, who do OpenStack, SDN, and orchestration consulting. I m here today to help you learn from my

More information

Assignment 7: Due Wednesday May 11 at 6pm UPDATES on Monday May 9

Assignment 7: Due Wednesday May 11 at 6pm UPDATES on Monday May 9 CS1110 Spring 2016 Assignment 7: Due Wednesday May 11 at 6pm UPDATES on Monday May 9 You must work either on your own or with one partner. If you work with a partner, you and your partner must first register

More information

CS 1110 Final, December 16th, 2013

CS 1110 Final, December 16th, 2013 CS 1110 Final, December 16th, 2013 This 150-minute exam has 8 questions worth a total of 100 points. Scan the whole test before starting. Budget your time wisely. Use the back of the pages if you need

More information

Programming Languages ML Programming Project Due 9/28/2001, 5:00 p.m.

Programming Languages ML Programming Project Due 9/28/2001, 5:00 p.m. Programming Languages ML Programming Project Due 9/28/2001, 5:00 p.m. Functional Suite Instead of writing a single ML program, you are going to write a suite of ML functions to complete various tasks.

More information

Due Sunday November 12th, 11:59pm. Project Basics document (part of assignment):

Due Sunday November 12th, 11:59pm. Project Basics document (part of assignment): CS 112 Project #5 Due Sunday November 12th, 11:59pm. Dictionaries and File I/O Background: The purpose of this assignment is to explore dictionaries and file reading and writing. We will be reading in

More information

Python debugging and beautification

Python debugging and beautification Python debugging and beautification #!/usr/bin/env python # # # THIS CODE DOES NOT WORK import sys def read(a): myfile = open(a,'r'): for i in myfile: yield i myfile.close() def count_chars(a): sum = 0

More information

PREPARING FOR PRELIM 1

PREPARING FOR PRELIM 1 PREPARING FOR PRELIM 1 CS 1110: FALL 2012 This handout explains what you have to know for the first prelim. There will be a review session with detailed examples to help you study. To prepare for the prelim,

More information

printf( Please enter another number: ); scanf( %d, &num2);

printf( Please enter another number: ); scanf( %d, &num2); CIT 593 Intro to Computer Systems Lecture #13 (11/1/12) Now that we've looked at how an assembly language program runs on a computer, we're ready to move up a level and start working with more powerful

More information

CIS 121 Data Structures and Algorithms with Java Spring 2018

CIS 121 Data Structures and Algorithms with Java Spring 2018 CIS 121 Data Structures and Algorithms with Java Spring 2018 Homework 2 Thursday, January 18 Due Monday, January 29 by 11:59 PM 7 Required Problems (85 points), and Style and Tests (15 points) DO NOT modify

More information

Last Name: First: Netid: Section. CS 1110 Final, December 17th, 2014

Last Name: First: Netid: Section. CS 1110 Final, December 17th, 2014 CS 0 Final, December 7th, 204 SOLUTION This 50-minute exam has 8 questions worth a total of 00 points. Scan the whole test before starting. Budget your time wisely. Use the back of the pages if you need

More information

6.01, Spring Semester, 2008 Assignment 3, Issued: Tuesday, February 19 1

6.01, Spring Semester, 2008 Assignment 3, Issued: Tuesday, February 19 1 6.01, Spring Semester, 2008 Assignment 3, Issued: Tuesday, February 19 1 MASSACHVSETTS INSTITVTE OF TECHNOLOGY Department of Electrical Engineering and Computer Science 6.01 Introduction to EECS I Spring

More information

1 of 5 5/11/2006 12:10 AM CS 61A Spring 2006 Midterm 2 solutions 1. Box and pointer. Note: Please draw actual boxes, as in the book and the lectures, not XX and X/ as in these ASCII-art solutions. Also,

More information

Lecture #12: Quick: Exceptions and SQL

Lecture #12: Quick: Exceptions and SQL UC Berkeley EECS Adj. Assistant Prof. Dr. Gerald Friedland Computational Structures in Data Science Lecture #12: Quick: Exceptions and SQL Administrivia Open Project: Starts Monday! Creative data task

More information

CS Exam 1 Review Suggestions

CS Exam 1 Review Suggestions CS 235 - Fall 2015 - Exam 1 Review Suggestions p. 1 last modified: 2015-09-30 CS 235 - Exam 1 Review Suggestions You are responsible for material covered in class sessions, lab exercises, and homeworks;

More information

CS 1110 Final, May 2017

CS 1110 Final, May 2017 Last Name: First Name: Cornell NetID, all caps: CS 1110 Final, May 2017 This 150-minute exam has 9 questions worth a total of 117 points. You may separate the pages while working on the exam; we have a

More information

Lecture 21. Programming with Subclasses

Lecture 21. Programming with Subclasses Lecture 21 Programming with Subclasses Announcements for Today Reading Today: See reading online Tuesday: Chapter 7 Prelim, Nov 9 th 7:30-9:00 Material up to Today Review has been posted Recursion + Loops

More information

CSE : Python Programming

CSE : Python Programming CSE 399-004: Python Programming Lecture 2: Data, Classes, and Modules January 22, 2007 http://www.seas.upenn.edu/~cse39904/ Administrative things Teaching assistant Brian Summa (bsumma @ seas.upenn.edu)

More information

Lecture 21. Programming with Subclasses

Lecture 21. Programming with Subclasses Lecture 21 Programming with Subclasses Announcements for Today Reading Today: See reading online Tuesday: Chapter 7 Prelim, Nov 10 th 7:30-9:00 Material up to Today Review has been posted Recursion + Loops

More information

CS 1110 Final, December 16th, 2013

CS 1110 Final, December 16th, 2013 CS 1110 Final, December 16th, 2013 This 150-minute exam has 8 questions worth a total of 100 points. Scan the whole test before starting. Budget your time wisely. Use the back of the pages if you need

More information

Intro. Classes & Inheritance

Intro. Classes & Inheritance Intro Functions are useful, but they're not always intuitive. Today we're going to learn about a different way of programming, where instead of functions we will deal primarily with objects. This school

More information

CSE 341, Autumn 2005, Assignment 3 ML - MiniML Interpreter

CSE 341, Autumn 2005, Assignment 3 ML - MiniML Interpreter Due: Thurs October 27, 10:00pm CSE 341, Autumn 2005, Assignment 3 ML - MiniML Interpreter Note: This is a much longer assignment than anything we ve seen up until now. You are given two weeks to complete

More information

61A Lecture 25. Friday, October 28

61A Lecture 25. Friday, October 28 61A Lecture 25 Friday, October 2 From Last Time: Adjoining to a Tree Set 5 9 7 3 9 7 11 1 7 11 Right! Left! Right! Stop! 5 9 7 3 9 7 11 1 7 11 2 From the Exam: Pruned Trees a b c d (a,b) (a,c) (a,d) pruned

More information

CS 1110, LAB 3: MODULES AND TESTING First Name: Last Name: NetID:

CS 1110, LAB 3: MODULES AND TESTING   First Name: Last Name: NetID: CS 1110, LAB 3: MODULES AND TESTING http://www.cs.cornell.edu/courses/cs11102013fa/labs/lab03.pdf First Name: Last Name: NetID: The purpose of this lab is to help you better understand functions, and to

More information

Fortunately, you only need to know 10% of what's in the main page to get 90% of the benefit. This page will show you that 10%.

Fortunately, you only need to know 10% of what's in the main page to get 90% of the benefit. This page will show you that 10%. NAME DESCRIPTION perlreftut - Mark's very short tutorial about references One of the most important new features in Perl 5 was the capability to manage complicated data structures like multidimensional

More information

Basic Data Types and Operators CS 8: Introduction to Computer Science, Winter 2019 Lecture #2

Basic Data Types and Operators CS 8: Introduction to Computer Science, Winter 2019 Lecture #2 Basic Data Types and Operators CS 8: Introduction to Computer Science, Winter 2019 Lecture #2 Ziad Matni, Ph.D. Dept. of Computer Science, UCSB Your Instructor Your instructor: Ziad Matni, Ph.D(zee-ahd

More information

Casting in C++ (intermediate level)

Casting in C++ (intermediate level) 1 of 5 10/5/2009 1:14 PM Casting in C++ (intermediate level) Casting isn't usually necessary in student-level C++ code, but understanding why it's needed and the restrictions involved can help widen one's

More information

Lecture 18. Methods and Operations

Lecture 18. Methods and Operations Lecture 18 Methods and Operations Announcements for This Lecture Assignments A4 Due Thursday at midnight Hopefully you are on Task 4 Extra consultants available Will post A5 on Thursday Written assignment

More information

Black Problem 2: Huffman Compression [75 points] Next, the Millisoft back story! Starter files

Black Problem 2: Huffman Compression [75 points] Next, the Millisoft back story! Starter files Black Problem 2: Huffman Compression [75 points] Copied from: https://www.cs.hmc.edu/twiki/bin/view/cs5/huff manblack on 3/15/2017 Due: 11:59 PM on November 14, 2016 Starter files First, here is a set

More information

a declaration of class name, and a class docstring

a declaration of class name, and a class docstring Question 1. [10 marks] Implement a class that models a cash register in a store. This cash register will know what the HST tax rate is (charged on all sales, for simplicity), is able to make sales, and

More information

Assignment 1: grid. Due November 20, 11:59 PM Introduction

Assignment 1: grid. Due November 20, 11:59 PM Introduction CS106L Fall 2008 Handout #19 November 5, 2008 Assignment 1: grid Due November 20, 11:59 PM Introduction The STL container classes encompass a wide selection of associative and sequence containers. However,

More information

CS 1110 Final, December 9th, Question Points Score Total: 100

CS 1110 Final, December 9th, Question Points Score Total: 100 CS 1110 Final, Decemer 9th, 2015 This 150-minute exam has 8 questions worth a total of 100 points. Scan the whole test efore starting. Budget your time wisely. Use the ack of the pages if you need more

More information

Part I: Written Problems

Part I: Written Problems CSci 4223 Homework 3 DUE: Friday, March 22, 11:59 pm Instructions. Your task is to answer 2 written problems, and to write 16 SML functions (excluding local helper functions) as well as test cases for

More information

CS Homework 11 p. 1. CS Homework 11

CS Homework 11 p. 1. CS Homework 11 CS 111 - Homework 11 p. 1 Deadline 11:59 pm on Monday, May 2, 2016 How to submit Each time you would like to submit your work: CS 111 - Homework 11 If your files are not already on nrs-labs, be sure to

More information

CS 112 Project Basics

CS 112 Project Basics CS 112 Project Basics Each project has some similar characteristics: the general flow, requirements, and so on. This document records the similarities for all of our assignments, so that we don't have

More information

COMP1730/COMP6730 Programming for Scientists. Exceptions and exception handling

COMP1730/COMP6730 Programming for Scientists. Exceptions and exception handling COMP1730/COMP6730 Programming for Scientists Exceptions and exception handling Lecture outline * Errors * The exception mechanism in python * Causing exceptions (assert and raise) * Handling exceptions

More information

CS Homework 11 p. 1. CS Homework 11

CS Homework 11 p. 1. CS Homework 11 CS 111 - Homework 11 p. 1 Deadline 11:59 pm on Friday, December 12, 2014 How to submit Each time you would like to submit your work: CS 111 - Homework 11 IF they are not already on nrs-labs, then transfer/save

More information

Beyond Blocks: Python Session #1

Beyond Blocks: Python Session #1 Beyond Blocks: Session #1 CS10 Spring 2013 Thursday, April 30, 2013 Michael Ball Beyond Blocks : : Session #1 by Michael Ball adapted from Glenn Sugden is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike

More information

Functions parameters, scope CS GMU

Functions parameters, scope CS GMU Functions parameters, scope CS 112 @ GMU Functions function: we can name a batch of statements, to call later. a function can accept some expected number of values to be supplied each time it is called

More information

CS 142 Style Guide Grading and Details

CS 142 Style Guide Grading and Details CS 142 Style Guide Grading and Details In the English language, there are many different ways to convey a message or idea: some ways are acceptable, whereas others are not. Similarly, there are acceptable

More information

CS 1110 Final Exam May 9th, 2013 SOLUTIONS

CS 1110 Final Exam May 9th, 2013 SOLUTIONS Last Name: UTION First Name: SOL Cornell NetID, all caps: SU1110 CS 1110 Final Exam May 9th, 2013 SOLUTIONS This 150-minute exam has 7 questions worth a total of 53 points. When permitted to begin, scan

More information

Remember, this question was mis-worded: you could also add quoted words and sentences in the blanks below. This allowed for a solution to [4] below.

Remember, this question was mis-worded: you could also add quoted words and sentences in the blanks below. This allowed for a solution to [4] below. CS3 Fall 04 Midterm 1 Solutions and Grading standards Problem 1 (6 points, 10 minutes): Make the expressions correct Add parentheses and procedures in the underlined areas to make these expressions return

More information

Account joeacct = new Account (100, new Account (500)); Account joeacct = new Account (100, new Account (500, null));

Account joeacct = new Account (100, new Account (500)); Account joeacct = new Account (100, new Account (500, null)); Exam information 369 students took the exam. Scores ranged from 1 to 20, with a median of 11 and an average of 11.1. There were 40 scores between 15.5 and 20, 180 between 10.5 and 15, 132 between 5.5 and

More information

CS 1110, Spring 2018: Prelim 1 study guide Prepared Tuesday March 6, 2018

CS 1110, Spring 2018: Prelim 1 study guide Prepared Tuesday March 6, 2018 CS 1110, Spring 2018: Prelim 1 study guide Prepared Tuesday March 6, 2018 Administrative info Time and locations of the regular exam listed at http://www.cs.cornell.edu/courses/cs1110/2018sp/exams What

More information

Abstract Data Types. CS 234, Fall Types, Data Types Abstraction Abstract Data Types Preconditions, Postconditions ADT Examples

Abstract Data Types. CS 234, Fall Types, Data Types Abstraction Abstract Data Types Preconditions, Postconditions ADT Examples Abstract Data Types CS 234, Fall 2017 Types, Data Types Abstraction Abstract Data Types Preconditions, Postconditions ADT Examples Data Types Data is stored in a computer as a sequence of binary digits:

More information

A lot of people make repeated mistakes of not calling their functions and getting errors. Make sure you're calling your functions.

A lot of people make repeated mistakes of not calling their functions and getting errors. Make sure you're calling your functions. Handout 2 Functions, Lists, For Loops and Tuples [ ] Functions -- parameters/arguments, "calling" functions, return values, etc. Please make sure you understand this example: def square(x): return x *

More information

CS 234 Python Review Part 2

CS 234 Python Review Part 2 CS 234 Python Review Part 2 Recap import function: define, return boolean, conditional, branching loop: for, range, while file: open, close, readlines string: split Classes Define blueprint for a custom

More information

Version B Final Exam

Version B Final Exam CS112 Spring 2013 Dr. Kinga Dobolyi Version B Final Exam Do not open this exam until you are told. Read these instructions: 1. This is a closed book exam. No calculators, notes, or other aids are allowed.

More information

Quiz 3; Tuesday, January 27; 5 minutes; 5 points [Solutions follow on next page]

Quiz 3; Tuesday, January 27; 5 minutes; 5 points [Solutions follow on next page] Quiz 3; Tuesday, January 27; 5 minutes; 5 points [Solutions follow on next page] 1. Does the Java expression x + y == z have a side-effect? If so, what is it? 2. Write a function named add that can add

More information

Lecture 2. Object Orientation 1 / 50

Lecture 2. Object Orientation 1 / 50 Lecture 2 Object Orientation 1 / 50 Homework 1 Homework 1 was due last night You will be graded on: Correctness: 15 points (passing all RSpec tests) Style: 5 points (having no Rubocop style offenses) Best

More information

PREPARING FOR THE FINAL EXAM

PREPARING FOR THE FINAL EXAM PREPARING FOR THE FINAL EXAM CS 1110: FALL 2012 This handout explains what you have to know for the final exam. Most of the exam will include topics from the previous two prelims. We have uploaded the

More information

CS164: Programming Assignment 2 Dlex Lexer Generator and Decaf Lexer

CS164: Programming Assignment 2 Dlex Lexer Generator and Decaf Lexer CS164: Programming Assignment 2 Dlex Lexer Generator and Decaf Lexer Assigned: Thursday, September 16, 2004 Due: Tuesday, September 28, 2004, at 11:59pm September 16, 2004 1 Introduction Overview In this

More information

6.001 Notes: Section 8.1

6.001 Notes: Section 8.1 6.001 Notes: Section 8.1 Slide 8.1.1 In this lecture we are going to introduce a new data type, specifically to deal with symbols. This may sound a bit odd, but if you step back, you may realize that everything

More information

CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, :30pm)

CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, :30pm) CSE 143: Computer Programming II Winter 2019 HW6: AnagramSolver (due Thursday, Feb 28, 2019 11:30pm) This assignment focuses on recursive backtracking. Turn in the following files using the link on the

More information

Python Essential Reference, Second Edition - Chapter 5: Control Flow Page 1 of 8

Python Essential Reference, Second Edition - Chapter 5: Control Flow Page 1 of 8 Python Essential Reference, Second Edition - Chapter 5: Control Flow Page 1 of 8 Chapter 5: Control Flow This chapter describes related to the control flow of a program. Topics include conditionals, loops,

More information

Lecture 18. Using Classes Effectively

Lecture 18. Using Classes Effectively Lecture 18 Using Classes Effectively Announcements for This Lecture Assignments A4 Due Thursday at midnight Hopefully you are on Task 4 Extra consultants available Will post A5 on Thursday Written assignment

More information

8 Understanding Subtyping

8 Understanding Subtyping Object-Oriented Design Lecture 8 CS 3500 Fall 2010 (Pucella) Friday/Tuesday, Oct 8/12, 2010 8 Understanding Subtyping Subtpying is a great way to enable client-side reuse, requiring a client to write a

More information

Final Project Option #1 Restaurant Simulation

Final Project Option #1 Restaurant Simulation ITP 115 Programming in Python p. 1 of 10 Final Project Option #1 Restaurant Simulation Goals Complete a project that demonstrates problem solving skills and logical thinking. Demonstrate knowledge of Python

More information

Compsci 101 Fall 2015 Exam 1 Rubric. Problem 1 (24 points)

Compsci 101 Fall 2015 Exam 1 Rubric. Problem 1 (24 points) Compsci 101 Fall 2015 Exam 1 Rubric Problem 1 (24 points) Each answer is one point each. Spelling of int, integer doesn't matter. Similarly string, str doesn't matter. For the value column all answers

More information

Chapter 11 Generics. Generics. Hello!

Chapter 11 Generics. Generics. Hello! Chapter 11 Generics Written by Dr. Mark Snyder [minor edits for this semester by Dr. Kinga Dobolyi] Hello! The topic for this chapter is generics. Collections rely heavily upon generics, and so they are

More information

COMP 105 Assignment: Hindley-Milner Type Inference

COMP 105 Assignment: Hindley-Milner Type Inference COMP 105 Assignment: Hindley-Milner Type Inference Due Monday, Novermber 21 at 11:59PM. In this assignment you will implement Hindley-Milner type inference, which represents the current ``best practice''

More information

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5 Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5 [talking head] This lecture we study theory design and implementation. Programmers have two roles to play here. In one role, they

More information

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus

Testing. Prof. Clarkson Fall Today s music: Wrecking Ball by Miley Cyrus Testing Prof. Clarkson Fall 2017 Today s music: Wrecking Ball by Miley Cyrus Review Previously in 3110: Modules Specification (functions, modules) Today: Validation Testing Black box Glass box Randomized

More information

Course May 18, Advanced Computational Physics. Course Hartmut Ruhl, LMU, Munich. People involved. SP in Python: 3 basic points

Course May 18, Advanced Computational Physics. Course Hartmut Ruhl, LMU, Munich. People involved. SP in Python: 3 basic points May 18, 2017 3 I/O 3 I/O 3 I/O 3 ASC, room A 238, phone 089-21804210, email hartmut.ruhl@lmu.de Patrick Böhl, ASC, room A205, phone 089-21804640, email patrick.boehl@physik.uni-muenchen.de. I/O Scientific

More information

TAIL RECURSION, SCOPE, AND PROJECT 4 11

TAIL RECURSION, SCOPE, AND PROJECT 4 11 TAIL RECURSION, SCOPE, AND PROJECT 4 11 COMPUTER SCIENCE 61A Noveber 12, 2012 1 Tail Recursion Today we will look at Tail Recursion and Tail Call Optimizations in Scheme, and how they relate to iteration

More information

Computer Science CSC324 Wednesday February 13, Homework Assignment #3 Due: Thursday February 28, 2013, by 10 p.m.

Computer Science CSC324 Wednesday February 13, Homework Assignment #3 Due: Thursday February 28, 2013, by 10 p.m. Computer Science CSC324 Wednesday February 13, 2013 St. George Campus University of Toronto Homework Assignment #3 Due: Thursday February 28, 2013, by 10 p.m. Silent Policy A silent policy takes effect

More information

CS Homework 4 Lifeguard Employee Ranker. Due: Tuesday, June 3rd, before 11:55 PM Out of 100 points. Files to submit: 1. HW4.py.

CS Homework 4 Lifeguard Employee Ranker. Due: Tuesday, June 3rd, before 11:55 PM Out of 100 points. Files to submit: 1. HW4.py. CS 2316 Homework 4 Lifeguard Employee Ranker Due: Tuesday, June 3rd, before 11: PM Out of 100 points Files to submit: 1. HW4.py This is an PAIR assignment! This is a pair programming problem! You are expected

More information

Blocky: A Game of Falling Blocks

Blocky: A Game of Falling Blocks ECE220: Computer Systems and Programming Machine Problem 6 Spring 2018 Honors Section due: Thursday 1 March, 11:59:59 p.m. Blocky: A Game of Falling Blocks Your task this week is to implement a game of

More information

CS Programming Languages: Python

CS Programming Languages: Python CS 3101-1 - Programming Languages: Python Lecture 5: Exceptions / Daniel Bauer (bauer@cs.columbia.edu) October 08 2014 Daniel Bauer CS3101-1 Python - 05 - Exceptions / 1/35 Contents Exceptions Daniel Bauer

More information

Unit 4: Client View of a Component Methods

Unit 4: Client View of a Component Methods Unit 4: Client View of a Component Methods Preview of Coming Attractions In this unit be sure to look for method/operation parameters/formal parameters arguments/actual parameters method header/method

More information

CS 1110 Prelim 1 October 15th, 2015

CS 1110 Prelim 1 October 15th, 2015 CS 1110 Prelim 1 October 15th, 2015 This 90-minute exam has 6 uestions worth a total of 100 points. Scan the whole test before starting. Budget your time wisely. Use the back of the pages if you need more

More information

Spring 2018 Discussion 7: March 21, Introduction. 2 Primitives

Spring 2018 Discussion 7: March 21, Introduction. 2 Primitives CS 61A Scheme Spring 2018 Discussion 7: March 21, 2018 1 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme

More information

Post Experiment Interview Questions

Post Experiment Interview Questions Post Experiment Interview Questions Questions about the Maximum Problem 1. What is this problem statement asking? 2. What is meant by positive integers? 3. What does it mean by the user entering valid

More information

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

Lab 5 Classy Chat. XMPP Client Implementation --- Part 2 Due Oct. 19 at 11PM Lab 5 Classy Chat XMPP Client Implementation --- Part 2 Due Oct. 19 at 11PM In this week s lab we will finish work on the chat client programs from the last lab. The primary goals are: to use multiple

More information

Presenting Online in Elluminate Live!

Presenting Online in Elluminate Live! Presenting Online in Elluminate Live! There are many things you can do to deliver high-quality, highly-effective Elluminate Live! sessions. The following pages provide suggestions that you can use as you

More information

CSE341 Spring 2017, Final Examination June 8, 2017

CSE341 Spring 2017, Final Examination June 8, 2017 CSE341 Spring 2017, Final Examination June 8, 2017 Please do not turn the page until 8:30. Rules: The exam is closed-book, closed-note, etc. except for both sides of one 8.5x11in piece of paper. Please

More information

GIS 4653/5653: Spatial Programming and GIS. More Python: Statements, Types, Functions, Modules, Classes

GIS 4653/5653: Spatial Programming and GIS. More Python: Statements, Types, Functions, Modules, Classes GIS 4653/5653: Spatial Programming and GIS More Python: Statements, Types, Functions, Modules, Classes Statement Syntax The if-elif-else statement Indentation and and colons are important Parentheses and

More information

CMSC 201 Fall 2016 Lab 09 Advanced Debugging

CMSC 201 Fall 2016 Lab 09 Advanced Debugging CMSC 201 Fall 2016 Lab 09 Advanced Debugging Assignment: Lab 09 Advanced Debugging Due Date: During discussion Value: 10 points Part 1: Introduction to Errors Throughout this semester, we have been working

More information

Lecture 17: Classes (Chapter 15)

Lecture 17: Classes (Chapter 15) http://www.cs.cornell.edu/courses/cs1110/2018sp Lecture 17: Classes (Chapter 15) CS 1110 Introduction to Computing Using Python [E. Andersen, A. Bracy, D. Gries, L. Lee, S. Marschner, C. Van Loan, W. White]

More information

CS Homework 4 Employee Ranker. Due: Wednesday, February 8th, before 11:55 PM Out of 100 points. Files to submit: 1. HW4.py.

CS Homework 4 Employee Ranker. Due: Wednesday, February 8th, before 11:55 PM Out of 100 points. Files to submit: 1. HW4.py. CS 216 Homework 4 Employee Ranker Due: Wednesday, February 8th, before 11: PM Out of 0 points Files to submit: 1. HW4.py This is an INDIVIDUAL assignment! Collaboration at a reasonable level will not result

More information

Advanced Python. Executive Summary, Session 1

Advanced Python. Executive Summary, Session 1 Advanced Python Executive Summary, Session 1 OBJECT: a unit of data of a particular type with characteristic functionality (i.e., methods and/or use with operators). Everything in Python is an object.

More information

https://www.eskimo.com/~scs/cclass/notes/sx8.html

https://www.eskimo.com/~scs/cclass/notes/sx8.html 1 de 6 20-10-2015 10:41 Chapter 8: Strings Strings in C are represented by arrays of characters. The end of the string is marked with a special character, the null character, which is simply the character

More information

Exceptions. raise type(message) raise Exception(message)

Exceptions. raise type(message) raise Exception(message) Classes Special thanks to Roy McElmurry, Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/.0

More information

Definition: A data structure is a way of organizing data in a computer so that it can be used efficiently.

Definition: A data structure is a way of organizing data in a computer so that it can be used efficiently. The Science of Computing I Lesson 4: Introduction to Data Structures Living with Cyber Pillar: Data Structures The need for data structures The algorithms we design to solve problems rarely do so without

More information

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department

King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department King Abdulaziz University Faculty of Computing and Information Technology Computer Science Department CPCS204, 2 nd Term 2014 Program 5: FCITbook Assigned: Thursday, May 1 st, 2014 Due: Thursday, May 15

More information