Archive

Walkthrough videos require that you log into YouTube with your @berkeley.edu account.

SemesterInstructorMidtermFinalNotes
Spring 2025Michael Ball N/AN/A
Fall 2024John DeNero, Jedi Tsang, Shm Almeda For the midterm:
Thanks CSM for the walkthroughs!
Summer 2024Eric Kim For the midterm:
We apologize for the low quality PDFs for this semester, it was all online and unfortunately we don't have better ones.

For the final:
We apologize for the low quality PDFs for this semester, it was all online and unfortunately we don't have better ones.
Spring 2024Michael Ball For the midterm:
Thanks CSM for the walkthroughs!
Fall 2023Michael Ball For the midterm:
Thanks CSM for the walkthroughs! Please note some typos in the exam and/or walkthrough videos below:
  • This exam had many clarifications during the exam, which you can view here.
  • Q1a: In the video walkthrough, the narrator writes the indices of the outermost list as 0, 1, 2, 4 in purple. However, it should be 0, 1, 2, 3.
  • Q2e: In the video walkthrough around 14:10, the narrator says the return value of the huh frame is a list like this: [lambda, lambda, [lambda]]. However, it should be: [lambda, lambda, lambda].
  • Q2f: Similar to 2(e), in the video walkthrough around 20:00, the narrator says the return value of the huh frame is a list like this: [lambda, lambda, [lambda, lambda]]. However, it should be: [lambda, lambda, lambda, lambda].
  • Q4d: The solution is distorted on the PDF. Here is the full solution: The code errors and does not run. The call to the dot_prod on line 6 passes arguments improperly; the arguments must be curried. In other words, they must be passed in like this: dot_prod([2, 3, 2, 1, 4])([10, 20, 30, 40, 50]).
  • Q5e: The solution should say chars.items() not chars.keys()
  • Q8c: The correct solution is type(root[key]) == str.
  • Q8d: The correct solution is root[key] != "mrrobot", but note that for the exam we gave all students credit for this question because the wording was ambiguous.


For the final:
Thanks CSM for the walkthroughs!
Summer 2023N/AN/AN/AN/A
Spring 2023Michael Ball For the midterm:
Thanks CSM for the walkthroughs! Please note some typos in the exam and/or walkthrough videos below:
  • Q10a: curr_field and bool(curr_field) are both acceptable answers
  • Q10c: The correct answers are curr_field[0] == 'cobble' and 'cobble' in curr_field
  • Q11c: In the problem description, it should say self.seal_compliments instead of self.compliments


For the final:
Thanks CSM for the walkthroughs! Please note some typos in the exam and/or walkthrough videos below:
  • For Q2c, none of the answer options are correct. The correct answer is -1.
  • For Q12c, it should say return 4 * squared_experience(n // 2).
Fall 2022Michael Ball For the midterm:
Thanks CSM for the walkthroughs! Please note some typos in the exam and/or walkthrough videos below:
  • Q4b: On the blank exam PDF, please ignore the text after Explanation - that was supposed to only be included in the solution PDF.


For the final:
Because of the strike this semester, this final is not representative of most final exams.
Summer 2022N/AN/AN/AN/A
Spring 2022Michael Ball For the midterm:
Q7a is part of the Closet ADT, so you do not need to worry about abstraction barrier violations

For the final:
Thanks CSM for the walkthroughs!
Fall 2021Michael Ball For the midterm:
Thanks CSM for the walkthroughs!

For the final:
Thanks CSM for the walkthroughs!
Summer 2021N/AN/AN/AN/A
Spring 2021Michael Ball, Gerald Friedland For the midterm:
Thanks CSM for the walkthroughs!
Fall 2020Michael Ball N/A
Summer 2020N/AN/AN/AN/A
Spring 2020Michael Ball For the final:
Formatting may be off since the PDF was generated by examtool.
Fall 2019Michael Ball For the midterm:
Please note some typos in the exam and/or walkthrough videos below:
  • Q1: fun(max, 61, 88) evaluates to 61. The correct calls to alt_fib(6) is 25 not 26.
  • Q7: The solution for the iterative version of flatten_list has a typo. Instead of result.append(item) it should say result.append(num).


For the final:
Please note some typos in the exam and/or walkthrough videos below:
  • Q1 video walkthrough: they(cant(stop, all(of, us))) should error, not print SASUKEEE twice.
  • Q5 solutions: last line, helper(n // 10, n % 10) should be helper(num // 10, num % 10).
  • Q5 video walkthrough: At 5:10, the correct answer is not elif num % 10 <= prev, it should be if prev > n % 10 (which matches the solution PDF).
  • Q7: The doctests at the beginning of the question should say "Yum, I ate 3 pieces of chocolate" instead of "Yum, I ate 3 pieces of milk chocolate", and "Oh no! There is no more chocolate" instead of "Oh no! There is no more milk chocolate".
Spring 2019Gerald Friedland N/A
Fall 2018David Culler N/A
Spring 2018Gerald Friedland N/A
Fall 2017N/AN/AN/AN/A
Spring 2017N/AN/AN/AN/A
Fall 2016N/AN/AN/AN/A
Spring 2016David Culler N/A
Fall 2015N/AN/AN/AN/A
Summer 2015N/AN/AN/AN/A
Spring 2015N/AN/AN/AN/A
Fall 2014N/AN/AN/AN/A
SemesterInstructorMidtermFinalNotes
Summer 2020N/AN/AN/AN/A
Fall 2019Computer Science Mentors N/AN/A
Spring 2018Gerald FriedlandN/A N/A
Spring 2017N/AN/AN/AN/A
Spring 2016David CullerN/A N/A