Summer 2014 Final
From CS 61A Wiki
Contents
Logistics
Changes from Exam 2 are in bold.
2050 VLSB, 5pm  8pm on Thursday, August, 14 2014. There will be exactly one alternate exam on Friday.
Bring
 pencil and eraser
 three front and back 8.5x11" cheatsheets (the idea is you bring your old cheatsheets and one new one)
 a copy of The Rules
 You can write on your copy of The Rules (8.5x11"), giving you 4 cheatsheets total.
Don't bring
 Any sort of electronics
 Cell phones are okay, but must be turned off for the duration of the exam
Topics
The Final is cummulative and will test the material from weeks 17. We expect about 75% (or 60 points) of the exam to focus on the first 6 weeks of class (exam 1 and 2 material). The remaining 25% (20 points) will focus on the material after Exam 2. This includes:
Final Exam Topics 

Tail Recursion 
Streams 
Logic Programming 
Concurrency 
Topics for Exam 2 (fair game)
Exam 2 Topics 

nonlocal and functions using nonlocal 
Mutable Python data structures and functions on them (List, Dictionary) 
Environment diagrams on the above 
Object Oriented Programming 
Interfaces and 'Magic' methods 
Linked Lists (Known as Rlists in previous semesters) 
(Mutable) Trees (the kind with datum and children attributes) 
Binary Trees (the kind with entry, left, and right) 
Iterators, Iterables and Generators 
Generic functions 
Interpreters 
Scheme 
Topics from Exam 1 (fair game)
Exam 1 Topics 

Python Basics 
Higherorder functions and Lambda expressions 
Recursion 
Linked lists (ignore tuples and OOP); Also known as rlists in other semesters.

Tree Recursion 
Environments / Environment diagrams (Note that our Env. Diagrams are compatible with Fall 2012 and onward.) 
Sequences 
Abstract data types 
Trees (We haven't covered BSTs or Trees in Scheme) 
Deep lists 
Orders of growth 
Newton's method 
Halting problem (Extra Credit) 
Other skills
 Writing out streams
 "What will Logic output?"
 Enumerating invalid output from poorly parallized code
 Writing correct concurrent code
All the skills from Exam 2 still apply:
 Draw Box and pointer diagrams for mutable data structures
 Drawing Environment diagrams with nonlocal
 Reading the problem critically/figuring out what the problem is asking
 Understanding doctests
 Designing classes for Object Oriented Programming problems
All the skills from Exam 1 still apply:
 Identifying the Operator and Operands
 Drawing Function Boxes
 Identifying Domain and Range
 Drawing Box and Pointers
 Environment Diagrams
 Identifying the Theta of a function
Practice Problems
Question  Topic 

Fa12 Final Q4b  Tail Recursion 
Su13 Final Q8  Tail Recursion 
Fa12 Final Q4d  Logic Programming 
Sp13 Final Q7  Logic Programming 
Su13 Final Q10  Logic Programming 
Fa11 Final Q5  Concurrency 
Su12 Final Q3  Concurrency 
Start with the ones from from Exam 1, Exam 2, and Past exams.
 Logic & Scheme Guerilla Sections
 Matthew's Logic practice problems
 Mark Miyashita's Logic Practice Problems
 Albert Wu's Final Review Problems
Topic  Basic  Exam 

Scheme  Basic Problems  Exam Level 
Tail Recursion  Basic Problems  Exam Level 
Logic  Basic Problems  Exam Level 
Guides and Websites
 Beth's Video Tutorials on Streams
 Youri's Website
 Quick Guide on Logic
 Comprehensive Guide on Logic
 Useful Posts and Guides on Piazza
How to study
Here is an old algorithm for studying for tests: For each topic on the exam, find problems on them and do them. START ON THE TOPICS YOU'RE MOST UNFAMILIAR WITH! If you can solve them on your own, move on. Else if you are stuck, look at the solution and figure out if you are missing a trick or if you do not understand the concepts. If the problem is that you are stuck on some random trick, just learn the trick. Stare at the solutions, ask Piazza, your TA, etc. Questions you should ask at this stage: What is the problem asking me to do? How was I suppose to follow the instructions to solve the problem? What part of the problem do I not understand? What is the fastest way to clear up that misunderstanding? Then if you think you are still stuck conceptually, review and learn the concept, however you learn best. Suggestions for picking up concepts quickly (~12 hours): Discussion notes typically have a very concise recap of the thing they are going over. There are guides for particularly tricky things on the wiki, like Hanoi, powerset, etc. Find them and go over them. Ask a TA: "what is the best way to learn X?" If these do not work and you are still shaky after an hour or two, it might be worth watching a lecture or reading the notes. Be sure to try out some more problems as you're learning!