CS61A Summer 2019
Summarizes my experience learning the contents of CS61A, summer 2019 course version provided by UC Berkeley. It includes solutions to all the required problems and some personal notes.
CS 61A: Structure and Interpretation of Computer Programs
Official Course Site: https://inst.eecs.berkeley.edu/~cs61a/su19/
My GitHub repo with solutions to Labs, Homeworks and Projects: https://github.com/tomthestrom/cs61a
Why did I decide to study this class on my own?
I'd seen this class recommended to newbies and programmers with work experience alike, especially to those who don't have a traditional CS education. I heard a lot of praise on how it helped people better understand functional programming & recursion and get a wider perspective on programming in general.
Using recursion to solve problems was something that I struggled with and seeing that there was a well-structured course freely provided by one of World's best universities - I was curious to see what it was like. I'd also been out of coding professionally for 3+ years (did it for 1 year - PHP & JS, after a bootcamp) and felt like eventually going back to it, so I'd also hoped the skills I'd gain would be useful in my career.
The class starts from the basics - declaring a variable, scope, but picks the pace up in a couple of lectures.
Have I mastered everything this class taught?
No, I don't think so. Writing these lines more than 6 months after the completion of the course, I can say that the more difficult problems could probably trip me up again, but I'm definitely a better programmer having gone through them and at least I know what's out there.
What was the most interesting part of the course?
Definitely Week 6 & 7 - where you get to touch Scheme.
The language seems a bit cryptic in the beginning, everything's surrounded by parentheses, so there are looot of parenthesis, the operator comes first and it just looks like an alphabet soup, but you get the hang of writing basic expressions after a few minutes, gradually building on it, until it feels like a natural flow coming out of your fingertips hitting the keyboard. - For that to happen though, you first have to really know what you want to write. As you can imagine, debugging multiple nested expressions with all the parentheses is no fun, so it really makes sense to measure twice, cut once.
Although this course only taught me a small portion of Scheme, having done all the required problems and even a lot of extras felt rewarding and gave me the feeling of confidence that I could learn any programming language I'd need in the future.
What was the most difficult part?
The fact that I couldn't discuss ideas/struggles with classmates and only had self-imposed deadlines. Sometimes I spent too much time banging my head against the wall, eventually ended up solving it, but now I know that's something I need to work on. I still think it's worth taking this class on your own though, given that everything you need to complete the assignments is provided, you're only lacking any support structure in the form of classmates, TAs and professors.
Last updated