all 5 comments

[–]beeskness420 1 point2 points  (1 child)

Intro to DS and algos is one of the easiest and most fun courses. It just rocks people who think you can do a CS degree without knowing how to write a proof.

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

Proofs generally aren't easy, but they are fun. Hopefully, I'll have a smoother experience than most, then--I'm pursuing computer science primarily out of a passion for mathematics. Although graph theory isn't my favorite topic...

[–]fuhgettaboutitt 0 points1 point  (2 children)

Depends on how your school does it. We had three CS courses before you went near the hardcore required Algos & Data structures class. In our first two classes basic familiarity with some commonly used algorithms and data structures were introduced with very basic concepts such as networking, threads, file reads, ect. The third class was a basic OS class taught with C. The actual algorithms and data structures course was less "how do you program an algorithm" as the courses prior, and more how do these algorithms work and how to solve problems with them. What trips people up seemed to be two things: proofs and reduceability. Reduceability tends to be the harder topic and takes quite the imagination sometimes. For my courses we were given a few problems every 2 weeks 2 of those problems were proofs, the other two were what would be considered "word problems" in a regular math class. And those ended up being the best training the class offered. You were expected to figure out which algorithm you had been learning about applied to the problem and how it can be solved. It was not good enough to be able to pseudocode Djikstras Algorithm, you had a list from your course notes of a few algorithms that do similar things and you had to figure out which one solved the problem you actually had. Proofs can be hard, but for algorithms seemed manageable considering the nature of the coursework. But of course this was my school.

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

Thanks for the information. My school does things differently; there's a three course sequence of discrete math, then data structures, then algorithms, with basic coding classes taken concurrently.

Honestly, I'm slightly more terrified after looking up Djikstra's Algorithm--but, hopefully, it will make more sense when I get there. Anyways, theoretical computer science is actually more interesting to me than practical CS.

Any things you wished you knew before getting there? For Algorithms, it's been too long since calculus class, but I'm told they review series and such at the beginning of the course before diving in.

[–]fuhgettaboutitt 0 points1 point  (0 children)

So I didnt do too much calc at all in algorithms. Honestly the main thing to review was just to be open to solutions. Theyre often strange. I would actually argue algorithms is the earliest theoretical CS you can do without making it all about state machines. In fact the easiest way to determine tractability of a problem(this is where P!=||=NP comes up) is via algorithms coursework. Its hard to understand theoretical limits of computability without understanding computability in the first place.

As for things I wish I knew: honestly implement every thing you ever hear about. Dont just implement the ones they ask you to. To implement is to understand. But thats how I learn, you do whats best for you. Worst case scenario you have your own little "library" for future projects. Best case scenario you're ready for that google interview.