• Some users have recently had their accounts hijacked. It seems that the now defunct EVGA forums might have compromised your password there and seems many are using the same PW here. We would suggest you UPDATE YOUR PASSWORD and TURN ON 2FA for your account here to further secure it. None of the compromised accounts had 2FA turned on.
    Once you have enabled 2FA, your account will be updated soon to show a badge, letting other members know that you use 2FA to protect your account. This should be beneficial for everyone that uses FSFT.

Udacity - Computer Science 101

Skizzy

Supreme [H]ardness
Joined
Nov 28, 2006
Messages
4,096
http://www.udacity.com/

Has anyone used it or heard of it before? It's features a CS 101 class that's supposedly like any CS 101 class in college. The professor focuses on Python, and all the "lecture" is video-based, with no more than 10 minutes of speaking before a quiz to make sure you retained what he just said. I've tried quite a few of these programming tutorial websites (cscircles and codecademy), but this one seems my favorite so far. I just hit Unit 2 (think week 2; there are 8 Units total, complete with "homework") and it's covered quite a bit of material already.

Now since I don't have any experience with programming or college courses, I can't say how well exactly it's doing, but I'm pretty happy with it so far. I suggest checking it out. There are other courses besides Computer Science, and it even has a bunch of other classes, including CS212 (Design of Computer Programs: Computer Principles) and CS313 (Intro to Theoretical Computer Science). I haven't checked in the course list in a few days since I signed up for CS101, but it looks like they either added or are going to add a bunch of new classes, so that's nice to see they are still focusing on it. I'm going back to school (actually starting college as a freshman) and want to pursue a CS degree, so I think this is going to be a good head start, even though they'll probably teach C/C++.

I also find it extremely perplexing that the word 'Udacity' has not been typed a single time on any post in the entire forum.
 
I didn't think the internet could get even more awesome, but then all these free course websites seemingly started popping up out of nowhere.
 
Some of them have been around for a while but yeah I recently discovered them too. It's a billion times better than just going through a book or reading random tutorials when it comes to learning about this sort of thing.

I'm really impressed with the cs50x course so far. I can't give it a higher recommendation. If you're looking to get into CS I would be surprised if you could find a better free source of information. I love being taught something as if I'm retarded and cs50x does this flawlessly. Most of the course is in C too.

The professors and TAs actually explain concepts in regular English rather than try to sound smart and fill up each sentence with 100 buzz words or "programmer vocabulary". Most book authors and some other professors from other courses just speak at a level of complexity that's not good when you're trying to learn something new. It's hilarious when I watch some professor/TA videos from cs50x and then watch a lecture video on 6.00x. I find usually the TAs from cs50x can explain concepts much better than the 6.00x professors.

I'm sure the professors from 6.00x are smart, but they don't know how to explain things to someone who isn't already at that level.
 
I think I need to be more fair to 6.00x. When John Guttag gives the lectures I find him pretty easy to follow, he's also really funny.
 
I think I need to be more fair to 6.00x. When John Guttag gives the lectures I find him pretty easy to follow, he's also really funny.

I thought Grimson was great. Guttag started off confusing, but I think I like him now. I play his videos at 1.25x minimum, and it feels like it's normal speed. :D

I was initially impressed with 6.00x. When cs50x started, I thought it was going to blow 6.00x out of the water. The presentation just seemed to be immaculate. It's basically the difference of being in the classroom (cs50x) to just the meat and potatoes (6.00x). In the end, I like both styles and am glad I chose each course.

What are your plans after these courses are over?
 
I'm glad I chose both too. I like learning C along side Python. I feel like both languages together will be valuable to learn.

After they are finished my plans are to take CS212 and I might take the edx AI course. My math background isn't very good though, I found myself struggling a bit on some of the 6.00x math so far. How about you?
 
This seems much better than reading some tutorials/books, hopefully I can keep interested.
 
This seems much better than reading some tutorials/books, hopefully I can keep interested.

Keep in mind, though, that it's significantly less in-depth than most textbooks would be.
 
Keep in mind, though, that it's significantly less in-depth than most textbooks would be.

I'm just looking to learn some basics, then go into further depth with books and such.
 
Most of those courses come with a text book too if you want. It's much easier (for me at least) to get 95% of the information from the lectures and then if I need the extra 5% I can look it up in a book rather than getting 100% of it from a book. The most important thing really is the homework assignments and exercises. Applying what you've learned is how you "really" learn it.
 
Last edited:
Most of those courses come with a text book too if you want. It's much easier (for me at least) to get 95% of the information from the lectures and then if I need the extra 5% I can look it up in a book rather than getting 100% of it from a book. The most important thing really is the homework assignments and exercises. Applying what you've learned is how you "really" learn it.

Unfortunately, the material doesn't actually break down like that. These 'courses' are extremely condensed, while most college textbooks typically span about 2 semesters worth of material.

So you're not getting 95% of the material from the course. You're really getting more like 40% of the material. If you're simply trying to achieve a survey of a certain topic, these courses should be sufficient, but if you're actually looking for a rigorous or thorough treatment, these courses won't get you very far.
 
6.00x and cs50x are both given at their respective universities in a live environment. AFAIK the online version is identical. It's definitely going to be less info than a typical 4 year CS series of courses but now you're comparing 4 years of courses vs a single 8 week course. They are meant to be introduction to CS courses.

I'm kind of curious too what a typical CS course entails for at least the first year. I've seen forum posts of people who said they are in their third year of CS asking questions that you learned in the first few weeks of cs50x or 6.00x. Of course everyone is going to apply what they've learned differently but I can't imagine a first year CS student from x uni is going to end up knowing that much more than someone who took cs50x and 6.00x.
 
6.00x and cs50x are both given at their respective universities in a live environment. AFAIK the online version is identical. It's definitely going to be less info than a typical 4 year CS series of courses but now you're comparing 4 years of courses vs a single 8 week course. They are meant to be introduction to CS courses.

I was referring to the Udacity courses, since those are the topic of this thread.

I'm kind of curious too what a typical CS course entails for at least the first year. I've seen forum posts of people who said they are in their third year of CS asking questions that you learned in the first few weeks of cs50x or 6.00x.

Those individuals are likely not exceptional students.
 
Can you give me a brief overview of what a typical first year CS student would have learned from an average university?
 
Can you give me a brief overview of what a typical first year CS student would have learned from an average university?

This is generally how things go in the US: Depending on how the student arranges their schedule, they're going to take one or two 'Intro to Programming' classes and in some cases a discrete mathematics course as well. The programming classes are generally a two semester sequence, usually named something like 'Intro to Programming I' and 'Intro to Programming II' or 'Intro to Computer Science I' or 'Intro to Computer Science II'. The first semester course is usually taught in either Python, Java or C++ (the whole Python thing is a rather recent change) and the second semester course is generally taught in C++.

The first semester programming class (and this is going to be something every first year programming student will have taken) usually introduces the rudimentary ideas of programming and the object oriented paradigm: types, type declaration, assignment statements, type casting, scope and namespaces, selection statements, loops, functions, recursion, overloads, basic I/O, containers, classes, etc. In addition, a lot of emphasis is placed on problem solving, abstraction, and 'thinking like a programmer'.

If the student gets to the traditional second semester programming class within their first year, that usually covers more lower level concepts and introduces algorithms and data structures. Things like pointers, memory management, compiling and linking, debugging, templates, generic containers such as stacks and queues, techniques for implementing abstract data types and containers (contiguous vs non-contiguous memory, single and double linked chains, etc), streams and strings, the Standard Template Library (STL), basic algorithm analysis, common search and sort algorithms, etc. Problem solving is again intended to be part of this curriculum, and most schools also have students work in and learn how to use a Linux/unix environment as well.

Some students, depending on what credits they entered their program with (so if they did AP or IB in high school) might take a discrete mathematics course in their freshman year as well. These cover prepositional logic, proof, sets and axioms, matrices, induction, recursion and recurrence relations, counting, probability theory, graph theory and trees, Boolean algebra, grammars, finite state machines, Turing machines, etc.

Some schools have additional things like 1 credit seminars on things like computer science as a profession, etc., but these aren't really anything you'd be missing out on.
 
I'm glad I chose both too. I like learning C along side Python. I feel like both languages together will be valuable to learn.

After they are finished my plans are to take CS212 and I might take the edx AI course. My math background isn't very good though, I found myself struggling a bit on some of the 6.00x math so far. How about you?

I will likely take a few math courses. I took Calculus 10 years ago, but I haven't really thought about it since... :(
 
Everything you mentioned is included in cs50x and 6.00x. We don't get too crazy into discrete maths though.

The hairiest it's gotten so far was finding the derivative of a polynomial using newton's method or using fixed points and average dampening to approximate square roots using newton's method. We also had to transpose a matrix for a certain problem and I didn't even know what that meant until I looked it up.

We're just now exploring probabilities in depth in one of the courses and how running things like monte carlo simulations can give us confidence in our intuitions.

For the record my math background is garbage. I took a few years of basic algebra in HS and forgot pretty much all of it. To put things into perspective I had to lookup how to reduce a fraction lol. I had to work really hard to understand this math up until this point. Some weeks involved watching 10-15 hours of math videos on external sites. I highly recommend http://www.khanacademy.org for math videos.

@Dogs,
Would you mind laying out year 2? I'm curious how it stands up against CS212 (I haven't taken any udacity courses) and want to scour the other sites to see if they cover any of the topics.
 
@Dogs,
Would you mind laying out year 2? I'm curious how it stands up against CS212 (I haven't taken any udacity courses) and want to scour the other sites to see if they cover any of the topics.

CS212 on Udacity looks pretty thin. It's hard to say what exactly most 2nd year CS programs contain, since this varies more than 1st year programs, but most of them usually have a course on algorithms, a course on design patterns and a course on architecture. So most second year students are at least going to see algorithm analysis (specifically asymptotic analysis, so things like big O and big theta notation), algorithm design (so things like greedy algorithms and divide and conquer), common data structures (like lists, heaps and trees) and common algorithms used on these data structures (like merge sort, quick sort, binary search), design patterns (like abstract factory, etc.), software development strategies (waterfall, scrum, test driven development, etc.), ethics and professionalism, digital logic, hardware architecture, assembly programming, etc. On top of that, most schools throw in whatever additional material they find most important to fill in any extra space.
 
We've covered big O/theta, algorithm design, some data structures, 4-5 different searches, and creating test suites. We also got a small introduction to what happens at the hardware level but haven't (and likely won't) drop into assembly.

Everything else will probably be covered in later weeks + more. It seems like between cs50x and 6.00x you get about 2 years worth of uni CS knowledge. I'm kind of curious now what year 3 would be if you decided to stick to things at the software level and a bit higher level than OS design.
 
We've covered big O/theta, algorithm design, some data structures, 4-5 different searches, and creating test suites. We also got a small introduction to what happens at the hardware level but haven't (and likely won't) drop into assembly.

Everything else will probably be covered in later weeks + more. It seems like between cs50x and 6.00x you get about 2 years worth of uni CS knowledge. I'm kind of curious now what year 3 would be if you decided to stick to things at the software level and a bit higher level than OS design.

Seeing at these courses are both offered as single classes at their respective university, they can't really be seen as a years worth of "uni CS knowledge" apiece.
 
We've covered big O/theta, algorithm design, some data structures, 4-5 different searches, and creating test suites. We also got a small introduction to what happens at the hardware level but haven't (and likely won't) drop into assembly.

Everything else will probably be covered in later weeks + more. It seems like between cs50x and 6.00x you get about 2 years worth of uni CS knowledge.

You're not getting that material to the level of depth you would in a course dedicated to them. All first year classes tend to cover that material to a very introductory extent, but that doesn't mean you're actually learning 'all of it'.

Here, I'll crack open one of my old 2nd year computer science books and quote a couple problems. If you can answer these without looking a bunch of stuff up and reading into material you haven't read before, you can safely say that you're learning 2 years worth of CS material. If you can't though, I think you're getting it into your head that you're learning more than you actually are.

"Propose an algorithm to insert M nodes into a binary heap on N elements in O( M+log(N)*log(log(N)) ) time. Prove your time bound."

"Give an example where Dijkstra's algorithm gives the wrong answer in the presence of a negative edge but no negative-cost cycle."

"What is the asymptotic running time of quickselect, using a median-of-median-of-three partitioning strategy?"

I took these problems from 'Data Structures and Algorithm Analysis in C++', by Mark Allen Weiss. 2nd edition, Addison Wesley Longman, 1999.

I'm kind of curious now what year 3 would be if you decided to stick to things at the software level and a bit higher level than OS design.

Again, as you go further and further into a CS program, you're given more and more freedom with which to select your classes. A 3rd year student could be completing classes in operating systems, compilers, computer architecture, networking, security, databases, software engineering, programming languages, computational theory, signal processing, AI, computer graphics, multimedia, etc. The amount of content available to students just keeps getting wider and wider as they progress through their program.
 
Probably, they are introduction courses though in their defense.

I think they lay enough groundwork though to potentially answer those questions and understand the answers if you really had to for some reason.
 
Back
Top