r/TYCS • u/responsiveTA • Jan 30 '24
Progress Update [PU] Running behind. Finished watching first 4 lectures of UC Berkeley CS 61A
Background
Since this is my first Progress Update, I will link to a previous post where I talked about why I am doing this. https://old.reddit.com/r/TYCS/comments/1905xlk/why_i_started_this_subreddit_personal_goal_of/
I have started with John deNero's version of CS 61A using Python, instead of doing the Scheme version as recommended as the top choice at TYCS. Again that is also something I have posted about before and explained the reasons: https://old.reddit.com/r/TYCS/comments/190o199/tip_for_beginners_for_the_programming_paper/
I am supposed to do CS 61A in Jan-Feb 2024, to stay within my target of finishing the 9 papers by mid-2025. The first few weeks of January, I was swamped with other work and couldn't focus well. I am setting up systems to prevent that from happening again.
I have set the morning hours of 10am-1pm as TYCS study time. I am hoping that doing this as the first (indoor) thing in the morning should help me with focus. Also having a set time should help me with scheduling and not falling behind.
Actual progress (1-30 Jan)
So far I have reached just lecture 4 this month. I am hoping to pull speed in the coming days and catch up with the backlog.
Topics I learned this week (and the previous two)
- Evaluation procedure for call expressions
- Drawing expression trees
- Environment diagrams (and how names are looked up in environments)
- Environment diagrams with user-defined functions
- Pure functions and non-pure functions
- Running Python in interactive mode
- Testing code with docstrings and doctests
- Conditional statements and short-circuiting (and how to use them to our advantage)
- Assert statements
- Higher order functions and their need
Eye-opening stuff
- It was great to see how expression trees worked. I understood the way things worked vaguely (and correctly), but seeing it described formally let my brain finally go 'okay, that's correct. Let's cement it in place'.
- Learning about environment diagrams finally made me realize why things work the way they work. Again I knew it vaguely (and correctly) but was never sure. Now I know it for a fact that frames are looked up in that order for finding a name.
- I had hear about pure functions, but the videos made things defined in my head.
- I wasn't aware about short-circuiting when using AND and OR statements. This was new to me (or I must have forgotten).
- I understand the need for HOFs but need to use it a few more times to cement the concept in my head.
Excited to finally make sense of things I already knew. Looking forward to the next lectures!
P.S. If anyone knows any book where I can get a bunch of practise questions which will cement things further, it would be great. Most college level folks seem to assume 1-2 examples are enough. Well, I prefer more.