Skip to content
/ CS61A Public

UC Berkeley CS61A: Structure and Interpretation of Computer Programs (Finished)

Notifications You must be signed in to change notification settings

CandyOre/CS61A

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS61A: Structure and Interpretation of Computer Programs

Description

UC Berkeley CS61A is a course about general programming techniques, primarily using Python 3, switching to Scheme and SQL in the latter of the course. There is a list of what I learned from this course, for your reference.

With Python:

  1. High-Order Function
  2. Environment Diagram, a helper to trace name bindings
  3. Original Data Abstraction Idea without OOP concept
  4. Mutable Values & Functions, Non-local Assignment
  5. Polymorphic Functions in Python, e.g. __repr__, __str__
  6. Iterator and Build-in Functions for Iteration, e.g. map, filter, zip, etc.

With Scheme:

  1. Scheme Lists
  2. Generating Code with Quote & Quasiquote
  3. Dynamic Scope
  4. Tail Calls
  5. Macros
  6. Structure of Scheme Interpreter, and implement one in project 4.

With SQL:

  1. Concept of Declarative Languages
  2. Basic Operation, including Table and Aggregation
  3. Database Connection with Python and Sqlite.

Resources

I'm using Fall 2020 edition of CS61A. Some details of the materials in different semesters are not the same, but the cores of them are identical.

For the 3rd project Ants, I refer to the Spring 2022 version for a provided comprehensive GUI, which is not accessible in the Fall 2020 version. Upd: Project Ants in Spring 2022 is much harder than it in Fall 2020 QAQ!

For the 4th project, where a scheme interpreter is created, I choose to complete the Challenge Version Normal Version. I'll leave the Challenge Version, which is quite hard to start from scratch in a few days, for the purpose of reviewing.

Other unofficial CS61A repo for reference. Notice: DO NOT look at other's code unless you've finished the problem.

Progress

I'm here to take this course mainly for 2 reasons.

  1. Review Python 3 from a new angle, i.e. functional programming.
  2. Complete SICP learning, which I gave up in last summer break.

I hope to complete this course quickly, namely less than 1 week 10 days.

Upd: I basically complete the course by 0731 ww.

Date PPT Hw Lab Proj Time
0724 01-02 01 00 1.5h
0725 03-05 01-02 2.5h
0726 06-12 02-03 04 hog 5.5h
0727 12-21 04 05-06 5h
0728 22-24 07-08 cats 4h
0729 ants 4h
0730 27-30 06-07 10-11 3h
0731 31-34 12-13 scheme 6.5h
0801 35-37 2h

About

UC Berkeley CS61A: Structure and Interpretation of Computer Programs (Finished)

Resources

Stars

Watchers

Forks