Online Learning: A Bachelor's Level Computer Science Program Curriculum
blog.agupieware.com
blog.agupieware.com
I might also note that it'd be nice if we pinched some stuff from our neighbour professions. In chemistry you take lab class, in some engineering disciplines there's metalworking or assembly.
It would probably handy to have at least one "shop class", being a mix of tools (here's an editor, here's version control, here's testing) and craft (here's your copy of Code Complete).
Also ... where are the databases? A lot of damage is done in this industry by not understanding the concept of structured storage and querying. If you're going to take discrete maths (including graphs, sets and predicate logic), you'd be missing out if you don't get to apply it.
Like any technical degree, understanding the maths is one area where the educated differentiate themselves from mere graduates. All those hours spent thinking mathematically and procedurally are useful. Comfort with ciphering is essential.
Many great CS programs also don't require physics. From my observations, physics requirements in curriculum tend to tacked on solely due to CS being in the engineering school. To be honest, physics beyond a general overview is not really useful for most CS grads, even those doing complex CS-heavy work.
Discrete math, logic, proofs, and probability are all immensely useful in CS. However, they tend to be of a completely different flavor of teaching compared to calculus courses.
The depth usually required for a CS degree is not usually required in high schools (and often not available there), nor is it usually a requirement for non-STEM degrees, and people wanting to self-teach CS after college will very often be non-STEM majors.
My criticism is based on the same assumption that underpins your argument, that the people looking at this list already have a sufficient background in mathematics, or more generally that people looking at the article have general STEM training.
Yet, just looking around HN, you'll see that many of those asking "Should I get a CS degree?" are people who just fell into programming, and in the larger world you have people moving into the field as a career change Think about all those bootcamps that market to liberal arts and business majors. These are people with degrees that correlate with a weakness in mathematics and science. A weakness which often shows up earlier in education and results in such people avoiding Calculus in high school and college.
As I take online courses, the limiting factor [after time] is the amount of mathematics I have at my finger tips. It is perhaps a common problem as even Einstein is said to have wished he had studied more mathematics.
In the end, if computer science education is basically vocational, then perhaps it makes sense to replace Calculus I and II with Rails I and II. But that's not really what 'Computer Science education' usually means. That's IT and CIS.
It is easy to argue that Calculus helps, but it would also be easy to argue that various other fields of study would help (physical education, journalism, English to name a few).
Full disclosure: I am a professional Full Stack Developer with Grad Level CS Education
More generally,a lot of the value to the student in a degree is signalling -- not only the bare fact of the degree itself, but also culturally. Even if an online education can't provide the first part yet, it can provide the second one. Dropping a reference to the Church–Turing thesis into the conversation at an interview might get you the job. Such "success" is independent of whether or not knowing the lambda calculus is actually helpful day to day once you're there.
Now my personal opinion is inclined toward calculus being part of a computer science curriculum in the absence of compelling evidence that it should not. My reasons are:
+ Calculus is where algebraic skills really get practised to the point of competence because there they are tool rather than an end in themselves.
+ One of the longer edges at the edge of computer science as a science encompasses signal processing and that entails calculus directly or indirectly via statistics.
+ If computer science is a branch of mathematics, constructing an argument is left as an exercise for the reader.
Against calculus the primary argument is vocational. But as with any science curriculum these days, the product is graduates not scientists. We with half of all graduates below average.
What I do is very different than what a web developer may do. Not better or worse, just different, and it requires a very different skill set. The fact that we not get roughly the same education is ludicrous.
(1) Research in Computer Science. Don't expect to get very far in research in any STEM field without good knowledge of calculus.
Calculus is a pillar of Western Civilization, one of the all time crown jewels, and the root of the most important part of math, 'analysis'. Discard 'analysis' at high risk for the future of your career.
We're talking about the future here, right? That is, you are in education to prepare for the future, right?
E.g., the last paper I published on computer science was heavily based on measure theory, that is, a grown up version of calculus.
At present, commonly some of the best research opportunities are to further 'mathematize' computer science where calculus is just baby talk broadly assumed.
(2) Keeping up in Computer Science. To keep up, you will need to read, and authors will feel free to use some calculus.
E.g., maybe you are interested in models of viral growth on the Internet. Okay, you can quickly come to the differential equation
y' = k y (b - y)
with y(0) known. Just for viral growth, some calculus.
(3) Applications. E.g., maybe you want to do some 'machine learning' using, say, maximum likelihood estimation. There need to solve a problem in non-linear programming. A key part of that work is the gradient, that is, calculus.
In robotics, drones, and other forms of mechanical automation, well need some calculus.
Why do you bring up Rails? If it is in reply to what argonaut said, that is a straw man; argonaut seems more likely to want to replace calculus with logic, discrete math, etc. I.e., other branches of math.
It's an argument for vocational relevance. I simply extended it. It's 'slippery slope' not strawman.
However, slippery slope arguments are relevant for science education and we are talking about computer science. They become less relevant as
science -> engineering
because arches and bridges can be designed empirically. Which is fine if you're training Roman Legionnaires. But it doesn't produce an Omar Khayyám.I wouldn't really say that to argue for having courses that are mostly relevant for CS in a CS course is to argue for vocational training - it would be more like arguing for a more specialized (to CS) education, as opposed to a more broad education (CS plus other things that might not be directly relevant or transferable to CS).
If someone feels like they need calculus, they can go right ahead and take that MOOC!
I don't know where you got this impression. Most liberal arts students never take calculus. And those students who do probably don't continue on to take Calc II and III, or linear algebra, or additional math electives, all of which are required in a typical CS program.
Obviously, other engineering disciplines require these courses, but it's not correct to say that most college students know anything about math.
As I tried to imply, physics is the one physical science where there is an introductory sequence that requires calculus as a pre-requisite and it's application to pass.
http://www.abet.org/uploadedFiles/Accreditation/Accreditatio...
"This is the first half of a none-too-serious annotated bibliography of the references that the IEEE Computer Society has identified as the most important sources for its Software Engineering Body of Knowledge (SWEBOK)."
* http://maniagnosis.crsr.net/2011/11/consolidated-reference-l...
* http://maniagnosis.crsr.net/2011/11/consolidated-reference-l...
My general conclusion is that, if you have an engineer who is intimately familiar with all of these references (and nothing else) then you shouldn't really expect much work out of them.
I do think there will be a full CS curriculum from one of the MOOC providers soon, but I don't think such a curriculum will produce many "graduates" unless it is paired with in-person instruction of some kind.
On the other hand, accreditation is a pretty low bar and many of the courses that are not have, like this list, overwhelmingly massive chasms of missing fundamentals along with a heavy focus on things that are "trendy" and "relevant" and will thus be completely useless next year.
I am currently finishing up semester two of seven at UMUC's program. It's okay. Why am I in it? It's free for me.
I'm not sure what GT's masters program delivers, but UMUC's online program hasn't changed since it's inception (the 90s, I think). There are no online lectures and little guidance from professors. I read a text book, do exercises, submit assignments, take tests. I do like the structure and pace (two classes a semester), and I'll have a bachelors in computer science.
1. http://www.umuc.edu/academic-programs/bachelors-degrees/comp...
SDP required 9-12 hours a week on average (many more some weeks) spent on group projects. It would have been less if I'd been working alone. The hardest part is working in a distributed team with no leader - especially because lots of people take this as an "easy" intro course; of the 6 people I worked with, 4 of them were not comfortable being asked to do any programming. O_o
ML required ~25 hours a week on average; I spent close to 100 hours on it during weeks with projects due - fortunately there are only 3 projects. The lectures are longer than SDP, the projects are hard, and there are exams that you'll have no idea how to prepare for. You will love it anyway.
That attitude was more common among my cohort in graduate school, and it's very common in those MOOC's which achieve an active learning community (i.e. courses that are not self paced self study).
Edit: changed perpetuates to is perpetuated
I am arguing against the blanket statement, "accredited or GTFO." I'm not saying that accreditation doesn't have it's place. However, doing a little research on what accreditation actually is, who does the accrediting, and what the outcome is, statistically, for accredited schools will swiftly prove my point. We don't just have failing schools, we have a failing institution that is, for the most part, accredited.