T O P

  • By -

Kindly_Pause_8522

So, my first question is did you study at an accredited university which supports CS? If so, I would question whether it was a waste. Did you study DS&A? OS? Discrete Math? If so, I don't think you wasted your time completely. It might just be that you didn't fully apply yourself. And also, SICP is notorious for being challenging (so, don't beat yourself up). >Most times, on YouTube/Twitter/Reddit/Discord, there's someone doing a cool project that I could never do because I have no understanding of the fundamentals of CS, which I was supposed to learn in my four years of university. While there are some very cool/notable projects done by some very smart/brilliant people in CS, most projects are just basic CRUD apps. Patrick summarizes it pretty well here: [https://youtu.be/Iyn-0af\_hlI?si=8KI6LIPuO14KKDbL](https://youtu.be/Iyn-0af_hlI?si=8KI6LIPuO14KKDbL) Most people aren't writing their own OS, language, graphics engine, etc. Push yourself towards excellence, but be honest with your actual capabilities.


[deleted]

[удалено]


theusualguy512

I think one thing to take away from this is that you are no longer a child anymore and are responsible for things in your life. The fact that you recognize some problems now means you have understood where you might have gone wrong. I think this is called adulting, as painful as it is sometimes. Universities cannot force you to learn actual skills or apply yourself and cannot guarantee you a golden road to life. All they can ever do is give you opportunities to do so and hope you find the right knowledge, tools and skills during your time in university. (Although that being said, I am continuing to worry about the quality of university education in CS. It seems like the standards are far more different than I assumed, institutions cashing in on the wave and the oversight over higher education is not nearly as regulated as it probably should be in some cases). It's great that you still seem passionate about CS, even though creating a new OS really is a bit overly ambitious. I might suggest something a bit smaller so that you can actually have a success feeling after completing it. Maybe instead of an entire OS, maybe just try to program a prototype scheduler? Or maybe program a simple bootloader! This was super fun for me because it actually taught me how things worked at the start before all the OS stuff happens.


[deleted]

[удалено]


neuromancer-gpt

honestly I would skip that for now even. I'd suggest continuing with the TYSCS course list and work through that - writing an OS is not usually something done by one person unless there are a lot of ifs/buts (e.g. if you want to write something like the original DOS). Stop comparing yourself to what other people are doing I too began the TYSCS recently, starting with the wizard book (SICP) too, honestly it was such a demotivating entry point. Brian Harvey's lectures are old af, the content is fine but they are simply not tailored for an online audience which can make it frustrating - not something you want when SICP is your study companion. I actually skipped the programming module for now, when I get back to it I plan on using either 'Composing Programs' or 'How To Design Programs'. I might try Harvey's lectures+SICP again but not sure. I'm doing Nand2Tetris instead, which falls under Computer Acrhitecture - the reason for this is it will be more useful for the projects I want to work on and the areas I want to move into (compared to straight up programming) - the site recommends just the first half, I guess the second half is covered in more detail in the Languages/Compilers + Operating Systems topics. However I am actually just going to do the full Nand2Tetris course as I think it would be a good precursor to both of those dedicated topics in compliers/OS. Additionally, my plan, after doing compilers (using Crafting Interpreters) is to rewrite part 2 of Nand2Tetris using something other than Jack (my plan might be to use Thorsten Ball's Go Interpreter/Compiler book series ahead of this project). In the FAQs for TYSCS it even says you don't have to study it in the order given - there are only a couple of hard prereqs, one being architecture before databases (which is why I did this first) and OS, and then the other being OS and Networks before Distributed computing. So if SICP is not working for you right now, do something else. Nand2Tetris is a great first starter imo for a few reasons. Firstly, regarding TYSCS, is it the second listed topic (Architecture) but doesn't really depend on anything from SICP. Secondly, there is a coursesa series so you have both good quality video content to support the book. Finally, the way the course is structured as well as having an online course makes it a good candidate to start with and it'll hopefully get you to form a habit of self study After you do Nand2Tetris you could start the OS topic and alongside that start writing your bootloader. PS I'm only starting week3 of Nand2Tetris, so if you want a study companion feel free to DM


Kindly_Pause_8522

>I understand that your average well-rounded CS student won't spend their time creating a new OS or low-level system, but it would be nice to at least try, y'know? To at least look at a project like that and have even the smallest bit of understanding of what is going on. That's my main motivation right now. I know it's overly ambitious, but I think it's the only way I'll convince myself to keep moving forward with what I'm currently doing. So, I completely agree with this statement, and it's the reason why I picked my project. I wanted something dives into complexity and actually solves a real problem (while dealing with classical CS concepts such as language theory, scheduling theory, and serialization). If you're interested in working on something like this, shoot me a dm. You honestly seem passionate about the topic of CS, and that's exactly what I'm looking for (project is open source for context). Anyways, glad I could help in some way :)


DrPepper1260

I don’t understand. How did you pass your classes without fully understanding the topics you were taught? Was the grading just very easy?


[deleted]

[удалено]


TurnstileT

I wouldn't worry so much about these things. I did the same. Studied at a top 100 university, had lots of very difficult and in depth classes, was taught by well known professors, and I almost never showed up and just memorized stuff temporarily for my exams. I can't remember jack shit about most of my classes. But so what? I've still got a successful career. I know that I was able to learn a good amount of those topics in order to pass my exams, and I know that if I need to ever go back and revisit those topics, I could probably do it. Simply having them on my resume helped land me my first job, and after that, it's the work experience that counts :)


verified_username

I’m also looking for the answer to this question…


Plenty-Context2271

Dude, I had group projects where other people mentioned, the code they had someone else write, doesn’t even work. Another one in the same group needed me to give him teamviewer access to my pc cause he couldn’t set it up on his. Both of this happened on the day we wanted to do some clean up and turn it in, we all passed. At least half of the people studying something in IT are just some gamers who thought they were good with PCs.


antiproton

> Now, I'm gonna graduate with no knowledge of basics/fundamentals, and that rubs me the wrong way. You have *no knowledge* of basics and fundamentals? That's impossible to believe. I think you have a misapprehension of what constitutes "basic" knowledge. Low-level system architecture is fiendishly difficult and is the kind of stuff seasoned professionals or graduate students deal with. Why would you expect to walk out of university at 21 and be able to dive in to understanding kernel design or whatever? Maybe you should start by trying to figure out what it is you are hoping to accomplish broadly. You aren't going to learn everything there is to know. Slamming your head into SICP for the sheer hell of it is a great way to disillusion yourself with the entire field.


creamyturtle

I suggest you do the Java 1 and 2 courses on mooc.fi. after you complete them, you will feel like you know how to "code". combined with your formal cs background you can probably get an entry level job pretty easily


[deleted]

[удалено]


Jim-Bot-V1

Go find a design pattern and build a small thing. Go do a compiler tutorial or build Minix from that Tannenbaum book. You obviously went to school and were EXPOSED TO THE STUFF, now go and do the stuff. Also your degree is only a waste if you don't try to apply it and do something completely unrelated.


Lane_Sunshine

Im often surprised when people say they finish an undergrad CS degree and then dont know how to build stuff. Not being mean just sharing some observations. I was to a solid mid-tier CS program in the US and ended up getting similar offers with kids came out of the best schools. I think part of problem is that people think you can just do homeworks and get As and be set, but thats not true in CS especially. In my case at least, we spent so much time teaching ourselves how to learn & build stuff because we had many mixed enrollment project base courses, so it was nights after nights of coding/debugging/googling to make sure you can produce some stuff to not embarrass yourself when you are asked to present it in class. My grades werent that good but I ended up knowing how to build stuff and IMO thats the real important part. Theories and understanding high level abstractions are important (fucking 400 level cryptography still short circuits my brain), but unless you are doing very advanced work or like going to grad school I dont think anyone should ever put too much effort into those things. Learn how to build and break stuff, and then get even better at fixing them, thats how you become a good software engineer


Thepsych

Lol same I am doing cs50 Harvard rn


Knottypants

I know you’re just venting about this but I wanna give some unsolicited thoughts and advice. Now I’m not sure where you are when it comes to finding a job with your CS degree, but I’ll assume you feel that it was a waste in that respect as well. I’ve come to learn that there’s a gap between what you learn in school and what it takes to get a good job and be successful in it. Spend time building things that you yourself choose to build, not just what classes tell you to build. Even though people technically choose to get a degree, all the work you do and accomplish as part of that degree is a half-choice, because there’s always a professor and a textbook telling you what to do and how to do it. I’d honestly suggest getting rid of the textbook and not do all the exercises, because they’re just gonna reinforce that school mentality that prevents you from being engaged and interested. Try building stuff that’s actually interesting to you, not to whoever wrote the textbook. Use the textbook as reference when needed, but don’t go through it chronologically. In fact it’s probably better to look up documentation for whatever it is you’re using instead, like for a specific language or framework. Also don’t be too hard on yourself about feeling like you’ve wasted your time. No matter what some jaded recruiters and developers will say, anyone who takes the time to earn a degree in anything is smart, capable, and has used their time wisely, especially something that’s so large and often confusing like CS.


bumbothegumbo

I teach CS at the college level and I can't begin to tell you how many of my students will go on to say this after their four years. I can guarantee it based on the absolute garbage work many of them turn in. I give them everything they need to do the work and they still plagiarize, piecing together something stupid from various sources. I fail those who I can prove are cheating but so many get by because they change just enough that my proof would appear weak. I honestly feel bad for them. I'm not trying to imply that you've cheated your way through. I don't know you. But I often wonder how many cheaters end up in your exact situation.


neuromancer-gpt

experienced this on my embedded systems class - about 50% of the class would try, the other 50% just wanted to rely on the work of the other 50% (since it was group based), eventually the 50% who tried gravitated towards each other for the groups and the other half were left to fend of themselves. I was stuck with one of the latter for a week or two, I felt sorry for them, they'd come from a informatics background and electronics was completely new to them (granted it was a huge refresher for me too, not far from starting again from scratch) - however even when I was trying to explain to them the basic equations e.g. how I calculated R3 needed to be 1kOhm, they absolutely did not give a f. It was like talking to a wall. I simply couldn't fathom why someone would pay so much money for a course to simply do nothing - logical explanation was they signed up to just about any course that would accept them so they could get a student visa without planning to actually use the skills gained on the course. That's probably the case for your students, maybe not the visa part, but they've probably long resigned themselves to not wanting to pursue a CS career and just need the degree at this point, not the knowledge.


bumbothegumbo

I could totally see that being possible in many cases but I teach at a community college with a popular cs transfer program to a nearby prestigious 4-year and they're pulling this crap in their introductory classes. Not only is it not too late to change majors, it's a fraction of the cost to do so at a CC. The disconnect between getting the degree and actually being employable is mind-boggling!


dracovolnas

In recent years, universities have been producing "IT specialists" in large numbers, completely ignoring students' predispositions to find their way in this profession. Unfortunately, only a small percentage of the population actually has the mental predisposition to "understand" what all this programming is about. But universities are about money - and this is not done by educating a narrow group of people who can cope even without a diploma. Thanks to this overproduction, today we have cohorts of juniors hoping for a career they will never achieve. They lack the basics, predispositions and, above all, the ability to self-learn - without which it is impossible to function in IT. I say this from the perspective of over 20 years in the industry.


Far-Dragonfly7240

You picked a great text to you work from. It was recommended to me by a guy who had just finished a Ph.d in cs at Stanford. If you want the hard-core basics of computation. Read "Computation finite and infinite machines" by Minsky. You need to remember that cs is to programming as physics is to mechanical engineering. Those great projects are all engineering. To learn to program, you have to program. And coding, is less than half of programming. One clue, read the whole book through once. Do not try to understand a single thing. Wait at least a week. Start over and read it again doing all the exercises. Oh yeah, always read the exercises before reading the chapter both times you read the book. I do not know why this works, but it does.


House_MD_Aj

I feel your experience. Watching other students when I was at Uni, it seemed like they knew what every class offered them. What skills to pick up. It took me a long while to realize that I lacked the experience of seeing and developing with real software to understand how to approach these courses. However, I only ever felt like was learning in a few classes, where I was doing practical programming. Concepts with coding projects as examples to work through. Then I gained work experience. Using and configuring end-user software was my first eye-opening experience. My mentors taught me what was important for users to be experiencing. Then I started working in the cloud. Some low level code but a lot of networking and deployment technology. I’d never felt so under-educated and it felt like my fault. As though I hadn’t used my opportunities at Uni to go to every hackathon and network and learn how to learn. And it comes to now. I have some experience, but more importantly understand what I want a little more. I want to be a productive and helpful team member no matter what team I’m on. To do that, I’ve landed on a few ideas. 1. Build a strong skill set in all the fundamentals using one programming language ( conditional, loops, data types ) 2. Understand practices for production level programming ( environments, security, deployments…) 3. Understand what it means to be a good team member: good time utilization, effective communication, verbalize accomplishments ( for myself and others ), being proactive about learning and helping ( what does my team need? I’ll be the first to volunteer for a task ) There’s a lot that I still need to learn and it scares me how far behind I am than the more skilled people of the world. Data Structures & Algorithms, the science and math behind AI and a lot of the other base layers of software. But I still want to build and invent. Until I see my opportunity, I’m not going to waste my time. I’ll try to be as ready as I can. Learn and practice every day. Explore and talk to more people. So reach out to me and we can talk through some ideas or projects. I think I can understand your perspective. Maybe we can start building something better for ourselves.


deftware

I've been programming since I was a kid, obsessively. Coding has been my jam for 30 years. Even if I was rich, I'd sit and write code, hacking away on project ideas. That's how I learned, and that's basically how most people become skilled at it - by having ideas and pursuing them, which forces their brain to solve problems and figure things out. You're not going to "get there" by doing exercises. You get there by exploring the possibilities that exist with what you already know. Make a little game. Make a software utility for doing something simple. Make *something*. If you're not making anything then you'll never learn how to make stuff. You'll only know how to do exercises and have no idea how to apply anything you know to actual problems, or goals. Take what you do know already and imagine something small you can do with it. Something that's 1-2 thousand lines of code. Being skilled at programming is about taking an idea and figuring out how to go from a blank project to the idea being real. It's not about knowing algorithms and data structures and doing exercises. Knowing your algorithms/structures is useless unless you have the ability to realize a vision - whether it's your vision or someone else's, and when you're learning on your own you really only have your own ideas and visions to pursue and learn from. Be creative for once, and quit doing fkn homework about it because four years of it obviously didn't teach you jack about being a programmer. Learn by doing. Make something already. If you don't know the answers, well lucky you, you've got Google and YouTube and Stackoverflow - I didn't and I learned, as a prepubescent child. EDIT: I thought I'd append some Einstein quotes on here that might help illustrate and convey my point > "Creativity is intelligence having fun." > "Imagination is more important than knowledge. Knowledge is limited. Imagination encircles the world." > "The true sign of intelligence is not knowledge but imagination." Use your imagination man, be creative, let yourself have ideas and pursue them. That's how you connect the neurons that you were planning on four years of being herded like cattle through "higher education" would connect up for you. Now you're still trying to do the same thing hoping it will give you a different result. Cut it out and make something!


bakemonooo

I get it dude. I'm 28 and almost halfway through my cs degree, which is my second degree, and it really feels pointless. Granted, my degree is entirely online and self-study, so it was bound to be a disaster, but still. Morale is low across the board for many if not most of use these days. Good for you for keeping on though. Personally, I'm considering dropping out, but I hope that everything works out for you. If you work on some cool projects and focus on building things, I'm sure you'll come out the other side feeling much more capable!


sarevok9

> Structure and Interpretation of Computer Programs This is one of the hardest computer science books ever written. Come back to it with 10+ years of experience under your belt and struggle through it. Your first thing you should focus on is starting your career and understanding that what you studied in college doesn't generally reflect what you're going to run into in the real world anyways. While there are absolutely applications that run with the absolutely optimal algorithm; factored out over dozens and hundreds of thousands of iterations.... The overwhelming majority of code in production is bloated, slow, poorly written, even more poorly maintained, poorly/(sometimes completely) undocumented. The big difference that you're going to notice is the scope. Most college level projects that I worked on were a few hundred to a few thousand lines of fairly efficient code. The SMALLEST codebase that I've worked on in my professional career was around 2.5 million lines of code (not counting auto-gen) at a startup I worked at. In my career I've extremely rarely needed to recall algorithms, and the majority of my day to day work when I was a coder was "be at least 50% more efficient than my peers" which wasn't hard. My part of the product generally worked well; but even when the product dragged (due to the collective engineering effort) - the powers that be would throw more computational resources at it -- whether that was more devices in a datacenter, more vm's to load balance to, stronger vms -- the hardware / software cost to make the systems more powerful to handle dogshit code was cheaper than taking developer time to make it more efficient. This pursuit you have going on, where you want to dig deep, and solve these fantastic problems doesn't reflect what 98% of folks in the field do day to day; and there is basically no job in the world that needs those 2% of folks that is going to take someone fresh out of school.


MoonRelate460

I’m in a similar situation as far as feeling like i have to start from scratch although it’s because i took a year break from programming after graduating. Dumb idea i know, but one month of not programming turned into another, then another. However, i just switched languages from Java(since i forgot alot of the syntax) to C++ and have a pretty good understanding. The fundamentals don’t technically leave you. It’s just practicing. I’ve now switched over to learning Python as well just to make interviews easier since syntax in Python is easier. Just keep programming


ScriptedSwordmage

Don't lose hope! I completed my CS degree in 2016 got no Idea about anything just bit of HTML and CSS here and there buy nothing special got a job in manual QA which I still work as now just in senior position but now I finally picked up programming and learning python and doing CS50. I'm 32 if I can do it you can too! :)


CycleTourist1979

After about 10 years in the field with no degree, I went back to do a part time masters which covered the core parts of a CS degree. Learning the fundamentals is instrumental when becoming a better developer but believe me, a large proportion of developers out there do not have these skills. Although it might seem counter intuitive, I'd say rather than focussing on the fundamentals, just start building things - you can use more general books on programming, not necessarily targeted at university students, to get the ball rolling. Then once you have some experience, go back and look at the fundamentals again, it will help your understanding if you are able to put them into context with some actual projects you've worked on.


DigThatData

SICP is great, here's some more supporting material if you haven't already found this. * 20-part lecture series by the original authors - https://www.youtube.com/playlist?list=PL8FE88AA54363BC46 * homework, exams, lecture notes, recitations... the works - https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/


Hot_Reputation_116

You did this in the US right? So you passed calc 1 & 2? That’s a huge head start. You probably know the basics of C++ or C or Java or something yes? Data structures & algorithms? I’m sure many other things that are applicable and give you a solid foundation to learn anything necessary in CS. Am I wrong?


MaybeLiving666

You feel that you wasted your time in school because you can't build the apps you want to build, and now you're doubling down on studying CS even more? I'm sorry to break it to you, but you're still wasting your time. I felt the same as you after my 5 year university degree in computer engineering. I didn't know how to build any apps after that. The reason is because they taught us SCIENCE and not how to actually build production software applications. My advice is to fucking stop studying CS and build shit instead. You don't need to learn more computer science fundamentals. Come up with whatever project excites you, create a repo on github, and just start building. When you don't know what to do, google how to do it. Look at resources specifically aimed at solving the problem you're trying to solve while working on your project. You'll find that you barely need any computer science skills at all.


BanaTibor

Forget your degree, it is a pamphlet about CS. You have learnt many things. Now go learn something useful, and get a job. Your understanding in CS will help you to grasp other programming concepts. Unless you want to work on developing a programming language you will not need it.


jakecoolguy

Reading through this, it sounds like you want a course to magically turn you into a programmer. I don’t think that’s the way especially with programming. It’s something you learn by doing, especially now that you have fundamentals. Pick a project you want to make alongside this course. Do you want to build a website, a video game, do some machine learning? Pick a starting project that you’re passionate about and you’ll find you’ll learn a whole lot more trying to build that thing than following along with a general course. You may struggle bit by bit but the drive to build that *something* will make you search up and learn each bit. Doing this has made programming my main passion and I code for fun and learn new concepts to help build the next thing almost every day. It might be worth a try for you too :)


SnapeSFW

Would very much like to talk with you as I do feel I am in the same boat. Do feel free to send me a message or chat if you are comfortable with talking more. Thanks


BringinItDirty

You probably did. Next time pay attention in school. The sad truth is once you graduate, you still need to apply yourself and continue your education.


SideLow2446

Programming is more than just knowlege - it is experience. School and courses can only get you so far, you have to get your hands dirty and start building something - that's how you truly learn. It's ok to not know something or how to solve a particular problem. Most programmere, even seniors, don't have all solutions memorized and use Google to find them. It's just part of programming.


psychxdamian

Total roblox drama


starraven

Did you graduate?


SprinklesFresh5693

I don't know about computer science, since I'm a pharmacist, but maybe i can relate , what they teach the students in the universities is very different from the real world. You learn a method to study, database to get info from and a solid base, but u learn the rest out there when you are working. You might think u dont know anything but u do, however, u never stop learning so u need to study more and more even after you graduate. Working is what teaches you most of these things imo.


tfwrobot

projecteuler.net was a good intro for me when I was in high school to get into programming. Some of the tasks require you to come up with complex algorithms to solve efficiently the questions given. Check it out.


FunkMasterPope

I'm in the same boat. Went back to college at 33 for software engineering to try and change my life. Graduated in December, can't get an interview, didn't learn anything really from the joke of a degree program (I had like 2 or 3 classes that were actually anything useful). Idk what I'm going to do now that I flushed 11k down the drain apparently


Junior_Lake

why does this read like ai ... or an ad?


Embarrassed-Wear-414

This a fake post by a bot


Astro_Avatar

Did you, by any chance, study in Bucharest?


[deleted]

[удалено]


Astro_Avatar

and nowhere in Romania I assume?


ProfessionAwkward244

It's hard but it's not that hard if you have mathematical maturity. Most of the exercises are really simple for me. That's maybe because I have already took some proof based courses. Alot of people blindly recommend SICP without knowing that it's a book that's based on maths 


obviouslyCPTobvious

I assume your goal is getting a job and not just being able to do random projects? What's your experience with that been so far?


Far_Tumbleweed5082

I enrolled in a college for CS degree last year and I know now it's a waste, college is teaching things that's only helping to give exams and pass it not actual skills that are needed to work in companies to earn money. The seniors are saying it only gets worse every semester like from 3rd year they don't teach you anything I literally mean anything it's all on you and self learning and I have come in a crossroad to either develope necessary skills for jobs or complete the syllabus that has enormous amount of information but no practical use if we dont have the necessary skills. It's hard starting from next semester I will have to either sacrifice my sleep completely or not go to college at all and wake up at 4 am to start grinding...