16 ms·
Path to a free, self-taught education in Computer Science
- monero-xmr 4y ago100% 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.
- piperswe 4y agoI 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.
- emodendroket 4y agoFAANG 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.
- sidibe 4y agoThat'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.
- LtWorf 4y agoFAANG 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.
- pjmlp 4y agoIn 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 4y agoI imagine they can give you some other title and have you program computers.
- pjmlp 4y agoYes, 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.
- mgliwka 4y agoDo 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 4y agoIn 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 4y ago> 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)?
- tayo42 4y ago> 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
- hahnchen 4y ago> 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 4y agoLearning the technical skills and interviewing a lot.
- gorbachev 4y agoI 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.
- schwartzworld 4y agoI can confirm. Now that I'm on the inside, I'd go so far as to say that my being self-taught is a boon, not a hindrance.
- ipnon 4y agoHaving finished a CS undergrad and followed the OSSU curriculum for some years I can confidently recommend https://teachyourselfcs.com/ 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/ 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.
- loganc2342 4y agoOne 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/ https://missing.csail.mit.edu/
- chrchang523 4y ago+1. I recently gave an internal presentation encouraging everyone on my (rather heterogeneous) team to look at that.
- asicsp 4y agoDiscussions for Teach Yourself Computer Science: * https://news.ycombinator.com/item?id=29353904 https://news.ycombinator.com/item?id=29353904 - Nov 26, 2021 | 52 comments * https://news.ycombinator.com/item?id=23588896 https://news.ycombinator.com/item?id=23588896 - June 21, 2020 | 265 comments * https://news.ycombinator.com/item?id=13862284 https://news.ycombinator.com/item?id=13862284 - March 13, 2017 | 237 comments
- activitypea 4y agoEchoing this. Teach Yourself CS is the best self-study resource available.
- 4y ago
- revskill 4y agoIt'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 4y agohttps://browser.engineering/ https://browser.engineering/ is an excellent resource following this teaching philosophy.
- 314 4y agoAs 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.
- gnicholas 4y agoGiven 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 4y agoScratch 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 4y agoMaybe learn the same things but use tools like ChatGPT to get help where needed?
- gnicholas 4y agoThe 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).
- dang 4y agoRelated: OSSU: Path to a free, self-taught education in computer science - https://news.ycombinator.com/item?id=27744255 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 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 https://news.ycombinator.com/item?id=16035839 - Dec 2017 (66 comments)
- ZephyrBlu 4y agoA 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 4y agoI 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/ 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.
- ZephyrBlu 4y agoIf you can afford to spend the time learning the full CS curriculum before you get your first job then sure, it's a good strategy. But most people don't have that luxury. I don't think it's at all related to ambition, it's about the quickest path to getting a job. If you want to be a top engineer you will need to learn CS stuff at some point, but you don't need to do it all at once right at the start.
- biql 4y agoOften 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.
- groestl 4y ago> 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.
- t344344 4y agoAnd is that something beneficial? Many students today are alcoholics, stoners, activists, or just lazy losers. You also open yourself to sexual harassment lawsuits etc...
- michaelt 4y agoIf 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 4y agoOne of those words is not like the others...
- bombolo 4y ago> 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.
- jjice 4y agoAbsolutely. 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).
- abdullahkhalids 4y agoCan 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'.
- khqc 4y agolooks like they have some of that in the advanced theory section
- Joel_Mckay 4y agoThe secret is real mathematicians snicker at CS faculty people behind their backs. =)
- Xeronate 4y agoThe 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 4y agoEEs do both, but they’re not laughing at anybody because they’re too busy getting the job done
- Joel_Mckay 4y agobut do they do "both" well... generally not. =)
- tomcam 4y agoWell the ones I’ve worked with were all pretty damn good…
- cod1r 4y agothis 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.
- Joel_Mckay 4y agoA 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 4y ago> 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 4y agoYou 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 4y agoIt 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 4y ago[dead]
- mathieuh 4y agoI 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.
- number6 4y agoYes, I instantly though: but if I can't get a title with these courses here, they are worthless.
- jltsiren 4y agoIt'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.
- asicsp 4y agoSee also: * What every computer science major should know (https://matt.might.net/articles/what-cs-majors-should-know/ https://matt.might.net/articles/what-cs-majors-should-know/) * learn-anything mind map (https://learn-anything.xyz/computer-science https://learn-anything.xyz/computer-science)
- ilaksh 4y agoThese 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.
- ActorNightly 4y ago>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.
- Crusoe123 4y agoIf it was only that simple, I assure you those jobs would have been obsolete already.
- moremetadata 4y agoNot 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!
- deleted 4y ago[deleted]
- bugbuddy 4y agoThis is a good list but I want to know how they came up with duration and effort numbers. It seems like hand waving.
- julius 4y agoComputer 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.
- teekert 4y agoI 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 4y agoI 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.
- teekert 4y agoMe too, I just started a company (wouldn't call it a startup), I manage their data, add some Synology Nas's, a Nuc for data processing, a Wordpress website, rsync some (NGS) data around, process it. Tied it all together with Tailscale. It's a lot of fun, I get to choose my own preferred tech which is really nice (I have strong opinions).
- m3nu 4y agoA 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-2023-Ideas https://github.com/borgbase/vorta/wiki/Google-Summer-of-Code...
- rep_movsd 4y agoIm not sure you can learn some fundamental CS concepts in python
- ravagat 4y agoNice, 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!
- deleted 4y ago[deleted]
- sailorganymede 4y agoI 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.
- ranting-moth 4y agoDoes anyone have recommendations for similar material in either Mechanical Engineering or Electronic Engineering?
- debugati 4y agoI'd be interested in that too.
- tyingq 4y agoIt'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.
- SunghoYahng 4y agoLooking 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.
- nashashmi 4y agoNow there needs to be a path towards self-certification. Something like a standardized exam. Or 24 hour cs project
- rahmaniacc 4y agoThis 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 4y ago> I have noticed some differences in engineers who have gone through bootcamps How do they differ?
- bombolo 4y agoIt 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 4y agoThis 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.
- SergeAx 4y agoNote 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.
- PartiallyTyped 4y agoI 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.
- ldh0011 4y agoEh 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 4y ago> 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-technologies-language 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.
- PixelForg 4y agoThere's also https://roadmap.sh/computer-science https://roadmap.sh/computer-science
- goy 4y agoThe 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 4y agoStudy 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.
- omega3 4y agoCould you share the link to this discord server please?
- hnthrowaway0328 4y agoI 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.
- necessary 4y agoDid 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 4y agoI 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 4y agoI 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.
- chowells 4y agoIn 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.
- gtk40 4y ago
- bleuuuu 4y agojust learn everything. pick a problem or project and fill in the gaps.
- WaffleIronMaker 4y agoIn the same vein, I also recommend https://roadmap.sh https://roadmap.sh
- g42gregory 4y agoI 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-cFJNzq7z_tQGq-rxtq_n2QQDf5vnM&index=2 https://www.youtube.com/watch?v=4CpHpFu_KYM&list=PLbY-cFJNzq...
- kirillbobyrev 4y agoI'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 https://github.com/kirillbobyrev/computer-science-resources
- deleted 4y ago[deleted]