Live data from Hacker News

CS 61B Data Structures, Spring 2023 UC Berkeley

sp23.datastructur.es

51–60 of 76 posts

Re: CS 61B Data Structures, Spring 2023 UC Berkeley

#52

Forgive me for the ignorance (I'm a front end dev), but can someone explain to me why this made it to the front page of hacker news when there are already many resources for learning data structures? I feel like I could just go through the docs for for java / kotlin collections lib and cracking the code interview, and get a good understanding of DS / algos. What would this offer beyond that? (this is a genuine questi…

> I feel like I could just go through the docs for for java / kotlin collections lib and cracking the code interview, and get a good understanding of DS / algos. What would this offer beyond that?

Reading the Java standard library documentation will teach you what pre-made data structures are available to you, but will not teach you how they work under the covers, or why they work. Reading Cracking the Coding interview will help you use data structures and algorithms specifically in the context of applying for jobs. If you want a deeper understanding you should do a course/tutorial/book that is more focused on the fundamental problem solving techniques like the linked Berkeley course.

In the book realm, I recommend Grokking Algorithms for a gentle introduction, or Algorithms by Sedgewick and Wayne for a deeper understanding. My own book, Classic Computer Science Problems in Java, is a gateway to the wider world of computer science. Yet, for sure this deeper understanding is not necessary for the majority of day-to-day dev work. However, if you have a curiosity, want to work on more fundamental problems, or be sure that you are always doing things the most efficient way possible, it is necessary.

Re: CS 61B Data Structures, Spring 2023 UC Berkeley

#53
post #22

speaking of, are there any benefits/disadvantages of learning data structures in java/python compared to C/C++ ?

The data structures and algorithms themselves should be the same regardless of what language you are using.

The bigger difference here would be C versus C++, as the language features present in the latter allow significantly more abstraction than the former. Implementing fundamental data structures in C can be very instructive but you will also spend more time on low-level details.

With Java and Python you can ignore memory management to some extent, as these languages are garbage-collected. That could also be a plus or a minus depending on your point of view. When learning the subject, it might be better to be forced to do manual memory management, to learn about the pertinent issues. And then once in "production", you can appreciate the convenience of a garbage-collected language.

When I studied EECS at Berkeley in the late 20th century, we used the following languages:

1. CS61A "Structure and Interpretation of Computer Programs" - Scheme/Lisp. Very highly abstracted from the machine details.

2. CS61B Algorithms and data structures - C++/Java. Allows "just enough" machine details.

3. CS61C Machine structures - MIPS assembly language and some C. All the machine details.

4. EECS 152 Computer Architecture - Implement a RISC/MIPS CPU and SDRAM controller using VHDL.

Re: CS 61B Data Structures, Spring 2023 UC Berkeley

#54
post #33

Earlier quoted context omitted.

I'll simplify. In 2023, there are much more effective ways to teach computer science than tossing lecture videos up on a web site with homework assignments. MIT pioneered that in the nineties with OCW. It was a good idea at the time. Now, we have ways of doing online learning which are an order of magnitude more engaging, and lead to much better learning outcomes. I would never use the Berkeley stuff with kids. I mig…

Hi, I used to TA for 61B. This isn’t an online course though. You’ll notice a small detail at the top “245 Li Ka Shing” which is the lecture hall used. Granted most students don’t attend because the lectures are diligently posted online on the website. What’s not captured on the website are twice a week discussion small groups where one TA to 20-30 students work through problems in a group setting. There’s a lot of c…

One of the lectures is actually "The Design of CS61B" which explains a lot about how the course is structured and how it has evolved!

https://docs.google.com/presentation/d/1dWqymxQxZrMWYl76GfJo...

In my mind this is the most interesting aspect of this course website - the meta reflection aspect.

Re: CS 61B Data Structures, Spring 2023 UC Berkeley

#55
post #51

Oh man that brings back nostalgia from my 1997/98 student days. CS61B was okay. But I still have nightmares from CS61A which was taught in Scheme back then. I've hated recursions and using an ((excessive amount) of brackets) ever since.

Oh man I am sorry you had that experience. I look back on CS61A with SICP in Scheme (taught by Brian Harvey) as one of the most enjoyable and enlightening experiences of my college academic career.

Re: CS 61B Data Structures, Spring 2023 UC Berkeley

#56
post #6

I took this course with Hug many years ago. He's a truly gifted educator and I learned so much from the projects.

I took this so many years ago I can't remember who taught it. Paul Hilfinger maybe? Microvax assembly language was a big part of the course, IIRC.

A dead assembly language sounds like a Hilfinger thing. Taking 61B with him was an experience. He started by asking us to look to our left and to our right. He told us that one of us would not make it to the end of the class, with pride in his voice. He was right about that.

In his defense he would also work very long hours answering emails from students. The night before projects were due he would hang out in his office all night in case people had questions. He'd return submitted code to you with detailed comments about how to write clean, readable code. More so than data structures I learned how to write readable code in that class.

Re: CS 61B Data Structures, Spring 2023 UC Berkeley

#57

Forgive me for the ignorance (I'm a front end dev), but can someone explain to me why this made it to the front page of hacker news when there are already many resources for learning data structures? I feel like I could just go through the docs for for java / kotlin collections lib and cracking the code interview, and get a good understanding of DS / algos. What would this offer beyond that? (this is a genuine questi…

> I feel like I could just go through the docs for for java / kotlin collections lib and cracking the code interview, and get a good understanding of DS / algos. What would this offer beyond that?

It offers video lectures -- did you look at the link?

Not everyone learns the exact same way. Maybe this is upvoted because people (on aggregate) prefer the course's contents over reading through Java libraries?

Also, honestly, language libraries can be hit-or-miss in terms of algos since they reward optimization over simplicity. Python's standard sort (apparently Java's too?) for instance is Timsort [1] — not necessarily what you want for an introductory course.

----------------------------------------

[1] https://en.wikipedia.org/wiki/Timsort

Re: CS 61B Data Structures, Spring 2023 UC Berkeley

#59

I took this course with Hug many years ago. He's a truly gifted educator and I learned so much from the projects.

I took it with hilfinger, solving the projects in 61b was probably the most fun I had at Berkeley (while actually working on class related things)

Re: CS 61B Data Structures, Spring 2023 UC Berkeley

#60

If you like this, I strongly encourage you to also check out Harvard’s CS50. Lectures are all on YouTube. https://cs50.harvard.edu

Or perhaps UC Berkeley's Structure and Interpretation of Computer Programs Course https://cs61a.org/

Highly recommend CS61A. Can't say enough good things about it.
Post reply on HN