by ggr2342 on 8/31/23, 7:18 AM with 72 comments
The books and blogs at least taught me basic syntax constructs like variables, function definition, loops, etc. But I couldn't understand how to package them up (compose) to use them in solving problems.
Then I started studying through Berkeley's 3 course intro CS61A, CS61B, CS61C. They have all materials in the open and if you are following the most current iteration of the course, they even post solutions to the problems. It was godsend for me.
Now, I am confident to learn more CS topics using courses from CMU, MIT, Berkeley, Stanford, etc. The thing that was holding me back was the lack of confidence of programming and understanding really what a program was doing.
by mdorazio on 8/31/23, 12:19 PM
Here's my take: if you are interested in computer science, the combination of these classes is great. If you are interested in being a software developer or building things quickly to solve problems there are far better resources out there.
by throwaway71271 on 8/31/23, 8:29 AM
We still have not understood how to tach coding. The subject seems to be completely non linear, and some people get stuck and cant move on and the teachers cant figure out why and they cant figure out why, it could last 1 month or could last 5 years, and at some point some random thing they read or watched completely unlocks them.
(For me the thing that helped me was Richard Buckland's Higher Computing lectures: https://www.youtube.com/watch?v=hE7l6Adoiiw&list=PL6B940F08B...)
The best way to learn is to keep trying and particularly trying to understand what you do not understand.
As Feynman said on his last board: What I can not create, I do not understand.
So if you are one of those people who is stuck, or you watch CS61A/B and it does not work for you, just keep looking and trying.
by sgloutnikov on 8/31/23, 8:40 AM
by pamelafox on 8/31/23, 2:19 PM
Here’s my post about how to audit 61A : http://blog.pamelafox.org/2022/07/how-to-audit-cs61a.html?m=...
by trelliscoded on 8/31/23, 8:43 AM
I'm reminded of an experiment I was told to do when I was learning how to be a better cook, and I complained that I didn't understand what bay leaf was adding to a dish. Someone suggested cooking some plain white rice with some bay leaf, and I could finally taste the peppery notes it added. Sometimes you need a neutral substrate to see the details of the thing you're trying to learn.
by gnulinux on 8/31/23, 4:44 PM
by flappyeagle on 8/31/23, 9:58 AM
61B made me feel like I knew how to program.
61C taught me how computers work.
A decade or so later 61A is actually the most useful of the 3 courses now that I’m mid career.
I might recommend that you take 61b first before the other 2 if you’re just starting out
by Cjcrew on 8/31/23, 8:11 AM
by debanjan16 on 8/31/23, 1:49 PM
Then I cam across the book How to Design Programs aka HTDP. I was skeptical at first. But I eventually started and worked through the second edition of the book available freely at https://www.htdp.org .
It was so beautiful. The teaching languages and writing examples before writing code. It made me really understand programming.
Now I can pick up any language (not that I become a language expert overnight) in a short time. I only need to map the concepts to this new language. And that's that. I can even pattern match my ideas from higher order functions to imperative looping constructs.
I have another book in to TDR list. It is Norvig's Paradigms of Artificial Intelligence Programming.
by realjohng on 8/31/23, 3:47 PM
by itissid on 8/31/23, 1:10 PM
by aabhay on 8/31/23, 1:30 PM
My only recommendation is to learn programming in a more useful and productive language like C++, as the thing you do not want to do in CS61A is to simultaneously learn to program and learn the concepts in those courses. The right way to think about it is those courses are trying to make you go “ohh that’s how things actually work”.
by theak on 8/31/23, 4:10 PM
I had previously tried to learn Java as my first language and never could make sense of all of the "public static void main(String[] args)" and handwaving involved to write a simple hello world.
by matt3210 on 8/31/23, 7:46 AM
by pharmakom on 8/31/23, 10:07 AM
by talldatethrow on 8/31/23, 8:45 AM
I think you'll learn tons by starting a personal project, tiny, small, daunting, whatever your appetite for pain is, and just doing that.
I thrashed away on my crm like saas for 6 months before the first demo customers were using it. And then worked on it for another year till it was sellable to less friendly companies.
Recently I picked up a JavaScript book and read it. While I learned a few things, I was shocked how much I knew from what I learned from stack overflow and just random reading and thinking during the time of building that CRM.
by rajeshmr on 8/31/23, 7:46 AM
by dsingh on 8/31/23, 9:08 PM
I was fortunate to take - - CS60A with Stuart Russell - CS60B with John Ousterhout (now Stanford) - CS60C with Paul Hilfinger - CS150 with Randy Katz
I believe (after watching videos online) that CS10 The Beauty and Joy of Computing is also a wonderful intro course to take before the CS61 series.
My daughter took CS61B with Paul Hilfinger and he was so gracious to take a picture with the 3 of us together. I have it here on my office desk!!!
by ah27182 on 8/31/23, 1:54 PM
I’ve heard a lot of good things about Harvards CS-50, not sure how that compares.
by whatsup7123 on 8/31/23, 1:25 PM
by mistrial9 on 8/31/23, 1:44 PM
by terrycody on 9/1/23, 1:55 AM