logoalt Hacker News

OhMeadhbh • today at 5:11 PM • 0 replies • view on HN

   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.