Slashdot Mirror


Ask Slashdot: Online, Free Equivalent To a CompSci BS?

An anonymous reader writes "I am a middle school math teacher and I also run a programming club. I recent completed my M.Ed in math education and was inspired to try to do the new GT online MS in Computer Science in a couple of years. I have some background in programming: two intro to comp sci courses, Java, C++, Python, the main scripting languages, and a bunch of math background. I also read through this great article on getting these pre-requisites completed through Coursera but unfortunately you need to wait for courses to enroll. I would like to just learn these on my own time, no credit necessary. Suggestions?"

28 of 197 comments (clear)

  1. MIT by ACS+Solver · · Score: 4, Informative

    You can learn basically the entire CS curriculum of MIT. This guy did it in 12 months, which is quite extreme, but it shows that the material is all there, and you can of course go through it (or parts of it) at your own pace.

    1. Re:MIT by Anonymous Coward · · Score: 3, Interesting

      Parts of it are painful to do on your own. The emphasis on Scheme and recursive layers of abstraction, and the last 20 years of objected oriented nonsense wasted space that is is the descendant of early LISP research and makes Java programmers so *bad* at performance programming can take a decade to *unlearn* to do anything reliably or in real time. "Object Oriented" is the enemy of understanding why things break.

      I'd still recommend the online courses from MIT, in general, and spending time with toys from Adafruit. There are a stack of toys there that can give a grounding in basic electronics, small system configuration, and microprogramming far beyond any course work done without an actual lab to play in.

  2. Re:Ivy League = theroy loaded classes with skill g by CodeArtisan · · Score: 3, Informative

    If that's what you want, then fair enough - just don't expect a CS degree to deliver that. The CS theory I learned has proved useful in various phases of my 25+ year career, but your milage may vary.

  3. Thank YOU Interwebz by Niris · · Score: 3, Informative

    As a recent CSci graduate from a state university in California, I can tell you that there's far better content online than you'll pick up in a class, so good job checking out that area. MIT has a lot of great courses on YouTube, such as their algorithms lectures from Cormen, and edX has a fair amount of content as well. There's also a lot of books out there if you can pick an area that interests you the most, such as mobile or web, that you can just read through and type up the examples yourself. The thing about programming is that you tend to learn more from doing than from listening to lectures, so if you can just sit down with a book, online tutorials, etc., and just make programs and figure out why they don't work on the first go (and when you pass the forloop/if statement section of your education, they probably won't), then you'll be golden.

  4. Re:Ivy League = theroy loaded classes with skill g by AuMatar · · Score: 5, Insightful

    Other way around. If you learn the new hot skills, you can get a low level job where you'll struggle and work poorly because you don't really know what you're doing. Then when the buzzwords change, you'll be unhirable. If you learn the theory and fundamentals, you'll write better code more quickly and be able to easily pick up new technologies as they come along. Theory always trumps "real world" skills.

    --
    I still have more fans than freaks. WTF is wrong with you people?
  5. You have all the education you need, don't bother by plopez · · Score: 3, Informative

    You know some decent languages and have a background in Mathematics. Dont' waste your time, CS is no more than an Applied Math degree "in drag". All you need is some experience which can be obtained by volunteer work, e.g. maintaining the web site of a no kill animal shelter.

    BTW, since you background is in Math Ed., I assume you have good people and communication skills. That is a great way to differentiate yourself from the pack. You could end up running a tech firm if you do it right.

    --
    putting the 'B' in LGBTQ+
  6. Re:Donald Knuth by jmcbain · · Score: 3, Interesting
    "Computer Science" is a very broad field covering both theory and programming. Here are some great books:

    -- Introduction to Algorithms, 3rd ed., by Cormen, et al. ABSOLUTELY MUST-READ.
    -- Computer networking: a top-down approach, by Kurose and Ross. Great book; skips the physical layer.
    -- The C Programming Language, by Kernighan and Ritchie. This is the one book you need on programming language pragmatics.
    -- Modern Operating Systems, by Tanenbaum.
    -- An Introduction to Statistical Learning: with Applications in R, by James, et al. Have not read this machine learning book myself, but the Amazon reviews say it's great.

  7. Saylor.org by Taxman415a · · Score: 3, Informative

    Saylor has one of the most complete, free, college degree equivalents that I have seen. The best part is many degree programs have links to video lectures, full problem sets and exams.

    http://www.saylor.org/majors/c...

    Their math stuff is decent, and that's what I'm competent to evaluate, so based on that I'd think the compsci would be good too. Some degree areas are not complete yet, but compsci is.

  8. Re:You have all the education you need, don't both by Great+Big+Bird · · Score: 3

    While, CS is definitely applying math, it lies somewhere between Math and Software Engineering. It is certainly not what you minimize it as.

  9. Re:Donald Knuth by pigiron · · Score: 3, Funny

    perl? The poster said computer *science* not unreadable gobbledygook!

  10. Re:Donald Knuth by Jamu · · Score: 2

    Not sure that counts as free. It's $175 ($100 to rent) on Amazon. Although still a lot cheaper than a BS.

    --
    Who ordered that?
  11. Re:Ivy League = theroy loaded classes with skill g by pigiron · · Score: 4, Insightful

    We would all be better off with a good knowledge of the history of the Roman empire since we seem to be following down the drain the disasters of its later stages.

  12. Re:Ivy League = theroy loaded classes with skill g by Zmobie · · Score: 2

    No. Just straight up no. Any idiot can learn how to fumble their way through a programming language's syntax and API (albeit it may take them a while in some instances), but if you want to actually be a real computer scientist or software engineer you need the theory. I've been programming for 10 years now, 3 of it beyond getting my bachelor's degree and the code i write now is worlds better namely because of the information I learned while working through my BS in Comp Sci.

  13. Re:You have all the education you need, don't both by dkf · · Score: 2

    While, CS is definitely applying math, it lies somewhere between Math and Software Engineering.

    Anything to do with user interfaces will have a fair chunk of applied psychology as well (and some appreciation of parts of physiology too). What's more, people doing theoretical CS tend to go much deeper into discrete math than the normal math student does.

    --
    "Little does he know, but there is no 'I' in 'Idiot'!"
  14. Loots of good stuff out there by johnjaydk · · Score: 2

    This is all Python centric but that's where the jazz is these days:

    1. Codecademy. My 12 year old son just passed it.
    2. An Introduction to Interactive Programming in Python (coursera.org). Games and great fun. Also in python.
    3. Udacity.com. Do all of their software subjects. Just ditch the Java stuff. The 90's are long gone.

    I've got a 15 year old masters in CS but I went through the coursera and udacity stuff and learned quite a lot along the way. Good stuff.

    --
    TCAP-Abort
  15. Re:correction by Your.Master · · Score: 3, Informative

    Cathedral and the bazaar isn't RMS' idea, that comes from Eric S. Raymond. And it's not about real world vs. theory -- they are both real world and exist in real working popular products.

    And, crucially, RMS' work was used as an example of the cathedral. Linux was, of course, the bazaar.

  16. Computer Science BS by prefec2 · · Score: 3, Insightful

    You should have a look at the average course structure of a BS program. Normally it contains the following elements:
    - Math. hopefully graph theory, lin. algebra, not so important for most things, but still often found in curricula analysis
    - CS theory: first-order logic/predicate logic, Turing machines, grammars (the Chomsky stuff) LR, LL, LRAR, regular languages, mu-recursion, the language Z or objective-Z (however this item is optional)
    - Different programming paradigms. Best learned with special languages: functional -> Scheme/Lisp/Haskell; OOP, but you already know that.
    - OOP programming and design pattern
    - Software engineering: UML a bit, use case forms etc., different types of project management: agile, RUP and V-model (only basic principles)
    - Hardware: basic analog electric components, transistor etc.; FPGA etc. VHDL or something similar; basic CPU designs, 3-address code, gate architecture (pipeline is often too complicated)
    - Some other basic field. Robotic, e-learning etc.
    - Some extra stuff from a different field (hopefully not a science and not economics)

    There are plenty of books on most of these topics. If you would live in Germany you just could enroll at the next University for free and checkout their courses. Or go there without enrolling. In most cases no one would check if you are a student ;-)

  17. The job equivilent of a college CS education by quietwalker · · Score: 4, Insightful

    The simple fact of the matter is that a 4-year university's computer science program is not meant to provide job training, and as far as career skills go, you could pick up a CS degree equivalent of job skills in under a year.

    I wrote about this the other day, on the Ask Slashdot: Modern Web Development Applied Associates Degree topic, and I'm sticking to my guns on it. You don't need any math more complex than simple algebra. You don't need any theory classes.

    Some of these theory classes may provide better insight, and lacking them may limit you if you're attempting to enter a highly specialized, complex field with no demonstrable experience in it (which, by the by, doesn't really happen), but for 98% of your day job, it's going to be more important for you to know how to parse and sanitize input than it will be for you to know how to write a compiler, raytracer, decompose a function into mathematical terms, perform a Big-O analysis, design a memory manager for an OS, and you'll probably never use matrices or differential equations.

    Hell, the grads I see now a days haven't got a concept of efficient design, most lack basic database skills, awareness of common libraries, common development tools, never used any team-based tracking systems or source control, and so on. Unless they've struck out on their own, they're almost completely unsuitable as candidates. Many of the self-taught devs seem to have a better grasp of things, if only because they end up attempting to write usable software from design to implementation, instead of homework assignments demonstrating polymorphism and recursion.

    On the other hand, for many HR departments, a degree is go/no-go. You'll never get to an interview without one, and there's no free, online equivalent for that. You'll just have to make do with having superior technical skills, and try to apply at a company that values that more than a sheet of paper.

  18. Re:correction by next_ghost · · Score: 4, Insightful

    And theory is just that.... theory. Any academic approach will fails 90% of the time in the real world, hence RMS's bazaar (real world) vs. cathedral (theory) analogy.

    Of course "pro-theory" advocates has a scapegoat: in the real world; if you didn't do it right, it's because you didn't follow the theory as most academics would say (e.g. Agile's "you didn't do it right" excuse). The irony....

    Let me illustrate the difference between theory and "real world skills" on solving any problem which is equivalent to finding shortest path in a graph. There are three basic algorithms to solve that problem: depth-first search (linear-time, only works if the graph is a tree), Dijkstra's algorithm (O(m+n log n) where "m" is the number of edges and "n" is the number of vertices, works on any graph as long as no edges have negative weight) and Floyd-Warshal algorithm (cubic time in the number of vertices, works even with negative weights and detects if the graph contains a negative loop, in which case the shortest path is undefined).

    Somebody who knows the theory will inspect the specific problem he's trying to solve and choose the fastest algorithm from the list above that will work with the data. There are lots of reference implementations around so writing those about 50 lines of code will be easy.

    Somebody who doesn't know the theory but has lots of "real world skills" probably won't realize that the problem has a well-known 50-line solution that works in all cases and he'll hack together some poorly thought-out piece of crap that's too slow and fails spectacularly on data that don't match the coder's assumptions. As the time goes by and bug reports pile up, the mess will grow even bigger into a convoluted tangle of several thousand lines of code that only the best and bravest dare to maintain.

  19. Ask your students.... by Simonetta · · Score: 2

    With all respect...
      All the comments that you'll be getting from Slashdot readers will be worthless to the point of your question. As you may have noticed by now, every responder assumes that you want to learn to how to do what they consider a dream job in CS to be. And they give replies like 'read Knuth' or 'do MIT on-line courses'.

    Since you already have an excellent job with a good future, and you have already studied elementary program texts in CS languages like Java, allow me to suggest that you ask the middle school students in your programming club what they would consider to be cool and useful programs to have. After you get through the fantasy aps like ' a really cool game that the player doesn't end up always losing' and ' a smokin' 3-D interactive girlfriend' or ' a bio-implant that will allow me to get perfect SAT scores without studying', then you might get some interesting suggestions.

    Personally I suggest that you and your programming students develop Arduino and Raspberry Pi applications. The elementary 'blinking LED' stuff, simple robotics applications, and digital television art projects made from inexpensive TFT displays will be fascinating to middle school and high school students. (hopefully).

  20. Re:Donald Knuth by CastrTroy · · Score: 2

    What about all the other courses that are required for the degree, like algebra, calculus, discrete math, technical writing, and other electives like psychology, history, business management, or biology. All of these, while not directly applicable, are definitely useful, and should not be ignored.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  21. Free Java Lectures by curmudgeon99 · · Score: 2

    I have a site that is free and has three semesters of Java lectures called: http://sites.google.com/site/f...

  22. Re:correction by MikeBabcock · · Score: 2

    In fact this is precisely why I wish there were something like a comp.sci wiki. A lot of this knowledge should be easier to access for people who didn't need a full degree to get where they are but realize they have a problem to solve and need a better way to do it than posting their current code on stackexchange.

    --
    - Michael T. Babcock (Yes, I blog)
  23. Re:Donald Knuth by AuMatar · · Score: 2

    You don't think discrete math is CS? I don't think you know what those two things are.

    --
    I still have more fans than freaks. WTF is wrong with you people?
  24. Re:Ivy League = theroy loaded classes with skill g by Slick_W1lly · · Score: 2

    This is what *school* is for, not University.

    I hear Americans laud the 'breadth' of their university system with arguments such as the above, but frankly this kind of stuff should be taught *before* university, not during it. I, for instance, learned the 'History of the Roman Empire' when I was 18. Likewise a bunch of other history stuff that I later dropped in favour of the sciences.

    School should be for your 'broad education'
    It should funnel into your chosen subjects which then funnels into
    University - which should be your *specialisation*. Not a continuation of generalities. If by that time you don't consider yourself a 'well rounded individual' then take up some evening classes on your own, rather than watering down the education you *should* be getting in your specialist, chosen subject.

    This, frankly is why I consider american degrees to be nothing more than watered down bollocks. If I go to uni to study 'comp sci' then I want my degree to be 'comp sci' not 'some comp sci classes, plus some bullshit yoga / tennis / geology' stuffed in with it when I could be learning *more specialist comp sci' stuff instead.

    -- did his degree in Artificial Intelligence and didn't suffer a single non-degree related course and is proud of it.

  25. Re:Donald Knuth by goarilla · · Score: 2

    Why type bufPtr when p will do.

  26. Good source from California by Dareth · · Score: 2

    Surprised nobody seems to have mentioned the Berkley Webcast yet. http://webcast.berkeley.edu/ It is an online collection of class videos, lectures, and course materials for a variety of subjects including computer science.
    Their into to CS is much easier to get into for a beginner than the MIT OpenCourseWare. http://ocw.mit.edu/index.htm

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  27. Re:Degree hype by Crimey+McBiggles · · Score: 2

    I find that most folks with "Anonymous Coward" and no name are experts at trolling.

    --
    Crimey