7 ms·
This course looks "fine"; however, I would recommend that anyone interested in exploring CS (or perhaps even if you are a self-taught and very able coder who wa
by khaki54 4y ago
This course looks "fine"; however, I would recommend that anyone interested in exploring CS (or perhaps even if you are a self-taught and very able coder who wants to learn those missing fundamentals ) takes CS50 out of Harvard.
It is easily the most engaging course I have ever taken and it's available for free on edx.org or you can take the "real" class from Harvard extension for a couple grand. You can go into this class as an underwater basket weaver or a strong coder and get a ton out of it.
- toinewx 4y agocan you elaborate on why it is that good? why is it so engaging?
- jstx1 4y agoWell selected material and great quality of teaching. It's for complete beginners and it's very accessible without being dumbed down in any way.
- khaki54 4y agoFor me, they teach the fundamental (basic) concepts and then have you cycle through a bunch of programming languages week to week to reinforce they are simply the tool and they all have their own pros and cons. When I took it, they had javascript, c, python, php, java, snap, integrating APIs and libs... maybe more. The course has 2 tracks which are graded the same: "regular" for those new to cs/programming and "hacker" which has a bit more of a challenge to keep it interesting, and you just do whatever one you want to do that week. Each assignment has additional optional material explaining and reinforcing the concept so if you are a little opaque in an area you can go and study that a bit more before returning to the assignment. Ultimately, there is a walkthrough for each week that gives you about 95%+ of the answer in case you get really stuck. If you understood the concept well enough from the lecture or your own background, you can just blast right through the assignment, or put your own spin on it. Supposedly this course is responsible for hundreds (if not thousands) of people changing their planned field of study to be more technical due to the huge accessibility of the material to what they call "less comfortable" students. They also teach you a few adjacent things that are relevant and probably wouldn't be covered by most modern programming courses. They teach you how to use desktop VMs for your IDE. They teach you how to use a basic IDE. They teach you the basics of Linux command line. They teach you what memory leaks are and how to find them. You're graded on style, there is an automated style checker. For me, I got a kick out of all the sorting algorithms and how it applied to big O notation and software complexity. Previously I understood roughly how it worked but the course went deep enough where I tried implementing some of them on my own "for fun" to see if I could do it. For my final project, I built a native android app, and although they didn't teach anything specifically about mobile app design, I had enough confidence at that point to knock it out. On top of all those items, production value of the course seemed huge, very well done.
- otras 4y agoStrongly second CS50. I took it when first getting into tech, and it was a very solid starting point to build my CS foundation. I’ve heard from folks I’ve recommended it to that they’ve continued to iterate and improve the course as well.
- aabhay 4y agoI’d recommend CS 61a/b/c from UC Berkeley. I think it’s available online as well. The reason I like these three courses is that they cover the three key aspects of computing — programming, data structures, and machine structures. I find that the last part is often left out because we “abstract” away low level features of computers, but learning even the basics of page tables, caches, instruction sets, timing, etc. is extremely critical to a complete understanding of what’s going on.
- pamelafox 4y agoI was the most recent instructor of 61A and just wrote up tips on auditing it: http://blog.pamelafox.org/2022/07/how-to-audit-cs61a.html http://blog.pamelafox.org/2022/07/how-to-audit-cs61a.html However, I don't recommend 61A for folks new to programming, it's better as a second course.
- lunarboy 4y agoI took 61a under DeNero as a transfer with high school APCS and college intro class experience, since the dept didn't let me waive the scheme/lisp part. And I was shocked at difficulty, like "no way kids programming for the first time as freshmen can keep up with his course pace"
- aabhay 4y agoHm I took it under someone else so I’m not sure what it’s like these days. Sad that it has such a reputation.. I was able to ace the course and transfer into EECS my freshman year, so things probably have gotten much harder in the last ten years.
- schoen 4y agoI remember some kind of test to get into it (1997) which asked people to write a recursive function (I think it said something like "please write a recursive function in the programming language of your choice"). If you could do this, you could take CS 61A; otherwise, you were asked to take CS 3.
- cloogshicer 4y agoI honestly don't understand why people keep recommending CS50. Maybe I'm just a slow learner, but I really think that if I had had to learn programming with that course, I would never have learned it - the learning curve is really steep, and it crams way too many languages into a very short amount of time, making you a jack of all trades and a master of none. I also don't understand the obsession of CS curricula to have people implement things like sorting algorithms by hand. This would've really put me off as a beginner.
- nojito 4y agoThat's the whole point of the course. It's designed to be a catchall introduction to CS. Learning Programming != Learning CS
- jstx1 4y ago> making you a jack of all trades and a master of none. - it's not about learning a language - I don't think it's crammed either - it covers a lot but everything is explained in a very accessible way from first principles - if an introductory course was using only one language, you still wouldn't master the language - being exposed to different ways to do the same thing is very valuable and very underrated for beginners imo because it teaches you to abstract over concepts - when you learn how to read a file, write a loop, sort an array in each one of C/Python/JS, you develop better understanding of the concept of reading/looping/sorting instead of thinking that the only way to do it is the way your first language does it; you begin to develop a sense of which concepts are language-specific and which ones carry over across languages. I think it's better if this understanding happens early instead of late.
- Aperocky 4y ago> making you a jack of all trades and a master of none. Master of a single programming language is a moot concept, it either boils through to other languages or you just memorized the syntax really well.
- bidirectional 4y agoThis is going too far in the other direction. There are absolutely people who have mastered e.g. Java, CPP or whatever with language-specific knowledge. Being an expert on JVM internals won't boil through to Haskell.
- photochemsyn 4y agoCS50 is a good course but this one has a very useful discussion of open source and licensing issues related to various formats that CS50 seems to lack.
- czernobog 4y agoI have been hearing a lot about cs50/cs50x. I will take as a sign and start the course.
- kevinventullo 4y agoI think this Stanford course is aiming at a different goal than Harvard’s CS50. Harvard’s course seems to be aimed at people who are coders or want to be better at coding, so you learn about different languages, algorithms/data structures, SQL and such. The Stanford course, especially the second half, appears to be more in the spirit of liberal arts. It covers high-level concepts in CS (server vs client, how does the internet work, what is encryption) that even someone who never writes code professionally will be able to use. They’ll be better able to read newspaper articles on tech topics, or perhaps more to the point, better equipped to be a PM/lawyer/BD in the tech space.
- mycelia 4y agoYes, I believe CS 106A would be more analogous to Harvard’s CS 50. https://web.stanford.edu/class/archive/cs/cs106a/cs106a.1228/schedule.html https://web.stanford.edu/class/archive/cs/cs106a/cs106a.1228...
- cardy31 4y ago> Harvard’s course seems to be aimed at people who are coders or want to be better at coding, so you learn about different languages, algorithms/data structures, SQL and such. Hard disagree on this one. I learned how to program from CS50 with no prior experience. That introduction got me interested enough to pursue it as a career. I would highly recommend it for anyone who just wants to see what the whole programming thing is all about.
- kevinventullo 4y agoI did not intend to suggest CS50 required coding experience. My comment was more that the goal of CS50 seems to be about making the student a better coder by the end (including the case where the student has no coding experience). That does not seem to be the goal of Stanford’s CS101.
- cehrlich 4y agoHarvard's CS50 is specifically described as a programming course for non-programmers.