CS0111 - Spring 2020: Final Exam Prep Guide
Roughly, we want to check whether you can frame data-facing questions at a high level, use code to compute answers to questions, and test or sanity check programs and their results. We also want to check whether you understand how the code constructs we used this semester work, and when to use those constructs.
What should you expect?
-
The exam will be designed to take roughly 60 minutes, but you’ll get 90 in Canvas.
-
The exam will be self-contained. You will not be asked to remember any specific problem from lecture, homework, projects, or labs.
-
You will not be expected to write much code on the exam.
- You may be asked to fill in fragments of code (along the lines of what you’ve done on the drills).
- You might need to write a dataclass or Pyret datatype definition
-
You will not be tested or graded on details of syntax. For example, if we ask you to write a Python for-loop and you forget the colon at the end of the first line, that’s fine. For the exam, we care about your understanding of the concepts. As long as your code is close enough to convey that you know how to approach the problem, that’s fine.
Using reasonable indentation (such as indenting the code to execute when a conditional statement is true) will be important though, as that conveys which code gets executed when.
-
At least some questions will be open-ended rather than typical Canvas-style drill questions.
What you are expected to know
Programming
-
Which programming constructs are appropriate for different situations: when should you use each of conditionals, (helper) functions, recursion, for-loops, and variable updates?
-
How programs evaluate to answers, both in terms of the answers produced, and at the level of the program dictionary and memory.
-
What each of map, filter, and sort would achieve on a list
Data structures
-
When are each of tables, lists, trees, dataclasses, and hashtables a good choice for capturing information.
-
How to use a combination of tables, lists, trees, dataclasses, and hashtables to manage the information for a problem.
-
How to define a Pyret datatype or Python dataclass to capture specific information for a problem.
Testing
-
How to test functions that return results
-
How to test functions that update data, but only return None
What you are NOT expected to know
This list may grow as people ask clarifying questions about the exam
-
Fine-grained details of language syntax
-
The specific names of operations on Pyret tables or Pyret operations that produce different kinds of graphs (we’ll provide you with a reference sheet of common operations)
-
Reading input from or writing output to files
-
The various components needed to write a simulation or game in Pyret
-
The details for using the built-in sort operations in either Pyret or Python
-
How hashtables work under the hood
What kinds of problems might you get?
-
Given a program, what will its output be when executed?
-
Given a scenario, what data structures would you use to capture the data? Answers should indicate both the datatype (list, hashtable, tree, etc) and the types of the parts (list elements, hashtable keys, etc).
-
Given a partially-written program with blanks, how do you fill in the blanks to achieve a certain behavior or result?
-
Given a program, what might the program dictionary and memory look like at a specific point in the execution?
-
Given a problem, what would be some good tests for it?
-
Given a program that is producing the wrong answer, identify and correct the error.
-
Given two proposed data structures for a specific problem, contrast their strengths and weaknesses.
-
Given a table of data, roughly what operations would you use to process it (i.e., what combination of filtering, sorting, computing new columns, etc would let you solve a problem)
Note that these are kinds of questions you’ve done across homeworks, labs, drills, and quizzes. Reviewing your work on these might be good ways to prepare for the exam.
The Quiz 1 retest portion
While the questions won’t be exactly the same format as on quiz 1, they’ll check concepts like which names are available at different points in code and the behavior of functions around returns, prints, and the lack thereof.
How Should We Prepare?
Here is the final from the last time Kathi taught the class. Note that the question formats are likely to be different to work with what we can easily gather electronically. But these give you a sense of potential conceptual content of the questions. (Bear in mind that this was for a 3-hour final – your exam will be shorter)
The TAs will post information about Q&A sessions where you can review these problems.
CS0111 - Spring 2020: Final Exam Prep Guide
Roughly, we want to check whether you can frame data-facing questions at a high level, use code to compute answers to questions, and test or sanity check programs and their results. We also want to check whether you understand how the code constructs we used this semester work, and when to use those constructs.
What should you expect?
The exam will be designed to take roughly 60 minutes, but you’ll get 90 in Canvas.
The exam will be self-contained. You will not be asked to remember any specific problem from lecture, homework, projects, or labs.
You will not be expected to write much code on the exam.
You will not be tested or graded on details of syntax. For example, if we ask you to write a Python for-loop and you forget the colon at the end of the first line, that’s fine. For the exam, we care about your understanding of the concepts. As long as your code is close enough to convey that you know how to approach the problem, that’s fine.
Using reasonable indentation (such as indenting the code to execute when a conditional statement is true) will be important though, as that conveys which code gets executed when.
At least some questions will be open-ended rather than typical Canvas-style drill questions.
What you are expected to know
Programming
Which programming constructs are appropriate for different situations: when should you use each of conditionals, (helper) functions, recursion, for-loops, and variable updates?
How programs evaluate to answers, both in terms of the answers produced, and at the level of the program dictionary and memory.
What each of map, filter, and sort would achieve on a list
Data structures
When are each of tables, lists, trees, dataclasses, and hashtables a good choice for capturing information.
How to use a combination of tables, lists, trees, dataclasses, and hashtables to manage the information for a problem.
How to define a Pyret datatype or Python dataclass to capture specific information for a problem.
Testing
How to test functions that return results
How to test functions that update data, but only return None
What you are NOT expected to know
This list may grow as people ask clarifying questions about the exam
Fine-grained details of language syntax
The specific names of operations on Pyret tables or Pyret operations that produce different kinds of graphs (we’ll provide you with a reference sheet of common operations)
Reading input from or writing output to files
The various components needed to write a simulation or game in Pyret
The details for using the built-in sort operations in either Pyret or Python
How hashtables work under the hood
What kinds of problems might you get?
Given a program, what will its output be when executed?
Given a scenario, what data structures would you use to capture the data? Answers should indicate both the datatype (list, hashtable, tree, etc) and the types of the parts (list elements, hashtable keys, etc).
Given a partially-written program with blanks, how do you fill in the blanks to achieve a certain behavior or result?
Given a program, what might the program dictionary and memory look like at a specific point in the execution?
Given a problem, what would be some good tests for it?
Given a program that is producing the wrong answer, identify and correct the error.
Given two proposed data structures for a specific problem, contrast their strengths and weaknesses.
Given a table of data, roughly what operations would you use to process it (i.e., what combination of filtering, sorting, computing new columns, etc would let you solve a problem)
Note that these are kinds of questions you’ve done across homeworks, labs, drills, and quizzes. Reviewing your work on these might be good ways to prepare for the exam.
The Quiz 1 retest portion
While the questions won’t be exactly the same format as on quiz 1, they’ll check concepts like which names are available at different points in code and the behavior of functions around returns, prints, and the lack thereof.
How Should We Prepare?
Here is the final from the last time Kathi taught the class. Note that the question formats are likely to be different to work with what we can easily gather electronically. But these give you a sense of potential conceptual content of the questions. (Bear in mind that this was for a 3-hour final – your exam will be shorter)
The TAs will post information about Q&A sessions where you can review these problems.