CS21 Final Exam Study Guide
This study guide is provided as a courtesy. We will not provide solutions to the questions in the study guide. You may work with other students on the questions and ask questions about the guide during office hours or review sessions.
Standards tested on the final exam
As noted on the Grading Standards webpage, there are 5 standards that are explicitly evaluated on the final. For these 5 standards, you must demonstrate fluency on the final exam:
-
Standard 10: Writing and calling functions
-
Standard 13: Writing full programs
-
Standard 17: Recursion
-
Note that this standard includes drawing stack diagrams for recursive functions, so even if you have met Standard 11 (Stack diagrams), you will still need to demonstrate that you can draw stack diagrams for recursive functions on the final exam.
-
-
Standard 18: Using objects
-
Standard 19: Defining objects
All of the other standards will also be tested on the final exam. If you have already met a particular standard that is being tested on a specific question, you may be able to skip that question. We will provide you with information about which questions you can skip when you arrive to take the final exam.
Past quiz study guides
In addition to the topics listed below, there are many practice problems in these study guides that you can work on:
Recent Topics and Practice Problems
Below are some of the new topics covered since the last quiz, as well as some additional practice problems.
You should be able to define and explain the following terms:
-
Object-oriented programming
-
methods
-
member variables/instance variables (two ways to refer to the same concept)
-
-
Defining classes, including:
-
the constructor, or
__init__
method -
the
self
variable -
the
__str__
method -
getters
-
setters (sometimes also called mutators)
-
-
Using classes, including:
-
creating an object using the constructor
-
calling methods using dot notation (e.g.
lst.append
)
-
Practice problems:
-
Consider the code snippet below, which contains two
for
loops.-
What will each
for
loop print? -
What is the difference between the two
for
loops?L = [3, 18, 19, -4, 11, 6.2] # first loop for x in L: print(x) # second loop for y in range(len(L)): print(y)
-
-
Write a complete program that plays a guessing game with numbers. The goal is for the user to guess a randomly selected number between 1 and 100 as quickly as possible. The program will inform the user whether the hidden number is higher or lower than the current guess. You must break the problem up into a
main()
function and at least one additional function.The following is a sample run of the program:
I'm thinking of a number between 1 and 100. Enter guess: 50 Number is higher than 50 Enter guess: 588 Invalid, try again! Enter guess: 75 Number is lower than 75 Enter guess: 62 Number is lower than 62 Enter guess: 56 Correct! You guessed it in 4 tries!
-
Write a
Student
class that stores information for a Swarthmore student. The class should include the following attributes:-
ID
, an integer identifier for the student -
last_name
, a string for the student’s last name -
credit
, an integer representing the number of course-credits the student has earned -
course_load
, an integer representing the current number of credits in progressInclude the following methods in your
Student
class: -
A constructor that, given an ID and a name, creates a
Student
object with those values, as well as (initially) 0 course-credits and 0 course load. For example:rich = Student(25,"Wicentowski")
-
A
register_current(load)
method that sets the current course load. The course load must be positive and not greater than 4 credits, otherwise no change happens. Here’s an example:rich.register_current(3)
-
A
withdraw()
method which decreases the course load by one credit (butcourse_load
should never go below 0):rich.withdraw()
-
A
passed_course()
method which removes one course from the current course load and adds to the student’s overall course-credits:rich.passed_course()
-
A
create_email()
method, which returns a string. The string should be an email address of the student’s name in lowercase combined with their ID and the post-fix@swarthmore.edu
. For example, a student with last name"Danner"
, and ID23
should return"danner23@swarthmore.edu"
-
A
__str__
method that returns a string representation of the object. E.g.,"ID: 27\nName: Webb\nEarned credits: 17\nCourse load: 2"
-
Finally, write a
main()
function that tests the class. Each method should be called/tested at least once.
-
-
Write recursive and iterative versions of a
count(item, lst)
function that, given an item and a list, returns how many timesitem
appears in the listlst
.For example, calling the function with
'R'
and['F','U','R','R','Y']
returns 2.Here are some additional examples that should work:
-
count("hello", ["we", "love", "cs"])
should return 0 -
count(99, [99, 99, 99, 99, 99])
should return 5 -
count(37, [])
should return 0
-