Summer 2014 Final

From CS 61A Wiki
Jump to: navigation, search

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 1-7. 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
Higher-order 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.


Topic Basic Exam
Scheme Basic Problems Exam Level
Tail Recursion Basic Problems Exam Level
Logic Basic Problems Exam Level

Guides and Websites

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 (~1-2 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!