| What are you going to do with your new-found CS knowledge?
Are you going to make the next google? Are you going to
get a job at the local insurance company processing
claims? Teaching yourself without a degree is a bad path
if you want to do grad school.
Maybe you want to understand how software works so you can
have a better understanding of the world and participate
more fully in society? Well... I can't argue with that.
I'm bearish on using AI to teach yourself CS because AI
doesn't teach people CS. If you learn something about CS
because you're looking at the output of an AI model, it's
sort of a side-effect.
We probably have a very different idea about what "CS" is.
I think of it as an organized exploration of notation,
processes and proofs related to a branch of applied
mathematics whose subject is general purpose computing
devices. Asking an AI "give me a function to calculate
the fibonacci sequence in rust" isn't going to help you
understand a) where the fibonacci sequence came from, b)
what recursion is (and why and how it was introduced) and
c) how the lexemes in a programming language map to an
abstract process which when reified delivers the fibonnaci
sequence.
I've picked a pretty simple example as a straw-man, mostly
because I think it //should// be knocked down. If this is
what you're doing to "learn CS" then more power to you,
but you're probably not doing yourself any favours.
You probably can use AI with prompts like "generate
example code that implements the abstract factory pattern
and explain how each function relates to the pattern" and
get a fairly decent explanation. Modern agents can keep
enough of a context you can ask it some decent questions
if its examples aren't entirely clear.
I've used and seen other people use Claude Code to
interatively generate design work. Mostly APIs. It's
hardly ever right the first time and Claude Code sometimes
barfs if you ask it to explain why it did a particular
thing. But it's mostly decent and in a few cases it has
pointed out a few ragged edges I didn't notice.
But... I learned how to map between human requirements and
software on my own. I don't know if someone could learn
expert level design by examining the output of a tool that
was trained on mediocre code.
And Claude Code really doesn't understand how to interpret
my prompts about TLA+ and Coq/Roq. It doesn't generate
complete BS. I'm thinking there's just not enough
training data included.
In the old days, if you went to a decent school like
Harvard or Yale or CMU, you could be reasonably assured
the education wouldn't be bad. [[1]] You could go to a
cheaper state state school and get a decent education,
though there was always the chance you would get a crap
instructor or two.
There's an idea that you can teach most people to be
effective software developers by putting them in front of
a terminal with a man page and a c compiler. I believe
this is bullshit. This technique will work for //some//
people, but not as many as sitting you in a class-room and
having an expert explain what the important bits are and
stepping you through the reasoning of why.
I think "learning by AI" may work for //some// people, if
they figure out how to ask the right questions. I
recommend reading decent books like Gries' "The Science of
Programming" or Knuth's "Literate Programming." (You also
have to read SICP because it defines a base level
understanding that all those CS grads have supposedly
learned.)
But I'm reminded of the end of the movie Hidden Dragon,
Crouching Tiger (spoilers ahead) where it is revealed the
antagonist learned kung fu from a well regarded book, but
since they couldn't read, they only looked at the
pictures. They understood the forms but not the
motivations for why the forms were developed. The
antagonist was a formatable foe, but was eventually
defeated because that minor difference in context was
sufficient to lead to their defeat.
I don't think you can learn to be an expert computer
scientist exclusively by reading books / papers. But you
can come close. I don't think you can learn to be an
expert computer scientist exclusively by asking AI to give
you example code, explaining it and critiquing your code.
Mostly because "being an expert computer scientist" is
less about being a 10x coder and more about understanding
the relations between abstract concepts, notation and
symbolic manipulation, how concrete problems are
represented and manipulated and how this all relates to
concretization using computing machinery.
AI gives you an answer, not the understanding embedded in
the text from which the answer was derived.
But if you do it right and you ask AI the right questions,
that understanding can be revealed.
I think my sense is that it is very easy to use AI wrong
and difficult(ish) to use AI as a learning tool. I
sincerely wish you well and would love to read a blog
about your experience.
1. Do not ask about MIT. They're beyond salvaging.
|