Berkeley Cs61a Spring 2011 Archive Save

Berkeley cs61a Spring 2011 Computer Science Course

Project README

Berkeley cs61a Spring 2011 Computer Science Course

This repo attempts to archive all the material publicly available for the cs61a spring 2011 course done at Berkeley by Brian Harvey. The course has moved on to use Python but in 2011 the course used a customization of Lisp. At one point Berkeley had a webcast program that made publicly available course lectures. In 2015 they decided to discontinue the public availability of course lectures in order to reduce costs. They offered this content on different platforms and in 2017 have decided to remove legacy content away from public access due to various legal issues. Also see this reddit post and this FAQ post on legacy content.

The course is based on the book Structure and Interpretation of Computer Programs a.k.a. SICP. Course prerequisite, as you will hear in lecture 1, is being comfortable with and being able to write recursive functions. If you need a quick primer on recursion look at cs61as week 0. I was made aware of the course through the website teachyourselfcs.com. If you find this course to be too difficult look below for alternative courses.

If you want to learn based on the book Structure and Interpretation of Computer Programs but instead of Lisp you are interested in using Python 3 check out Composing Programs.

Getting started

Installing Racket locally on your computer

Download Racket. At the time of this writing (03.2019) I am using version 7.2. Open up Racket and navigate to "File" -> "Package Manager". Inside the package manager we will download some dependencies to be able to use Berkeley defined functions such as word and sentence as demonstrated in lecture 1. Select the tab "Available from Catalog". On the left hand side you will see the button "Update Package List", click it. After the update is complete search for the package planet-dyoo-simply-scheme1. Select the package and click the "Install" button at the bottom of the window. Next search for the package berkeley as description the package should say that it is for the class cs61as. Now close the package manager and navigate to "File" -> "New". At the bottom of the screen click the toggle button "Determine language from source" -> "Choose Language". Choose "The Racket Language" and click "OK". Now you should see a window with two boxes - at the top the definitions window and on the bottom the interactions window.

Inside the definitions window should be:

#lang racket

Add the line:

(require berkeley)

(sentence 'hello 'world)

Now click the button "Run" and inside of the interactions window should be printed

'(hello world)

If you are more of the type that prefers working with the command line you can use the raco Racket command line tool. To set it up on your system simple navigate to "Help" -> "Configure command line for Racket". After setting this up open up a command line and type in the following:

raco pkg install --auto berkeley

and

raco pkg install --auto planet-dyoo-simply-scheme1

If you are having difficulties with installing packages you can also translate the original library files local or online from Scheme to Racket.

I want to install the original Berkeley UCB Scheme Stk used in the lectures

It is available here.

Video lectures and required corresponding reading from SICP

Readings should be done before lecture series.

  1. Functional programming (1.1)
  2. Functional programming (1.1)
  3. Higher-order procedures (1.3)
  4. Higher-order procedures (1.3)
  5. User interface Alan Kay (1.3)
  6. User interface Alan Kay (1.2.1–4)
  7. Orders of growth (1.2.1–4)
  8. Recursion and iteration (1.2.1–4)
  9. Data abstraction (2.1, 2.2.1)
  10. Sequences (2.1, 2.2.1)
  11. Example calculator (2.1, 2.2.1)
  12. Hierarchical data (2.2.2–3, 2.3.1,3)
  13. Hierarchical data (2.2.2–3, 2.3.1,3)
  14. Example Scheme (2.2.2–3, 2.3.1,3)
  15. No lecture available
  16. Generic operators (2.4–2.5.2)
  17. Generic operators (2.4–2.5.2)
  18. Object-oriented programming (OOP (reader))
  19. Object oriented programming (OOP (reader))
  20. Object oriented programming (OOP (reader))
  21. Assignment and state (3.1, 3.2)
  22. Environments (3.1, 3.2)
  23. Environments (3.1, 3.2)
  24. Mutable data (3.3.1–3)
  25. Mutable data (3.3.1–3)
  26. Vectors (3.3.1–3)
  27. No lecture available
  28. No lecture available
  29. No lecture available
  30. Client-server programming (3.4)
  31. Concurrency (3.4)
  32. Concurrency (3.4)
  33. Streams (3.5.1–3, 3.5.5, Therac (reader))
  34. Streams (3.5.1–3, 3.5.5, Therac (reader))
  35. Therac-25 (3.5.1–3, 3.5.5, Therac (reader))
  36. Metacircular evaluator (4.1.1–6)
  37. Metacircular evaluator (4.1.1–6)
  38. Mapreduce (4.1.1–6)
  39. Mapreduce (4.1.7, 4.2)
  40. Analyzing evaluator (4.1.7, 4.2)
  41. Lazy evaluator (4.1.7, 4.2)
  42. Logic programming (4.4.1–3)
  43. Logic programming (4.4.1–3)
  44. Review (4.4.1–3)

Course Documents

  • Course Book - Structure and Interpretation of Computer Programs online or online
  • Course syllabus local or online
  • Course Reader - Volume 1 local or online
  • Course Reader - Volume 2 local or online
    • Object-Oriented Programming: Above the Line View local or online
      • Reference Manual for the OOP Language local or online
    • Object-Oriented Programming: Below the Line View local or online
    • Highlights of GNU Emacs (Prof. Paul Hilfinger, UCB EECS) local or online
      • Emacs Quick Reference Guide (Prof. Paul Hilfinger, UCB EECS) local or online
    • Exit Information (Read at end of semester!) local or online
    • An Investigation of the Therac-25 Accidents (Nancy G. Leveson, Clark S. Turner. IEEE Computer, July 1993) local or online
    • Revised5 Report on Scheme (Richard Kelsey, William Clinger, Jonathan Rees (Editors), et al., 1998) local or online
    • Sample Exams
      • These exams are made up of actual past exam questions, but reorganized to make each sample more comprehensive and to choose the best possible questions. Some of the exams are a little longer (by one question) than actual exams, but they're in the right ballpark. Since the questions within a sample are taken from different semesters, don't try to compare the number of points between problems. The solutions include scoring information only to give you an idea of how part credit is awarded within each problem.
      • Midterm 1
      • Midterm 2
      • Midterm 3
      • Final exam
    • Mapreduce: Simplified Data Processing on Large Clusters (Jeffrey Dean, Sanjay Ghemawat, Google, Inc., OSDI 2004) local or online
    • Lecture Notes local or online
    • SICP Errata (Harold Abelson, Gerald Jay Sussman, Julie Sussman, 1999) local or online
    • Berkeley Word/Sentence Functions local or online
    • Ergonomic Information (external links)
      • Computer Workstation Ergonomics (CDC) online
      • Ergonomics for Computer Workstations (NIH DOHS) online
  • Answers to assignments done by another student

Other beginning level classes and resources involving Lisp if this course deams to be too difficult

Other classes and resources for computer science

Open Source Agenda is not affiliated with "Berkeley Cs61a Spring 2011 Archive" Project. README Source: theurere/berkeley_cs61a_spring-2011_archive
Stars
83
Open Issues
0
Last Commit
5 years ago

Open Source Agenda Badge

Open Source Agenda Rating