[HN Gopher] Path to a free, self-taught education in Computer Sc...
       ___________________________________________________________________
        
       Path to a free, self-taught education in Computer Science
        
       Author : netfortius
       Score  : 611 points
       Date   : 2023-02-06 05:05 UTC (17 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | g42gregory wrote:
       | I feel that CMU's 15-213 Introduction to Computer Systems [1]
       | should absolutely be on the list. It's a mandatory class at CMU
       | that everyone, who gets remotely near CS curriculum, must take. I
       | feel it's completely justified. The lucky CMU students were able
       | to take a version of this class since 1998.
       | 
       | [1] https://www.youtube.com/watch?v=4CpHpFu_KYM&list=PLbY-
       | cFJNzq...
        
       | bugbuddy wrote:
       | This is a good list but I want to know how they came up with
       | duration and effort numbers. It seems like hand waving.
        
       | ZephyrBlu wrote:
       | A large part of me feels like this is an oxymoron. Someone who is
       | capable of self-teaching this content is probably not going to
       | need such a structured program. At best, this would function as
       | an aspirational index for them to refer to.
       | 
       | This also covers a lot of things you should probably not be
       | studying as self-taught dev, since there is a much larger
       | opportunity cost because you are not at university. I like
       | calculus and maths, but that knowledge is low value for a
       | developer.
       | 
       | Once you've bootstrapped a basic understanding of programming and
       | CS, I think you should be building stuff 80% and reading up on
       | new things that catch your eye 20% until you hit diminishing
       | returns. Reading about things like SOLID, DRY, algorithms, OOP,
       | etc is just not going to stick. You need to build stuff and start
       | getting an intuition for the concepts.
       | 
       | Immersing yourself in community discourse is also very
       | underrated. You will pick up so much jargon and be exposed to
       | lots of different concepts and tools just by hanging out where
       | other programmers talk, like on HN, Twitter and Reddit.
        
         | Hermitian909 wrote:
         | I think this depends on your ambitions. As someone who made the
         | transition from math education to CS I knew that I wanted to be
         | a seriously good engineer making top of market. One of the
         | first things I did was build myself a curriculum similar to
         | https://teachyourselfcs.com/ (not sure it existed back then).
         | I'm pretty confident this is a big part of what's made my
         | career both because it's trivialized most interviews and
         | because being competent up and down the stack is rare enough
         | that I can often generate outsized impact with relatively small
         | changes.
         | 
         | Obviously this is not what everyone wants in life, but it's a
         | fairly straightforward path to career success and financial
         | independence.
         | 
         | Aside: any good curriculum definitely needs to include
         | building, learning is not a spectator sport.
        
       | ipnon wrote:
       | Having finished a CS undergrad and followed the OSSU curriculum
       | for some years I can confidently recommend
       | https://teachyourselfcs.com/ instead. The courses chosen are more
       | focused on capital-C capital-S Computer Science, and the
       | resources are better suited for self-paced self-direction. One
       | should start with https://teachyourselfcs.com/ and refer to OSSU
       | if they find the former lacking in some measure.
       | 
       | Self-teaching computer science is a long and winding road. OSSU
       | seems to favor a completionist approach that most people would do
       | well to avoid. Grok on the fundamentals and quickly specialize,
       | because life is too short to learn computer science in an
       | encyclopedic way.
        
         | rraghur wrote:
         | Probably off topic
         | 
         | Is there a good recommendation for teens who're just getting
         | the programming bug?
         | 
         | My son's getting hooked but their curriculum is terrible (think
         | Excel or word )...
        
           | efm wrote:
           | FreeCodeCamp is good. Practical tutorials to build real
           | things all the way up to deep theory.
        
             | rg111 wrote:
             | freeCodeCamp the website with its main curriculum is really
             | good.
             | 
             | freeCodeCamp, the YT channel and republisher isn't that
             | good.
             | 
             | They hoarde all kinds of stuff from other people on YT, and
             | not all of the courses have good quality. I have seen some
             | awful explanation/teaching in some videos on the fCC YT
             | channel.
        
           | phforms wrote:
           | I recommend taking a look at Processing:
           | https://processing.org
           | 
           | When I was young, generating visual things was my gateway-
           | drug to programming. With all the tooling, frameworks,
           | workflows, concepts, etc. that you have to learn today in
           | order to do even simple things, programming can become pretty
           | overwhelming to someone who is just starting out. Processing
           | is like a sandbox that is simple, but still keeps you close
           | to the metal and provides a fun and liberating environment to
           | grow your skills.
           | 
           | It may not be for everyone, which also depends on what your
           | son is interested in building, but creative/artistic
           | expression through code is something that I believe everyone
           | should experience at some point.
           | 
           | There are many great learning resources for Processing that
           | cover the whole spectrum from very easy stuff to more
           | advanced projects that involve physics simulation, fractals,
           | 3D graphics, etc. I especially recommend the video lectures
           | by Daniel Shiffman, who teaches even advanced topics in a fun
           | and engaging way: https://processing.org/tutorials
        
           | mkehrt wrote:
           | I can also recommend Daniel Shiffman. His Youtube channel has
           | tutorial series on both Java and JS bases Processing.
           | 
           | https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw
        
         | zelphirkalt wrote:
         | I think expectation management is important and as you note:
         | 
         | > Self-teaching computer science is a long and winding road.
         | 
         | What does this mean in terms of years? My estimate for the not
         | too persistent average person is, that working through (not
         | only read once, forget) all of the books listed on that website
         | could well take 10 years. For someone very focused maybe 5 and
         | for one working "day and night" on it maybe shorter.
         | 
         | Just to give an idea: SICP, the PDF version, has already 800+
         | pages and many many challenging exercises to solve. That alone
         | could take a year or more, depending on how easily it comes to
         | a person.
         | 
         | That said, I often find the website to build up a huge wall
         | against which anyone with not 100% motivation will crash. It
         | might not be a realistic program for most people and I would
         | rather recommend one item after another or smaller parts.
        
           | Hermitian909 wrote:
           | I went through most of the books listed and did the
           | exercises. This happened over the span of 6ish years but I
           | was not always consistent.
           | 
           | Timing is really hard to nail down because your strength as a
           | programmer and engineer really come into play. SICP, for
           | example, took me about a month of putting in a few hours a
           | day. As it turned out my professional experience had given me
           | significant experience with many of the concepts involved.
           | 
           | Conversely, for Computer Networking: A Top-Down Approach it
           | took me 6+ months because I'd never had meaningful experience
           | with networks outside of browser dev tools and was not very
           | good at systems level stuff.
        
           | noelwelsh wrote:
           | I expect the "not too persistent average person" would make
           | zero progress, as my experience is that the average person
           | learns very little unless forced to do so.
           | 
           | For SICP, I read through the year after finishing my
           | undergraduate Computer Engineering degree. I had a decent
           | background, but a lot of the concepts in SICP were new. I
           | loved the book and got through it in a few months of train
           | rides, doing most of the exercises in my head. I feel that
           | was sufficient for me, but I also don't think I'm in any way
           | the "average person" when it comes to this domain.
        
           | 908B64B197 wrote:
           | > What does this mean in terms of years? My estimate for the
           | not too persistent average person is, that working through
           | (not only read once, forget) all of the books listed on that
           | website could well take 10 years. For someone very focused
           | maybe 5 and for one working "day and night" on it maybe
           | shorter.
           | 
           | College courses don't go through books from start to finish.
           | The instructor determines what's appropriate and what's left
           | to the reader (and these books can be picked up many years
           | later when someone recognize a gap in knowledge that's
           | covered).
           | 
           | However, what's missing from these books are group
           | assignments and mentoring from a proper instructor.
           | 
           | > Just to give an idea: SICP, the PDF version, has already
           | 800+ pages and many many challenging exercises to solve. That
           | alone could take a year or more, depending on how easily it
           | comes to a person.
           | 
           | You aren't supposed to go through the whole book, especially
           | for an intro class using SICP.
        
           | bnralt wrote:
           | Years ago I saw someone who was starting out in a specialist
           | forum lament that everyone else on the forum was so much
           | further ahead than they were. A user pointed out that the
           | type of people who spend a lot of time on specialist forums
           | are going to be among those most dedicated to the field, and
           | just by visiting the forum and trying to improve themselves
           | in that domain the individual was probably better than the
           | vast majority of the people working in that domain.
           | 
           | If you're goal is to have the same amount of CS knowledge as
           | the average person with a CS degree who's a few years out of
           | college, it probably wouldn't take that much time. Extremely
           | few - I'd say almost none - CS graduates have gone through
           | the entirety of SICP. You can read the other comment where
           | someone said they went through it after getting a degree in
           | computer engineering, and a lot of the concepts in it being
           | new to them.
           | 
           | How long will this take? If you're focused on learning as
           | much as you can, it's a never ending journey. But you
           | probably won't find a use for most of the knowledge (more and
           | more so as you go along), so it's going to be a hobby for the
           | most part. If you're just trying to cover the topics that
           | people say you need to know (IE, the site gives understanding
           | recursion as a reason to go through SICP), I imagine you
           | could learn most of them surprisingly quickly.
        
         | loganc2342 wrote:
         | One course from OSSU I personally recommend to add onto Teach
         | Yourself CS is "The Missing Semester of Your CS Education"[1].
         | For those unfamiliar with the tools needed to work through
         | something like SICP, this course is a godsend.
         | 
         | [1] https://missing.csail.mit.edu/
        
           | chrchang523 wrote:
           | +1. I recently gave an internal presentation encouraging
           | everyone on my (rather heterogeneous) team to look at that.
        
         | activitypea wrote:
         | Echoing this. Teach Yourself CS is the best self-study resource
         | available.
        
         | asicsp wrote:
         | Discussions for Teach Yourself Computer Science:
         | 
         | * https://news.ycombinator.com/item?id=29353904 - Nov 26, 2021
         | | 52 comments
         | 
         | * https://news.ycombinator.com/item?id=23588896 - June 21, 2020
         | | 265 comments
         | 
         | * https://news.ycombinator.com/item?id=13862284 - March 13,
         | 2017 | 237 comments
        
       | revskill wrote:
       | It's a missed opportunity to push "Projects" at the end of all
       | kinds of course. Let's turn table around. Let's teach on how to
       | build complex projects with its companion theory, instead of just
       | trying your best to explain the theory first.
        
         | ipnon wrote:
         | https://browser.engineering/ is an excellent resource following
         | this teaching philosophy.
        
       | julius wrote:
       | Computer Science?
       | 
       | If you just want a career in making computer software. Build
       | something. Then do it again. Google all the stuff you need to
       | build your current thing. After a few month it will be obvious to
       | you that you can build software. Then talk to companies about
       | junior positions. Tell them you are self-taught and show them the
       | stuff you have built already.
       | 
       | Best to talk to a company (usually small companies are easier),
       | where you are allowed to talk to a programmer early on. The fact
       | that you learned everything by yourself means they do not have to
       | hold your hand all the time. Hand-holding time is the most
       | important consideration for me, when taking on junior devs.
        
       | sailorganymede wrote:
       | I am doing the Math version of this currently to catch up on the
       | gaps that my CS education missed out on. If you do plan on doing
       | this, I cannot stress how important it is to manage expectations
       | and be consistent with the workload. There is no pressure here
       | and you might not even need like, 80% of what's being taught on
       | your course but you are essentially keeping yourself active. It's
       | like a gym except for your brain.
        
       | hnthrowaway0328 wrote:
       | I have devised a plan for a specific group of people (like me):
       | 
       | Group Characteristics:
       | 
       | - Has a full-time job and a family with kid(s): Basically means
       | only 1-2 hours everyday, maybe a little more when workload is
       | light
       | 
       | - Not super smart (probably can identify myself as median IQ at
       | best)
       | 
       | - Did not go through a solid CS education (I came from MATH in a
       | mediocre school)
       | 
       | - Managed to grab a developer gig by luck and self-development
       | (for me it's mostly luck)
       | 
       | - Want to have the deepest understanding of computers and
       | computing as possible (I just realized that computers and
       | computing are two things, one is more about hardware and the
       | other is more about MATH)
       | 
       | Issues identified:
       | 
       | So we probably still want to get the best education from
       | MIT/Berkeley/etc. but the problem is:
       | 
       | - The courses are too tough for us
       | 
       | - We don't really have the mental reservoir to consume difficult
       | topics everyday, so that means maybe a few hours of study may
       | push me away from studying for the next day
       | 
       | - Contrary to the second point, we do need to study the material
       | as often as possible to retain knowledge learned
       | 
       | My plan:
       | 
       | - Browse through the list of MIT/Berkeley/CMU/etc. classes and
       | figure out a list of courses. I want to study reverse engineering
       | so my list:                   - Introductory to programming (I
       | want to skip this one but local university doesn't allow me, see
       | below)         - Computer Architecture         - Data Structure
       | and Algorithms         - Theory of Computing (basically pre-
       | requisite for compiler theory)         - Operating System
       | - Compiler Theory
       | 
       | - I then registered in local university. It's a mediocre one but
       | it fits in the bill of giving me a general understanding of the
       | topics                   - The lab/assignment is really easy,
       | like in OS class it doesn't even touch anything about writing
       | functionalities for a student OS         - The exams are
       | annoying, mostly about memorizing things, but since I don't care
       | about score I just get by         - I have to take a few extra
       | pre-requisite courses such as Introductory to Programming and
       | Discrete Math but I'm fine, good to pump to GPA in case I fuck up
       | something in the future. I want to have an average of B
       | 
       | - I'm going to take one course per semester and study the
       | corresponding MIT/Berkerly/CMU course in the NEXT semester, so
       | basically I always have two classes going on from the second
       | semester. The workload is more manageable and more importantly I
       | already know something before taking the courses of tougher tier
       | schools.
       | 
       | I'm now on Data Structure and Algorithm so next semester I'm
       | going to take Theory of Computing in local school + Algorithm in
       | tougher tier school. I hope it can ease my way into the topics so
       | that I don't burnout quickly.
        
       | nashashmi wrote:
       | Now there needs to be a path towards self-certification.
       | Something like a standardized exam. Or 24 hour cs project
        
       | teekert wrote:
       | I was educated as a biologist but I am now a full time software
       | dev (perhaps a light version, I just do Python/bash) with some
       | science elements. I was able to make this switch because I have
       | always (since the 2.4 kernel days) enjoyed Linux and self-hosting
       | as much as possible, including email, which I, as 99% gave up on
       | later again).
       | 
       | It basically made me a sys-admin, many people around me do docker
       | these days, few can diagnose issues with Docker itself, route
       | traffic around with valid certs, open a shell inside a container
       | to really see what's happening. But I just feel at home inside
       | Linux. I know my way around /etc, I know how I would do things
       | and that is how things often are. It helps me a lot in my daily
       | job. I feel like the whole stack is an open book to me. I still
       | listen to a lot of Linux podcasts (like most Jupiter broadcasting
       | shows), that also helped me a lot, also keeps me informed on
       | recent tech.
       | 
       | I'm really getting paid for my hobby nowadays.
        
         | brailsafe wrote:
         | I ended up doing this _for_ a tiny team of biologists a few
         | years ago. Worked on their open data portal, writing python
         | plugins for a flask /pylons based framework, managing Postgres
         | a bit and the vm it was running on. Fun job, meh pay, total
         | autonomy, good place to be.
        
         | channel_t wrote:
         | I can confidently say that my whole career in software
         | development has basically been the result of riding the wave of
         | a Linux hobby I had. I didn't actually mean to write code for a
         | living but I accidentally walked into the wrong interview and
         | knew the solutions to some common puzzles off the top of my
         | head. It eventually led me to being an early adopter of Docker
         | which dazzled a lot of folks at the time and I guess still
         | sorta does.
        
         | m3nu wrote:
         | A bit like me. Got started setting up a webshop for my first
         | startup and had to learn Apache and PHP.
         | 
         | If anyone with similar skills (Python, Docker, Shell) reads
         | this and looks do get started, do check out our Google Summer
         | of Code projects for this year. You'll get paid and can pick
         | any task in this field:
         | https://github.com/borgbase/vorta/wiki/Google-Summer-of-Code...
        
       | ilaksh wrote:
       | These types of sites are great. BUT. The concept hasn't properly
       | evolved since the 1970s-80s when I assume it started to become
       | pretty big.
       | 
       | I think the reason 99% of people study computer science is to get
       | a computer programming job. Almost all programming jobs are
       | actually software engineering jobs these days.
       | 
       | So I believe that at least one third of a degree program like
       | this should actually be software engineering.
       | 
       | And the most important part of software engineering is the outer
       | loop with clients or end users (or some stakeholders). So they
       | should train on multiple project iterations with some external
       | group as customers.
       | 
       | So the interaction with customers, defining requirements, the
       | basic looping of iterations and maintaining software and evolving
       | designs and technical debt, somewhat larger codebases that make
       | modules/components/classes etc. more important. A lot of that
       | should be integrated and probably even replace some of the lower-
       | level stuff that would have been much more relevant in the 1980s
       | for most application programmers.
       | 
       | It should be multiple projects that get evolved over the entire
       | course.
       | 
       | Also another thing, a key tool to add to an education like this
       | would have been active Google searching and learning how to do
       | that, which should be at least a small part of the curriculum.
       | Since the last few months, another key tool at least as important
       | is ChatGPT.
       | 
       | The technology landscape changes rapidly. Education should keep
       | up. Especially if its self-education, no reason to be stuck in
       | the late 80s or early 90s.
        
         | sublinear wrote:
         | > 99% of people study computer science is to get a computer
         | programming job
         | 
         | software engineering: https://amspub.abet.org/aps/name-
         | search?searchType=program&k...
         | 
         | vs computer science: https://amspub.abet.org/aps/name-
         | search?searchType=program&k...
        
         | azangru wrote:
         | > Since the last few months, another key tool at least as
         | important is ChatGPT.
         | 
         | Could you elaborate on this? Why do you think it's such an
         | important tool for software developers, and how would one go
         | about learning or teaching it?
         | 
         | Also, what should be an appropriate interval between the
         | appearance of a technology and its inclusion in a curriculum?
         | Curricula, by their nature, tend to be fundamental and
         | conservative.
        
           | ilaksh wrote:
           | Because it can literally write the code for you in many
           | cases. It can help you find bugs in your code or refactor it.
           | Do a code review for you instantly. So even if you believe
           | for some reason that you should never use a tool like this to
           | actually write code, it can make suggestions for improving
           | it, in seconds.
           | 
           | Curricula should not be so conservative in this age of high
           | technology. Especially in a highly technical field.
        
             | azangru wrote:
             | > Because it can literally write the code for you in many
             | cases. It can help you find bugs in your code or refactor
             | it. Do a code review for you instantly. So even if you
             | believe for some reason that you should never use a tool
             | like this to actually write code, it can make suggestions
             | for improving it, in seconds.
             | 
             | In that case, wouldn't it be more useful to teach students
             | regular software engineering skills that will allow them to
             | check whether the code generated by something like ChatGPT
             | is correct / appropriate / fit for purpose?
             | 
             | I guess I'm wondering what is it that a CS course would
             | need to teach specifically about ChatGPT.
        
             | Crusoe123 wrote:
             | That's a very dangerous tip. Someone who is learning will
             | not understand when ChatGPT is wrong, and neither will
             | ChatGPT itself.
        
               | an_aparallel wrote:
               | BLTBASS - Blind leading the blind (as a service)...suites
               | this day and age...
        
             | sublinear wrote:
             | From a business perspective, the most valuable aspect of
             | written code is not the code itself, but that you have
             | managed to retain the author.
        
               | boppo1 wrote:
               | What? You mean prevent talent from going to the
               | competition?
        
         | frontman1988 wrote:
         | Agreed, theoretical computer science education can be
         | considered a luxury, as it is not typically required for the
         | average programming job. Even if it is needed, you will still
         | need to invest time in revisiting it. It might be more
         | efficient to learn the theory from scratch as needed, as that
         | time could be better spent learning practical skills if your
         | goal is to find employment.
        
           | bombolo wrote:
           | You can't just learn what you need today without having the
           | culture to understand what you're reading.
           | 
           | Dumb example: counting sort is fast! Ok let's use it. Then
           | your data happens to be an array of 2 elements -10000000 and
           | +10000000.
           | 
           | Or the classic "let's parse a math expression with regular
           | expressions".
        
             | zerodensity wrote:
             | I mean 2 element arrays will be fast to sort.
        
         | ActorNightly wrote:
         | >Almost all programming jobs are actually software engineering
         | jobs these days.
         | 
         | Not quite. Most all programming jobs are translation jobs,
         | where you take some business requirement and put it into code.
         | Which is why GPT models are going to render most of those jobs
         | obsolete.
        
           | visarga wrote:
           | Translation where context is whole apps, spread over dozens
           | or hundreds of files, with complex interdependencies is also
           | a form of integration. And chatGPT doesn't have the context
           | size to do it, maybe the next GPT. But 4000 tokens is not
           | enough, 50-100K tokens would be more like it.
        
             | ActorNightly wrote:
             | You can ask chat GPT now the following question "Given this
             | Json as input, and this json as output, write code that
             | transforms the input to output", and it will get it right.
             | Try it out sometime, and then realize that like 80% of
             | backend processing.
             | 
             | There just needs to be more targeted training, and some
             | system built around it to write a complete service code,
             | and you can replace a good number of jobs solely through
             | that.
        
               | ZephyrBlu wrote:
               | Generally transforming the data is not the hard bit, it's
               | specifying the shape. You're not replacing any meaningful
               | jobs by getting GPT to automatically translate one schema
               | to another, you're improving the productivity of existing
               | devs.
        
               | quickthrower2 wrote:
               | 20 yoe. Never had to write code to transform json into
               | json in a _pure_ way. Maybe XML to XML ... once. Good ol
               | XSLT!
               | 
               | By pure I mean with no other requirements such as
               | accessing another data store and running a bunch of rules
               | decided by having several meetings with various people to
               | find out what is actually required... a bit like what
               | chatGPT doesn't do.
        
               | brailsafe wrote:
               | Ya, it's tricky to map that comment to a useful scenario,
               | but maybe getting a json document from an external
               | service and saying "write a function that parses this
               | json and returns this TS structure, but I think that
               | would be a rare efficiency killer for me
        
             | ilaksh wrote:
             | Well.. yes, it is a stretch to use it for a large code
             | base, but especially if they are all relatively
             | small/medium sized files, a directory listing can get you
             | pretty far to select the relevant files. You can also do a
             | vector (embedding) search to find relevant functions/files
             | and feed that into the prompt.
             | 
             | Also the OpenAI coding model code-davinci-002 has an 8000
             | token max not 4000 like text-davinci-003.
        
           | Crusoe123 wrote:
           | If it was only that simple, I assure you those jobs would
           | have been obsolete already.
        
             | moremetadata wrote:
             | Not always, a well written software contract will generate
             | additional fees/income when analysts or businesses fail to
             | stipulate all requirements.
             | 
             | On the point of >Almost all programming jobs are actually
             | software engineering jobs these days.
             | 
             | Thats a very narrow view of Computer Science, ignoring how
             | software and hardware can be exploited in air gapped
             | scenarios, exploiting what the military have traditionally
             | called Signal Intelligence, not something taught in any
             | university or online as far as I'm aware of.
             | 
             | The undetectable metadata by human senses because of
             | restrictions like our range of audible sounds, ability to
             | detect tiny fluctuations of electromagnetic radiation, lack
             | of knowledge of a devices ability, makes most computer
             | science graduates somewhat blinkered and restricted in
             | perspective and highly exploitable, with hubris being the
             | number one attribute for most.
             | 
             | IMO Computer Science should be viewed more as a natural
             | science, incorporating things like physics, biology,
             | psychology, chemistry along with what's currently taught in
             | a stereotypical CS course. I'm reminded of the fact that my
             | language debugger is an excellent colour blind test
             | operating in plain sight and when you become wise to these
             | additional points of interest, you start to see the chaff
             | from the wheat, whose good, whose not because Only the
             | Paranoid Survive!
        
               | l33t233372 wrote:
               | It sounds like you're considering a very narrow view of
               | computer science.
               | 
               | How many people will come into contact with an air gapped
               | system in their entire lives?
        
               | aforwardslash wrote:
               | When I was young, most systems were air gapped :D
        
           | ravagat wrote:
           | Funny, to me you are both saying the same thing with slightly
           | different wording
        
           | quickthrower2 wrote:
           | Once an AI can just "understand some business requirement" it
           | will be able to probably replace most roles in a company!
        
             | randcraw wrote:
             | That depends on how trivial and stereotypical the tasks
             | fulfilled by that role are. Sure, writing simple functions
             | or accessing databases and loading or unloading form-based
             | user interfaces should be easy enough tasks to specify
             | easily. These will be automated first.
             | 
             | But designing a user interface that's intuitive or chooses
             | sensible default values, especially one that isn't
             | "typical" (where a business model or user use case already
             | exists), or one that's not trivial to specify, or complex
             | to integrate into a workflow -- these use cases will
             | require iteration in order to specify useably. And revision
             | of a specification is an ability where language-based
             | specification tools like GPT have yet to prove themselves
             | -- like activities such as interactive debugging or the
             | performance tuning of an implementation.
             | 
             | How do you describe a task to ChatGPT that isn't yet well
             | defined and still requires iterative refinement with the
             | user to nail down? Until ChatGPT can perform Q&A to "fill
             | in the blanks" and resolve the requirements in a custom
             | task, a human in the loop will still be still needed.
             | 
             | Think of ChatGPT as a way to code using templates bigger
             | than the ones used today. Initially it's templates will be
             | smaller than the average function. It's hard to know how
             | long before its templates will grow in size and complexity
             | sufficient to build a full blown app, unless that app is
             | pretty trivial and requires no customization. I'm guessing
             | it'll be years before it creates apps.
        
           | throwawayzi wrote:
           | Chatgpt and outsourcing take all the jobs. I would not take
           | CSE course if i had to now
        
             | l33t233372 wrote:
             | If chatgpt is so good at taking computer scientist jobs
             | then it should also be good at taking lots of other jobs.
        
             | bombolo wrote:
             | I've been told that my CSE degree was obsolete 10 years
             | ago.
             | 
             | Funny, seems that this take is more obsolete than the
             | degree itself :)
        
         | boppo1 wrote:
         | >basic looping of iterations and maintaining software and
         | evolving designs and technical debt, somewhat larger codebases
         | that make modules/components/classes etc. more important.
         | 
         | Can anyone recommend a good book for this? I'm getting the hang
         | of lots of other 'TYCS' topics, but I'm mostly building little
         | toys for myself to try out cool algorithms I see in my
         | books/resources. But mention CI/CD, large module & class
         | design, or other 'big software' stuff I get very intimidated.
        
         | ravagat wrote:
         | >I think the reason 99% of people study computer science is to
         | get a computer programming job. Almost all programming jobs are
         | actually software engineering jobs these days.
         | 
         | With my recent encounters with new-comers and juniors
         | employees, this has become a big commonality
         | 
         | > And the most important part of software engineering is the
         | outer loop with clients or end users (or some stakeholders). So
         | they should train on multiple project iterations with some
         | external group as customers.
         | 
         | 100%, I've become an advocate for this in my recent roles.
         | Something as fundamental as applied communication between
         | different contexts is underrated in a lot of curriculums I've
         | heard of from.
        
           | Clubber wrote:
           | >So they should train on multiple project iterations with
           | some external group as customers.
           | 
           | That would almost be a Psychology course. Include
           | stakeholders who don't really know what they want, who think
           | they know what they want but constantly "rearrange the
           | furniture," and who try to give you the solution rather than
           | the problem. This would be a great idea. For this to be
           | effective, it would probably have to be 2 semesters, 1 for
           | theory and 1 for practice. It's a great idea though. Get rid
           | of some of those Calc/Physics classes.
           | 
           | I had a professor tell me one time that the "meeting of the
           | minds," between stakeholders and the developer was the
           | hardest part of building software and that getting specs was
           | like "pulling teeth." He wasn't wrong.
        
         | AnimalMuppet wrote:
         | > So I believe that at least one third of a degree program like
         | this should actually be software engineering.
         | 
         | How about an actual software engineering degree instead?
         | 
         | As others have said, it should teach interfacing with non-tech
         | people, extracting requirements, reacting to changing
         | requirements, and so on. But it should also teach things like
         | source code control systems, bug databases, dealing with large
         | long-lived code bases (go find this bug in this 1,000,000 line
         | code base, say), what languages work best for which kinds of
         | problems, and so on.
         | 
         | Maybe one third of that degree could be classical CS.
        
       | ravagat wrote:
       | Nice, I'm drafting my similar syllabus for publication on my
       | github. I love the fact that there are more open pathways to
       | achieving a education like this. Thanks for the share!
        
       | rahmaniacc wrote:
       | This is great. I am have hired many many engineers over many
       | years, and I have not seen a significant difference in the
       | quality of engineers who had a formal CS degree vs. another
       | quantitative degree (physics, math etc.). I have noticed some
       | differences in engineers who have gone through bootcamps, but
       | they are usually great at getting things done, so it has never
       | mattered.
       | 
       | Also curious if there is a list somewhere out there for similar
       | self-taught path for other subjects?
        
         | zeitlupe wrote:
         | > I have noticed some differences in engineers who have gone
         | through bootcamps
         | 
         | How do they differ?
        
         | bombolo wrote:
         | It probably depends very much on if you ever do advanced stuff
         | and if you are able to discern a bad solution from a good one.
         | 
         | For example reading a file with a loop of read(1) works fine,
         | but it's extremely slow. A CSE graduate should in theory know
         | that, and also know why that is.
        
       | mrleinad wrote:
       | This looks really good, though the Software Engineering course
       | part seems a bit lacking. I think there should be a more
       | comprehensive one on patterns and software design.
        
       | biql wrote:
       | Often unnoticed but very important part of the traditional
       | education is having the peer group to compare yourself too. The
       | desire to copy and compare each other kicks in and now it's no
       | longer just about getting grades but rather how do you relate to
       | each other in your common path. It would be cool if this was
       | somehow replicated in MOOCs.
        
         | t344344 wrote:
         | And is that something beneficial?
         | 
         | Many students today are alcoholics, stoners, activists, or just
         | lazy losers. You also open yourself to sexual harassment
         | lawsuits etc...
        
           | bombolo wrote:
           | > You also open yourself to sexual harassment lawsuits
           | 
           | Then don't sexually harass people?
           | 
           | You should have decency also if you don't attend a
           | university.
        
           | michaelt wrote:
           | If you're at a university where some of your peers are better
           | than you at some things, it is.
           | 
           | If you're at a university where none of your peers are better
           | than you at anything - you should probably transfer.
        
           | mejutoco wrote:
           | One of those words is not like the others...
        
         | groestl wrote:
         | > peer group to compare yourself too
         | 
         | And stick with, after studies. When switching jobs, for
         | example, I imagine the network you built there is helpful.
        
         | jjice wrote:
         | Absolutely. One of the things that helped me grow as a software
         | engineer was to talk to and hang out with my peers that you
         | could tell were great at it. We generally had a lot in common
         | since we all loved programming and the related things around it
         | which helped become friends.
         | 
         | Sometimes you'd meet someone who is just leagues beyond the
         | average CS student, and they were often great and humble
         | people. Spending time with those people, talking, studying, and
         | just hanging out with them led to a lot of learning (and not to
         | mention good times).
        
       | rep_movsd wrote:
       | Im not sure you can learn some fundamental CS concepts in python
        
       | kirillbobyrev wrote:
       | I've seen this before and there are great courses, but most of
       | them cover the basics.
       | 
       | What I tried to find for myself is a bunch of in-depth courses
       | that cover the areas where I'm not as comfortable. I've started
       | collecting some courses (there were especially many in the COVID
       | era simply because the universities recorded the courses anyway
       | and only needed to upload them), books and papers. I didn't aim
       | to get a comprehensive set of resources covering everything or
       | having some specific features, I simply gathered what I thought
       | is interesting for myself:
       | 
       | https://github.com/kirillbobyrev/computer-science-resources
        
       | necessary wrote:
       | Did anyone else cruise through college with their programming
       | experience developed as a kid, only to come out with an excellent
       | knowledge of practical computer programming (i.e., learned
       | several languages, touched most of the frameworks, able to deploy
       | full-stack apps alone) but a complete lack of mathematical and
       | computer science knowledge? And if so, did you ever go back and
       | re-learn some of these fundamentals and find use in it? I'm in
       | this situation now, and while I feel confident in my ability to
       | do my job, I feel jealous of peers who are able to solve complex
       | algorithmic problems, or understand mathematical problem domains
       | with ease (e.g., machine learning)
        
         | pprotas wrote:
         | I am exactly in the situation you are describing. I've always
         | enjoyed math but never took it seriously, and now I regret it.
         | Just cruised through college because no advanced math was ever
         | required.
         | 
         | So I'm taking a math course in the evenings and going to try
         | university this year!
        
         | designed wrote:
         | I had the opposite experience, but I did an undergrad in CS in
         | university, not college. Learned lots of theory and algorithms,
         | and low-level programming, but hardly did any practical stuff
         | like app deployment.
        
           | JamesBarney wrote:
           | I had the same experience as you with a CS undergrad. Spent
           | way more time learning number theory and sets than on coding.
        
           | chowells wrote:
           | In the US, there is no distinction between "college" and
           | "university" like some places have. Here the difference is
           | solely that a university is collection of colleges that share
           | admittance and funding to some extent. I attended the college
           | of arts and sciences at my university, but I easily could
           | have taken (some) courses offered by the college of
           | architecture and allied arts, had I been so inclined.
           | 
           | I wouldn't put much stock in word choices like that.
           | Connotations vary so immensely around the world, it's best to
           | presume they're synonyms unless context says otherwise.
        
             | aklemm wrote:
             | A university offers graduate degrees. Colleges offer only
             | up to bachelor degrees. There may not be a distinction in
             | how people use the words, there is a difference in actual
             | fact.
        
               | psalminen wrote:
               | Can you provide a basis for this belief? N=2 googles of
               | colleges show graduate programs. See Williams College:
               | https://www.williams.edu/academics/graduate-
               | programs/#:~:tex....
        
             | gtk40 wrote:
             | There are also plenty of 4 year institutions called
             | "Colleges" here that are smaller too. Bowdoin College is a
             | random example which even has a CS degree.
        
         | gtk40 wrote:
         | This describes me pretty well. I started programming when I was
         | very young. I did programming classes in high school. Then in
         | college I started with another major and switched, but quickly
         | got through as many classes as possible to graduate and get a
         | job without really thinking about any of the stuff I had the
         | opportunity to learn. Now I feel a bit locked out of certain
         | companies because I'm not good at HackerRank, but I make really
         | good money as a Software Engineer at a non-tech firm.
        
         | eBombzor wrote:
         | I went through the opposite where I learned programming through
         | college but I still don't understand ML math nor complex
         | algorithm problems. I mean I tried taking those courses but I
         | only got through regular DSA class and the first week of ML but
         | dropped out cuz I was not good at the linear algebra required
         | to understand. Maybe I'll try again someday on my own. I admit
         | I wasn't the greatest student though. Graduated with a 2.7
        
         | noelwelsh wrote:
         | I kinda did. I graduated with a degree that covered a lot of
         | maths that I, a callow youth, thought was bullshit. A few years
         | later I discovered it was useful for machine learning, and
         | given machine learning was something I was interested in the
         | maths suddenly became interesting. I don't think my maths or
         | theoretical CS knowledge is amazing but I quite like those
         | topics now, and don't seem to struggle to learn them.
        
         | cdolan23 wrote:
         | Yes. I didn't even study math or comp-sci in college. Learned
         | to program BASIC for build BBS systems when I was 12 (in 1982).
         | Took two Pascal classes (1 in high school, one in college while
         | I studied psychology). Discovered I could apparently program
         | professionally while an intern for a startup. Turns out,
         | computer languages of all sorts come to me pretty easily,
         | probably because of that early exposure. I've ended as one of
         | the better programmers most places I've worked, and my current
         | role is as a director and software architect at a mid-size
         | biotech company (building tools to facilitate genetic
         | engineering; if only my teenage nerd self could see me now!). I
         | still have no real advanced math or computer science training.
         | My approach and experience is entirely practical/pragmatic, and
         | for user facing applications development, I've almost never
         | felt the lack of comp sci training impacted my work. I think of
         | myself as a bit of a hedge witch :). That said, I sometimes
         | have pretty extreme imposter syndrome, and find myself bowing
         | out of of roles that would otherwise be exciting but math
         | heavy, especially ML heavy stuff that's all the rage these
         | days. I still think I'd like to study computer science, fwiw,
         | but there are only so many hours in the day and I am a person
         | with a whole lot of competing interests.
        
         | shallichange wrote:
         | You'll find a bunch of tech recruiters asking you about Big O
         | notation for the algorithm you propose. They want to look
         | smart. Most of the times you'll smell shitty code, inefficient
         | loops, slow I/O, waste of memory without formal methods.
         | 
         | An old example from the beginning of the century: if you did
         | matrix algebra you could have understood how to rotate an
         | object position in 3D for a game using math but find it very
         | hard to code. Or you could take Michael Abrash's Graphics
         | Programming Black Book [1] and learn it anyway. You'll do fine.
         | 
         | [1] https://www.jagregory.com/abrash-black-
         | book/#a-simple-3-d-ex...
        
         | knicholes wrote:
         | I did the opposite. I received what I believed to basically be
         | a bachelors in math with very little real-life coding skills.
         | Yeah, I programmed a ton in my classes, but looking back it was
         | "spaghetti code." I've had to read about principles and
         | patterns of software engineering almost unrelentingly to feel
         | up-to-speed. Thank heavens for "Clean Code."
         | 
         | Boy, I can't wait until that magical day where I can bust out
         | my knowledge of that Pumping Lemma, though, for those proofs I
         | need to... always be writing...?
        
       | [deleted]
        
       | abdullahkhalids wrote:
       | Can someone point out where the _science_ in all this is? At
       | best, there are some courses in algorithms in the  'Core Theory'
       | and others in the 'Advanced Theory' section, with a random
       | spattering of in other sections.
       | 
       | Computer Science would be computational theory, complexity
       | theory, a proof based cryptography course, the mathematics of
       | computer geometry/machine learning type stuff.
       | 
       | About 80% of the courses here are software engineering courses -
       | about using computers to build things. The quote 'computer
       | science is as much about computers as astronomy is about
       | telescopes', comes to mind.
       | 
       | Just call it 'a self-taught education in Software Engineering'.
        
         | epistemer wrote:
         | I forget what lecture it was but Feynman thought the idea of
         | "computer science" as a bit bogus and that it is really all
         | computer engineering.
         | 
         | To me, it is that at our core we are a society of marketing
         | bullshitters. The vast majority of daily activity is marketing
         | falsity as truth to each other in basically all context.
        
         | krackers wrote:
         | The situation isn't any better at universities. Even at the
         | top-10 universities you can get a "computer science" degree
         | taking at most the standard discrete math + algorithms courses.
         | (And not to mention, there's apparently even one university
         | where you get to call yourself an "electrical engineer" without
         | even touching signal processing or anything more advanced than
         | RLC circuits.)
        
           | abdullahkhalids wrote:
           | Correct, and I criticize them too. But universities do it
           | because they presumably want to cash in on the prestige of
           | associating the degree with 'science'.
           | 
           | A standalone course, which presumably comes from the ethos of
           | rejecting degree-based education, is completely free to call
           | a spade a spade.
        
           | bombolo wrote:
           | My master's course only accepted students whose bachelor
           | degree included a minimum amount of credits in mathematics.
           | 
           | All of the computer-whatever bachelors from around the world
           | are not allowed to sign up for it.
        
         | bakuninsbart wrote:
         | Ironically, pretty much the only subfield of computer science
         | using the scientific method in any significant capacity is
         | software engineering.
         | 
         | Historically and foundationally CS is a child of mathematics
         | and electrical engineering, neither of which really fit the
         | narrow English term of science.
         | 
         | CS is mostly preoccupied with a) making (useful) deductions in
         | closed logical systems, and b) building cool shit. Empirical
         | knowledge generation is usually only relevant as a tool to help
         | us with the first two goals.
        
           | abdullahkhalids wrote:
           | Yes, a lot of CS is mathematics (and EE), but it is not just
           | that.
           | 
           | There is a notion of experimentation in pure CS, because CS
           | asks the question, what can be computed on physical machines.
           | And to check that, you actually need to build and check.
           | 
           | Nothing illustrates this better than Quantum Computing.
           | Computer Science (and Physics) theories predict the existence
           | of quantum computing, and suggest a computational advantage,
           | but we will never know unless we build QCs and experiment.
        
         | khqc wrote:
         | looks like they have some of that in the advanced theory
         | section
        
         | tayo42 wrote:
         | That sounds like how much cs degrees are from what I have seen
        
         | Joel_Mckay wrote:
         | The secret is real mathematicians snicker at CS faculty people
         | behind their backs. =)
        
           | Xeronate wrote:
           | The other secret is CS faculty don't care because if they
           | wanted to study math they'd have gotten a math PhD instead of
           | a CS one. =)
        
           | tomcam wrote:
           | EEs do both, but they're not laughing at anybody because
           | they're too busy getting the job done
        
             | Joel_Mckay wrote:
             | but do they do "both" well... generally not. =)
        
               | tomcam wrote:
               | Well the ones I've worked with were all pretty damn
               | good...
        
               | Joel_Mckay wrote:
               | Depends... some are like getting software people to build
               | a vehicular bridge. =)
        
           | zelphirkalt wrote:
           | Who bets against mathematics loses, almost always. While that
           | is true, CS people also snicker at mathematicians, because
           | they usually are not able to write good and readable code,
           | unless they also have significant outside of math coding
           | background, which they usually do not.
        
         | ajdoingnothing wrote:
         | > The quote 'computer science is as much about computers as
         | astronomy is about telescopes', comes to mind.
         | 
         | Astronomy isn't called "Telescope Science" though..
        
         | dagw wrote:
         | That ship has sailed a long time ago. "Computer Science" today
         | means basically any topic vaguely related to computers. You can
         | get a "Computer Science" degree by focusing on design
         | theoretical type systems, designing CPUs, designing business
         | processes or designing user interfaces. I think it's fair to
         | say that we've lost this battle.
        
       | 314 wrote:
       | As a former CS professor with some experience of curriculum
       | design: looks quite reasonable. Personally I would have moved
       | some of the material on compilers and architecture into the
       | earlier part of the course (instead of putting them in the
       | advanced section) but balancing content distribution against time
       | is tricky.
       | 
       | The selection of areas and materials is broad enough to teach a
       | reasonable chunk of CS. The individual course quality looks good
       | from a quick skim.
        
       | cod1r wrote:
       | this is a good resource but also don't forget to apply these by
       | thinking and building out projects. If you don't use the
       | knowledge, there's a high chance you'll lose the knowledge.
        
       | bleuuuu wrote:
       | just learn everything. pick a problem or project and fill in the
       | gaps.
        
       | Joel_Mckay wrote:
       | A BSc or MSc in STEM is all 99.997% of immigration and Human
       | Resources people care about. Thus, if your goal is to augment
       | your existing degree, than a self-directed or short certificate
       | program is fine. However, if you want a commercial career in CS
       | without a upper-level degree, than you may as well waste your
       | time doing something you enjoy instead.
       | 
       | There is a huge gap between the theoretical and practical aspects
       | of CS in both the academic and professional fields. Generally,
       | most college programs have lab driven smaller classes, and
       | produce better coders (ready to go in a few months). However,
       | university level programs tend to produce primarily theorists
       | from thousands of students (an additional 1 to 2 years of
       | training is usually needed for a commercial setting).
       | 
       | I often recommend plumbing, as it allows folks to afford to do a
       | postdoc. =)
        
         | icepat wrote:
         | > A BSc or MSc in STEM is all 99.997% of immigration
         | 
         | Funny enough, I hold a 'general science' BSc. When I was
         | applying for a work permit, the country's immigration office
         | didn't believe my degree existed for a short while.
        
           | Joel_Mckay wrote:
           | You probably don't look like you're from a Norman Rockwell
           | painting. lol =)
           | 
           | In general, a hiring firm should have put you in contact with
           | a special lawyer to handle the nonsense/hazing.
           | 
           | Good luck, =)
        
             | icepat wrote:
             | It worked out, just sent them a copy of the program outline
             | from my university. The whole process was a mess for other
             | reasons, but at least this one got sorted out after a few
             | back-and forth with the department by Email.
        
         | primeblue wrote:
         | [dead]
        
       | SergeAx wrote:
       | Note there is a very observable difference between computer
       | science and software engineering. In Advanced Programming they
       | offer Haskel, Scala and Prolog. While those languages are fun to
       | learn and use for personal purposes, there's effectively zero
       | commercial space application for them.
        
         | ldh0011 wrote:
         | Eh what? My last job was at a bank, not exactly known for
         | having the most interesting tech. They had several teams that
         | used Scala and I've seen a lot of job listings for roles using
         | Scala.
         | 
         | Haskell and Prolog slightly less so but at my current job
         | (mostly Clojure, which is even less popular than Scala and
         | Haskell according to the stackoverflow dev survey) we do have
         | one guy who prototypes stuff in Prolog sometimes.
         | 
         | In fact according to the SO dev survey Scala and Haskell are
         | used by almost 5% of professional developers, almost as much as
         | Swift which is hardly seen as a language with "effectively
         | zero" commercial use. They also rank a lot higher in the
         | salaries section than many more popular languages. And I don't
         | know how recruiters think but if somebody lists that they know
         | Haskell on their resume and are applying for a JS job I'd
         | assume they can learn JS pretty quick.
        
           | tome wrote:
           | > In fact according to the SO dev survey Scala and Haskell
           | are used by almost 5% of professional developers
           | 
           | Here's the data:
           | 
           | https://survey.stackoverflow.co/2022/#most-popular-
           | technolog...
           | 
           | According to that, Haskell and Scala are used by (a bit less)
           | than 5% _together_. Something seems a bit off about that
           | though. I find it hard to believe that Python is used only
           | 20x as much as Haskell, and I say that as a massive Haskell
           | fanboy.
        
             | ldh0011 wrote:
             | Yeah I meant together, I didn't make that obvious at all. I
             | still think that is a far cry from "no commercial use"
             | though.
             | 
             | I agree it seems a little odd, there's probably some kind
             | of a bias for people using those languages being more
             | likely to answer the survey.
        
         | weatherlight wrote:
         | We use Erlog - a port prolog for the Erlang VM at my current
         | gig, we also have some legacy app front ends written in
         | PureScript (which is is basically Haskell that transpiles to
         | JS.)
         | 
         | My wife works in Scala/Spark as a Data Engineer, at a very
         | large Tech company.
         | 
         | I not sure your assessment is at all accurate.
        
         | PartiallyTyped wrote:
         | I used Haskell in gradschool, the course was called "advanced
         | programming". We leveraged Haskell to learn about hypothesis
         | testing and generated tests, model based testing, parsers,
         | interpreters, query engines, interpreters, monads etc.
        
       | goy wrote:
       | The problem I've faced with self-learning CS have never been a
       | lack of resource. Skills plateauing for almost a year. I just
       | have troubles keeping on track. Mentorship or some kind of
       | support will be more helpful ...
        
         | rg111 wrote:
         | Study groups with a team of interested and motivated peers work
         | wonders on self-education.
         | 
         | Either organize locally with a smaller group of sub-20. Even 2
         | or 3 or 7 people groups are great if you can hold yourself
         | accountable.
         | 
         | Or you can organize over the net. Had some great groups during
         | Covid, and formed 2-3 lifelong relationships from these groups.
         | Get started with 50 random people from the discord server, and
         | after 8 weeks, ~7 will still be there. That's enough and that's
         | great.
         | 
         | This _REALLY works_. Trust me on this and get started.
        
       | ranting-moth wrote:
       | Does anyone have recommendations for similar material in either
       | Mechanical Engineering or Electronic Engineering?
        
         | tyingq wrote:
         | It's not exactly what you're asking for, but the U.S. Navy's
         | Electricity and Electronics Training Series (NEETS) is
         | available free and well regarded. Part of the reason is that
         | the Navy's materials are well done is that they have fewer sub-
         | specialty jobs in electronics than the other US military
         | services, maybe because you have limited space on a ship for
         | people, so techs need to have more broad experience and be able
         | to work on wider range of equipment.
        
         | debugati wrote:
         | I'd be interested in that too.
        
       | gnicholas wrote:
       | Given the trajectory that AI is taking in terms of being a very
       | helpful code assistant, what type of CS education would be ideal
       | for current elementary school kids? Sure, some will want to go
       | all the way and be programming the AI; but for the rest, it would
       | probably make sense to be able to use the tools in the same way
       | that today's "tech savvy" can accomplish 10x as much as someone
       | who isn't familiar with computers. What parts of computer
       | programming will be necessary, and which parts can be summarized
       | or jettisoned?
       | 
       | I ask this question as a mostly non-technical person, wondering
       | what skills it makes sense to develop in my children, so they can
       | "skate to where the puck is going", so to speak.
        
         | matisseverduyn wrote:
         | Scratch seems to be a very popular no-code way of getting kids
         | into programming (games). Prior to that, encouraging your kids
         | to solve new problems and constantly pursue their curiosities
         | is a good way to build the skills / mentality. Divergent
         | thinking (what are the different uses for this thing / what are
         | the different ways to solve this problem) and convergent
         | thinking (what characteristic makes all of these different
         | things alike) are ways to make them comfortable being
         | uncomfortable (refactoring and extricating). Pattern
         | recognition via IQ tests, which are heavy on programming-
         | related patterns (visual XOR, AND, etc.)... and also asking
         | them why the IQ test might be wrong / which other "tile" could
         | be next other than the provided answer.
        
         | skybrian wrote:
         | Maybe learn the same things but use tools like ChatGPT to get
         | help where needed?
        
           | gnicholas wrote:
           | The sense I'm getting is that the output will look
           | authoritative, but may not work. When it doesn't work, it may
           | be obvious, or it may be latent. What does someone need to
           | know in order to be able to detect latent flaws (and to be
           | able to ask the right questions in the first place)?
           | 
           | I imagine it helps to know a lot of the same basics, but as
           | AI gets better at reliably performing certain types of
           | functions, it becomes OK to view more and more stuff as
           | 'black boxes'. I'm trying to figure out what those black
           | boxes are, and what they will be in the future. Because the
           | more time you spend learning something that becomes
           | irrelevant, the less time you can spend learning other stuff
           | that remains relevant (coding or otherwise).
        
             | ilaksh wrote:
             | You try to run the code, or your kid tries to run it. I do
             | plan to build an auto-debugging mode in eventually to the
             | extent it is possible. Say about half the time, feeding an
             | error or bug description in to the coding model from AI, it
             | is able to fix the bug just from that.
        
             | skybrian wrote:
             | Better to think of it like a fellow student (who may get
             | things wrong) than a teacher.
             | 
             | Learning how to deal with possibly-bad advice is a real
             | world skill, as anyone who's used StackOverflow should
             | know.
        
         | ilaksh wrote:
         | If they are in the sixth grade then it may be 2030 by the time
         | they graduate from high school.
         | 
         | I am working on a website right now that uses OpenAI's models
         | and at the moment it can definitely write and (immediately)
         | deploy simple web pages with interactions and calculations
         | exactly customized by my customers. I am working on the
         | dialogue interface and the text-to-speech and some other things
         | to make it work better. Planning to have a new release at the
         | end of the week. The current version that is up is hard to use
         | since it requires special commands and has some rough edges and
         | uses the non-coding ML model (which can code, but not as well
         | as the code-specific model I am switching to).
         | 
         | Within 3 years I believe that these types of systems will be
         | doing a very significant percentage of programming tasks, both
         | for programmers (as "assistants") and end-users.
         | 
         | Within 7 years I think that programming will have evolved
         | mostly to be directing these types of coding assistants for
         | most use-cases.
         | 
         | The challenging thing though is that kids still need to learn
         | how to read, write, think and problem solve. Despite the fact
         | that AI is starting to be able to do quite a lot of it for us.
         | 
         | They need to learn solid problem solving skills like problem
         | decomposition, how to search/find answers to roadblocks (such
         | as using ChatGPT etc. or other tools like Google and other
         | tools that arise) or just plain persistence, logic,
         | abstraction. The struggle will be getting them to do some of
         | this stuff for themselves rather than cheating like most of
         | their classmates.
         | 
         | But at the same time they absolutely have to learn how to use
         | the new AI tools. It will be critical to stay competitively
         | productive as an adult or just to be able to fit in. There will
         | be important new tools every few months or years.
         | 
         | Where this is really headed in my opinion is by the 2040s high
         | bandwidth brain computer interfaces that tightly integrate
         | cognition with advanced AI systems (2-10 X smarter than humans)
         | start to become commonplace. These will enable different
         | paradigms for communication and society. Before we get to that,
         | AR glasses/goggles will integrate AI deeply into most people's
         | lives.
        
           | ldh0011 wrote:
           | > Within 3 years > Within 7 years
           | 
           | What is your justification for these estimates? I've been
           | trying to pay attention to what various experts think (I'm
           | not one) and it seems like far from a foregone conclusion
           | that this will be the case, and it might not even be the case
           | that scaling up produces the same outsized benefits we've
           | seen so far.
           | 
           | Francois Chollet for example seems like someone who is pretty
           | in the know about current SOTA and is not nearly as
           | optimistic best I can tell.
           | 
           | https://twitter.com/fchollet/status/1620617016024645634?cxt=.
           | ..
           | 
           | > But at the same time they absolutely have to learn how to
           | use the new AI tools. It will be critical to stay
           | competitively productive as an adult or just to be able to
           | fit in. There will be important new tools every few months or
           | years.
           | 
           | Definitely agree here.
           | 
           | > Where this is really headed in my opinion is by the 2040s
           | high bandwidth brain computer interfaces that tightly
           | integrate cognition with advanced AI systems (2-10 X smarter
           | than humans) start to become commonplace.
           | 
           | My gut feeling is this is pretty insane and unlikely to be
           | the case but I suppose insane things have happened before.
        
             | ilaksh wrote:
             | Like I said, my website can already do it to some degree
             | for end users. GitHub CoPilot etc. is very popular for
             | programmers. I am just assuming the models will continue to
             | improve and be deployed.
             | 
             | The only reason to be un-optimistic like that person is if
             | you assume that the model capability will remain
             | essentially static over several years. But even with
             | current models (which new ones are released every few
             | months at this point) there is huge potential for replacing
             | quite a lot of real software engineering work especially
             | when you start putting them in loops and
             | specializing/priming them for particular types of
             | programming.
        
           | gnicholas wrote:
           | Would love to try this out! Contact info in profile...
        
           | primeblue wrote:
           | [dead]
        
       | dang wrote:
       | Related:
       | 
       |  _OSSU: Path to a free, self-taught education in computer
       | science_ - https://news.ycombinator.com/item?id=27744255 - July
       | 2021 (149 comments)
       | 
       |  _OSSU: A path to a free self-taught education in computer
       | science_ - https://news.ycombinator.com/item?id=21062799 - Sept
       | 2019 (172 comments)
       | 
       |  _Path to a free self-taught education in Computer Science_ -
       | https://news.ycombinator.com/item?id=16035839 - Dec 2017 (66
       | comments)
        
       | mathieuh wrote:
       | I don't think the point of universities and degrees these days is
       | to learn anything. It's just something you have to do in order to
       | get a good job. That was certainly my experience. I went to a so-
       | called top university, and I didn't feel like I learnt anything
       | remotely relevant to what I do today. All I got at the end of it
       | was some letters after my name.
        
         | jltsiren wrote:
         | It's more about the students than the university.
         | 
         | According to one model, students have three primary
         | motivations: 1) passing the classes and getting the degree; 2)
         | getting good grades and otherwise being good on whatever is
         | being measured; and 3) learning things. Teaching is most
         | rewarding when the third motivation dominates, but the other
         | two are often the necessary evil that pays the bills.
        
         | number6 wrote:
         | Yes, I instantly though: but if I can't get a title with these
         | courses here, they are worthless.
        
       | SunghoYahng wrote:
       | Looking through the links, I noticed most of the course was
       | video, so I immediately turned it off. Compared to text, videos
       | are an inefficient learning tool, and I think a lot of people
       | aren't aware of that. Honestly, I hate video learning materials.
       | Though it's better than going to a classroom.
        
       | [deleted]
        
       | PixelForg wrote:
       | There's also https://roadmap.sh/computer-science
        
       | asicsp wrote:
       | See also:
       | 
       | * What every computer science major should know
       | (https://matt.might.net/articles/what-cs-majors-should-know/)
       | 
       | * learn-anything mind map (https://learn-anything.xyz/computer-
       | science)
        
       | monero-xmr wrote:
       | 100% possible to be a self-taught software engineer. I have hired
       | many over the years. The hardest part is breaking into the
       | industry, but once you have some experience and references the
       | degree doesn't matter for many high paying companies (although
       | FAANG and academia might disagree).
       | 
       | When I interview ICs it is a very free flowing conversation. When
       | there is a lull I will jump to a new subject. I will just start
       | asking things and keep going deeper until I exhaust your
       | knowledge.
       | 
       | "What is the command for listing directories in a terminal? Name
       | a flag you can use - what does it do? How do flags actually work
       | anyway? Do you know any libraries for CLI parameter processing?
       | Ever heard of argc and argv? How do you think those variables are
       | mapped into memory of the forked process?"
       | 
       | I go on and on and on. If you just become obsessed with computers
       | and software engineering and put in some years of effort you can
       | beat what school charges you for. Plenty of MIT and Brown and
       | Harvard grads don't know fuck all about software development.
       | Credentials are a signal for sure but that is all they are.
        
         | emodendroket wrote:
         | FAANG doesn't disagree, or at least some of them don't. And to
         | my mind that makes sense, because their rigorous interviewing
         | process should give them confidence in their hires, regardless
         | of credentials.
        
           | LtWorf wrote:
           | FAANG hiring process: "we cancel your flight to USA and
           | instead will do the interview on skype at night"
           | 
           | I held ok until midnight, then I was just too tired and just
           | told the interviewer there was no point and I went to bed.
        
           | sidibe wrote:
           | That's the flip side of the interviews that everyone here
           | complains about. Lots of people working there couldn't get a
           | tech job elsewhere, but these places don't care much at all
           | about resume (for lower levels) once you start the interview
           | process.
        
         | pjmlp wrote:
         | In many European countries it isn't, as being Software Engineer
         | is a proctected title, can only be used in legal contexts if
         | the admission exam was taken, and the university was
         | reckognised by the state as providing a proper Software
         | Engineer degree.
        
           | emodendroket wrote:
           | I imagine they can give you some other title and have you
           | program computers.
        
             | pjmlp wrote:
             | Yes, hence why when one doesn't want to pay for the final
             | exam or monthly payments, or has the resposabilitie to sign
             | legal documents with liability, gets to be called Software
             | Developer, Programmer or similar.
             | 
             | Still doesn't go around the fact that universities need the
             | approval for teaching the said degrees.
        
           | kortilla wrote:
           | Which countries? That seems problematic for any
           | multinationals that want employees to be able to easily
           | transfer internally.
        
             | pbalau wrote:
             | In Romania the term is protected too. That didn't stop me
             | from having a career as a software engineer, just my title
             | was not that. And the company lost the tax discount for
             | employing a "real" swe. Guess my contribution was worth it.
        
               | cinntaile wrote:
               | It's insane that there even is a tax discount for
               | employing a "real" swe.
        
             | pjmlp wrote:
             | Portugal and Germany for example.
        
             | shagie wrote:
             | Quite a few - https://en.wikipedia.org/wiki/Regulation_and_
             | licensure_in_en...
             | 
             | The issue is the word "engineer".
             | 
             | If you say "software developer" there is no problem. If you
             | say "software engineer" in many places that has an
             | additional implication of being a professional engineer.
        
           | mgliwka wrote:
           | Do you have an example for Software Engineer being protected
           | in Europe? I haven't encountered this and did not find any
           | references.
           | 
           | For example in Germany, the German title ,,Ingenieur" is
           | protected, but carrying the title Software Engineer is fine.
        
             | lta wrote:
             | In France (and Italy afaict), the "engineer" title is
             | protected. You can have the function but won't have the
             | title of you're not from a sanctioned engineering school.
             | 
             | That being said, nobody cares about it in CS expect for
             | government and very large companies which will use it
             | against you in salary negotiation.
        
               | 908B64B197 wrote:
               | > You can have the function but won't have the title of
               | you're not from a sanctioned engineering school.
               | 
               | My understanding was that is was true throughout the
               | French world (so French speaking Canada does this as
               | well)? And that the curriculum for Engineers was more
               | rigorous than other disciplines (there's a strong
               | emphasis on math, you have to do some economics and so
               | on)?
        
             | groestl wrote:
             | Ditto for Austria (see "Please note" section on [0])
             | 
             | [0] https://www.bmbwf.gv.at/en/Topics/Higher-education---
             | univers...
        
             | querez wrote:
             | The English name "Software Engineer" isn't protected in
             | German speaking countries, but their German equivalents
             | are:
             | 
             | - The German equivalent would be "Diplom-Informatiker"
             | (which roughly translates to "certified computer
             | scientist"), which you're awarded after completing a
             | graduate degree/MSc in Computer Science.
             | 
             | - In Austria you'd be awared a "Diplom-Ingeneur" instead,
             | so a "Diplom-Ingeneuer in Informatik/Software-Entwicklung"
             | would be a "Certified Computer/SW Engineer".
        
             | ge96 wrote:
             | I think Canada too
        
               | icepat wrote:
               | Just the term 'engineer' is protected in parts of Canada,
               | and it's at a provincial level if I remember properly.
               | The 'software' part has nothing to do with it. That said,
               | the term is protected really weirdly. The standard is
               | 'would a reasonable person think you can provide
               | professional engineering services'. So seeing software
               | engineers call themselves such is very common. I suspect
               | the lax attitude here is because nobody would reasonably
               | expect a software engineer to sign off on the structural
               | integrity of a building.
               | 
               | In Ontario, the PEO (board that manages these things)
               | hasn't gone after software engineers often. I don't think
               | I've ever heard of a prosecution in general, and may
               | people call themselves XYZ engineer without having the P.
               | Eng designation. They tend to prosecute civil, and
               | industrial engineers, and building related engineers more
               | since civil engineering and a Civil Engineer have very
               | different roles. Even then, you have to be pretty
               | flagrantly disregarding the regulations to make yourself
               | a target.
               | 
               | The only people who'd given me a hard time over the job
               | title 'software engineer' were engineering _students_
               | during my undergraduate degree.
        
               | wheelinsupial wrote:
               | "PEO considers non-licensed use of "Software Engineer" to
               | be a violation of our Act."
               | 
               | https://www.peo.on.ca/public-protection/complaints-and-
               | illeg...
        
               | nchlswu wrote:
               | To elaborate, the distinction is _professional
               | engineering_. SO not just structural integrity of a
               | building. Under the Professional Engineering Act is:
               | 
               | >"practice of professional engineering" means any act of
               | planning, designing, composing, evaluating, advising,
               | reporting, directing or supervising that requires the
               | application of engineering principles and concerns the
               | safeguarding of life, health, property, economic
               | interests, the public welfare or the environment, or the
               | managing of any such act; ("exercice de la profession
               | d'ingenieur")
               | 
               | In principle, there's certainly a good justification for
               | the protection of the title, but the reality is much
               | different. There's probably a case for regulators to
               | actually figure out what meaningful licensure would mean
               | for Software Engineers or companies but that'll never
               | happen. There was a time where I thought 'Software
               | Engineer' was a relatively uncommon title due to this
               | case, but it appears Ontario employers have become much
               | more lax about this.
               | 
               | And while the PEO hasn't gone after individual engineers,
               | Alberta's regulator has taken up the case, for some
               | reason: https://www.theglobeandmail.com/business/technolo
               | gy/article-...
        
               | icepat wrote:
               | Yeah, that's what I was trying to get at. Better
               | explanation than I could manage before my coffee kicked
               | in.
        
             | pjmlp wrote:
             | The German example was already given by others. Portugal as
             | well.
        
           | bombolo wrote:
           | In USA "engineer" isn't protected.
           | 
           | I have met "sales engineers", that are supposedly technical
           | people and don't know you need to hit "enter" after copy
           | pasting a command on the shell.
        
             | shagie wrote:
             | Texas engineering licensing occasionally raises an issue.
             | 
             | https://cacm.acm.org/magazines/2002/11/6976-texas-
             | licensing-...
             | 
             | https://law.stackexchange.com/questions/52816/can-i-
             | legally-...
        
           | aforwardslash wrote:
           | It doesn't matter if it is a protected title, if a given
           | company has the discretion of hiring whoever they see fit to
           | perform the role, as - in most cases - there isn't a legal
           | requirement of hiring an actual certified "engineer". They
           | can hire a certified janitor to fulfill their software
           | engineering vacancy - because the job title is actually a
           | career path and not a recognized certified title.
           | 
           | Also, "software engineer" is an umbrella term within the
           | industry; Very few "software engineers" are actually
           | engineers (I don't recall meeting _one_ software engineer
           | that actually has the right to bear the title  "engineer" -
           | which, in my country -Portugal - requires being admitted in
           | the Order of Engineers); The same goes for all "software
           | engineers" that have actually graduated in mathematics,
           | chemistry, electronics, telecommunications, biology and even
           | design.
           | 
           | You may also find amusing that very, very few solution
           | designers are actually designers, and even less software
           | architects are legal architects. Also, often a cloud engineer
           | or cloud architect has no idea on how to design proper rain.
        
           | [deleted]
        
         | piperswe wrote:
         | I concur - I'm completely self taught (my special interest has
         | been computing and software development my whole life) and the
         | first job was the hardest. Now that I have work experience on
         | my resume, nobody asks anything about my education background
         | (or lack thereof), and I've gone from getting an occasional
         | response to applications to consistently getting responses to
         | most of my job applications.
        
         | gorbachev wrote:
         | I interview a fair amount of candidates for open roles at my
         | company.
         | 
         | I have never looked at or asked about how they learned the
         | skills needed for the job.
        
         | hahnchen wrote:
         | > The hardest part is breaking into the industry, but once you
         | have some experience and references the degree doesn't matter
         | for many high paying companies
         | 
         | How to do this?
        
           | channel_t wrote:
           | Learning the technical skills and interviewing a lot.
        
         | tayo42 wrote:
         | > academia might disagree
         | 
         | I thought teaching might be a good laid back alternative
         | income. Now schools consider you without a degree.
         | 
         | My path into tech has been really hard without a proper cs
         | degree. Even after my first and second jobs I had a real hard
         | time. I found my way through ops/DevOps/sre
         | 
         | I almost switched careers multiple times
        
       | WaffleIronMaker wrote:
       | In the same vein, I also recommend https://roadmap.sh
        
       ___________________________________________________________________
       (page generated 2023-02-06 23:02 UTC)