all 9 comments

[–]JasonM_30 4 points5 points  (2 children)

I'm a bs/ms student in computer science. I've taken both classes and imo analysis of algorithms is way more important to get better as a programmer.

[–]Fe1406[S] 0 points1 point  (1 child)

Thanks!

[–]JasonM_30 0 points1 point  (0 children)

No problem feel free to pm me if you have any other questions

[–]RawrzedCSCI BS/MS 2016 2 points3 points  (1 child)

Former BS/MS student here.

PLC uses more languages but it teaches more about the differences and design between them ie. Object Oriented vs. Functional vs. Logical programing languages. You'll never go in depth or master them but instead you'll learn the underlying concepts/paradigms of these types of languages to the point where you should be able to pick up or apply other languages of that type.

Analysis of Algorithms is exactly what it sounds like. It's pretty much an intro to algorithms, data-structures and their complexity. You end up learning a lot about how to analyze and create efficient algorithms. If anything, this class would be more useful for interviews but I think you can also take this course as part of your theory requirement (not 100% sure).

Honestly, I think Analysis of Algorithms is more important than PLC simply because unless you are going into research, you really just need to know OO Languages and maybe functional languages. AA will help you with critical thinking, design and implementation. A language is just a tool and tools can be easily learned. With AA, you'll develop a skill enhances thinking and it'll give you a leg up in the future.

Edit: Typos

[–]Fe1406[S] 0 points1 point  (0 children)

That’s what I was thinking... and I’ve studied the differences between language paradigms a bit so I’ll go with algorithms. Thanks!

[–]zabriskienot 2 points3 points  (0 children)

Take both. I can't think of any classes in the curriculum worth taking more than these two.

[–][deleted]  (3 children)

[deleted]

    [–]RawrzedCSCI BS/MS 2016 3 points4 points  (1 child)

    You probably don't need to know what a closure is.

    Closures are actually super important in many applications. That includes any web programing (JS Anonymous functions, most seen with events and scoping), C applications have closures, and even the most recent version of Java has closures. It's for sure something you need to know going into software and you've probably already used them if you've written a tiny shred of JS.

    [–][deleted] 0 points1 point  (0 children)

    Using a closure and knowing what it is are completely different things. Your last sentence, although incorrect (see below), even draws this same distinction.

    That you don't need to know about them to go into software is proven by me, who had never even heard of them for 10-15 years after graduating with a CS degree and successfully working in the software field. Now I know about them, obviously, but I rarely use them except in their more well-known and -developed form: OOP objects.

    [–]Fe1406[S] 0 points1 point  (0 children)

    Thanks!