
Online Learning: A Bachelor's Level Computer Science Program Curriculum - cnbuff410
http://blog.agupieware.com/2014/05/online-learning-bachelors-level.html
======
jacques_chester
A reasonably well-rounded alternative would be the Ars Digita "University"
program. It was meant to be a 1-year intensive course.

[http://aduni.org/courses/](http://aduni.org/courses/)

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.

~~~
loganfrederick
Some of the links in the article are to course videos from Ars Digita.

------
brudgers
It's woefully missing the mathematics curriculum that all the reference
institutions [and any accredited US program] require. Four semesters includ8ng
threeof calculus appears typical. CS programs in the US also require the two
semester physics sequence where calculus must be applied.

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.

~~~
argonaut
That's because 1) calculus is taught in high schools and is generally taught
in college regardless of whether you major in CS (so for example someone
wanting to self-teach CS after college will have taken calculus). And,
calculus is not particularly useful for _most_ CS grads, except for specific
areas (theoretical aspects of probability, machine learning, graphics).

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.

~~~
brudgers
I'm not saying calculus is something that every computer science graduate uses
in their daily professional life. But you're not going to meet a [US] computer
science graduate who does not have it or a computer scientist who cannot
perform it. And anything that says "here's what a computer science degree is"
does a disservice by not mentioning it.

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.

~~~
thrush
You are definitely correct that the traditional Computer Science education
includes Calculus, but that does not mean that it _should_ include Calculus. I
would appreciate if there was empirical reasoning for why Calculus should be
taught in Computer Science rather than the argument be "we need Calc because
we're supposed to and every one else has it".

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

~~~
bradleyjg
That seems to be setting up an barrier for Calculus that nothing else has to
face. Is there empirical evidence correlating an operating systems course to
success in the field?

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.

~~~
argonaut
An OS course is directly under CS. Getting asked OS questions during a systems
interview is normal. Getting asked calculus questions in most CS interviews
(except the specific areas of machine learning and graphics, and even then
pretty much never) is unheard of. When's the last time you were asked to
differentiate something, integrate something, use Taylor series, double
integrals, etc? Having to maximize/minimize some function might come up, but
probably in an abstract sense.

------
jonsen
If you are going to educate yourself broadly over the subject of software
engineering it might be helpful to take a look at what a committee of
professionals think the software engineering body of knowledge comprises:

[http://www.computer.org/portal/web/swebok](http://www.computer.org/portal/web/swebok)

~~~
dborg
The goal of the post seems to be a curriculum for Computer Science, the
chapters 13 and 14 in the list seem to cover most of this. Though I would
approach the matter quite differently depending on if I wanted to learn all
the CS in a certain degree or all the CS needed/useful for practical Software
Engineering.

~~~
capex
What's included in the 'needed/useful for practical software engineering'
list?

------
ChuckMcM
This is an excellent list. I've been coming at it a slightly different way and
trying to figure out what the three semeseters of "computer science" would
look like in at the high school level. The thought being that some amount of
understanding of computers has become essential to everyday life.

------
adamf
I wrote up a CS bachelor's curriculum in 2012 using only Coursera courses, and
had the same problem with the lack of fundamental math courses
([http://www.thesimplelogic.com/2012/09/24/you-say-you-want-
an...](http://www.thesimplelogic.com/2012/09/24/you-say-you-want-an-
education/)).

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.

------
nisa
I really like this list here: [http://matt.might.net/articles/what-cs-majors-
should-know/](http://matt.might.net/articles/what-cs-majors-should-know/)

------
evadne
My own opinion regarding on-line academic programs: Accreditation or GTFO.

~~~
dgritsko
What do you think of Georgia Tech's "$7,000 Master's Degree"?
[http://www.omscs.gatech.edu/](http://www.omscs.gatech.edu/)

~~~
cgearhart
I'm in it and it's awesome. They're doing some really cool things pushing
forward the tech for online delivery and course management. And I'm happy to
say that it is every bit as rigorous as you would expect from a Top 10
program.

~~~
Jtsummers
I'm looking into applying to this in the next year or so. How much time do you
feel you have to set aside each week to keep up? How many courses at a time
are you taking?

~~~
cgearhart
I took CS6300 - Software Development Processes and CS7641 - Machine Learning.
I would not recommend two classes at once in your first semester, and never
two classes with ML. (I've heard that Networking is comparable to SDP, and
advanced operating systems is comparable to ML.)

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.

~~~
Jtsummers
Thanks for the input. If I do this (trying to talk some colleagues and friends
into it, study buddies and drinking buddies if it gets too bad) I'll probably
have to stick to one course a semester then. I figured that'd be the case.

