10 ms·
I majored in computer science, and I don't feel like I've learned anything. Every time there was an opportunity to learn something cool (mathematical theory beh
by kutkloon7 9y ago
I majored in computer science, and I don't feel like I've learned anything. Every time there was an opportunity to learn something cool (mathematical theory behind cryptography, assembly language, details of a processor, the cache, or a communication protocol) or useful, it was glanced over as 'technical details'. Instead, I was introduced to many, many small topics (programming, graphics, databases, algorithms, user experience, functional programming, logic, web programming), but we didn't go in the depth. To be honest, I forgot most of it. It did easily land me a job as a consultant, though.
I honestly wish I'd picked a more interesting major, like electrical engineering or physics. I feel like I could learn the things I've learned in a few months (which may or may not be true).
Computer science is just not very hard, while physics, math, and engineering is. I think the guys from other fields can be more successful programmers, just because they are smarter (more used to solving hard problems).
In computer science, the only course that required a little bit of creativity was algorithms. It was stuff mathematicians are practically trained to do (be it not in exactly the same setting).
- nxc18 9y agoWhat was your program? I suspect there is considerable variation. My program only required students to take the intro courses for all those topics, but students were expected to pick one or more areas of concentration. I wrote an operating system and a simulated CPU implementing (a subset of) a real-world ISA in my last semester - both comparatively in-depth things. Of course I did have to choose that, and in so doing, I chose a semester of hell. Similarly, doing an intro-level survey of all of those topics won't leave you with much; there is a concept of depth-over-breadth that I think is lost in programs' attempts to sound rigorous by bundling in everything under the sun. However, none of those things you listed are 'small' topics and could very well be majors on their own.
- kutkloon7 9y agoJust a vanilla computer science program. I combined it with a math major. I think the program at my uni was especially soft; there were no math courses at all. I suspect it's a bit better at a 'technical university' (I do my masters at one). I think the electrical engineers at my new uni are on par with the computer scientists at programming (which is basically the one and only skill you learn in my CS program), or even better.
- matwood 9y agoNo math is crazy. Mine required multiple semesters of discret, probability/stats, and up to calculus. My school was a liberal arts college, and still required a decent amount of math for the undergrad CS degree.
- kutkloon7 9y agoIt is crazy. To be fair, there was some math buried in the courses (like modular arithmetic in the cryptography class, and some discrete math in the concurrency class), but it felt rather awkward and not relevant to the classes.
- bane 9y agoI have to echo this. Computer Science is essentially a Mathematics field, not having extensive math in the major doesn't really make any sense. In fact, very little of the major after the Freshman of Sophomore year should even be about learning to program. It's like having a B.A. of Computer Science, or a B.S. in Literature, it doesn't really make any sense and should probably best be called some other kind of major. I've known a few folks who had these kinds of degrees and I'm not sure their schools did them a service graduating them without a proper curriculum. At most schools with C.S. majors, they have alternative majors for people who don't want to do the intensive Maths and Sciences and they're usually called something like "Information Systems" or "Computers for Business" or similar.
- matwood 9y ago>At most schools with C.S. majors, they have alternative majors for people who don't want to do the intensive Maths and Sciences and they're usually called something like "Information Systems" or "Computers for Business" or similar. My undergrad degree was a BS in Computer Information Systems, and I still had a ton of math. The main change from CS to my degree was replacing the higher end maths like Calc2+ and Physics2+ with business oriented courses like finance and economics. I graduated from undergrad in 1999 and I think since that time colleges have tried to make CS more 'friendly' to non-geeks. This has unfortunately meant lowering the math requirement.
- lordnacho 9y agoHow long out of school are you? I actually did Engineering but work in code every day. I noticed much the same as you: it's a million little topics. Control theory, thermo, digital filters, a bit of coding, and so on. But having come at it from another side, I figure the lesson is that you can learn any topic you like, the procedure is the same. Read something, try it yourself, search for solutions. If it's hard look at the prerequisites. I suppose it's a bit more obvious when you study Engineering that you're not going to use all of it. But after a few years you realise that you use a lot of it. There's this meme going around about "The 20 most important equations". I think I used them all either at work or in uni.
- kutkloon7 9y agoWorking on the last year of my masters degree. I switched to computer engineering. Basically I was busy learning the things I missed during my bachelor.
- RRRA 9y agoAlgorithmic, data structure and theoretical CS are the main subjects that should get a lot more time then a single class for each (in my case). That would allow a deeper theoretical basis but also time to link those to reality through concrete examples. But then, you'd probably lose more of the class... You know, graduation quotas & all.. :/
- kevan 9y agoI don't think it's fair to say that computer science isn't hard when you openly admit that you didn't go into any depth in the topics. That's like me claiming the field of Mathematics isn't very hard because the bog- standard calculus courses I took weren't very difficult. Maybe we should be asking whether computer science as we know it is too broad of a field to meaningfully explore in a Bachelor's degree.
- kutkloon7 9y agoTrue, you can make it as difficult as you want. But generally, math, physics, and engineering programs are much harder.
- cheez 9y agoDepends what you mean by hard. I went into computer science and I got the highest grades in statistics at a university which is in the top 10 worldwide for statistics. In fact, I got perfect on the final where the average was a fail. I did "OK" in comp sci (deans list, but no special placement other than that.) Stats/calc/algorithms weren't hard, I needed practice. I did every question in every textbook and followed up with the prof when I didn't understand how something worked. Computer science actually pulls together all these different disciplines into one. By that metric, it might be the hardest. But really, nothing is easy or hard, it just takes practice.
- Bahamut 9y agoWhat you see with statistics/calculus is extremely superficial compared to the realm of higher mathematics. Exceling in that is a poor indicator of ability to succeed in any proof-based mathematics coursework. As someone who had significant exposure to the world of mathematics for a working professional (4 years in an excellent PhD program) and who codes for a living, I find that what I did in grad school was multiple levels harder than what I do now, or what I get exposed to in the inane CS-focused interviews of some companies. The abstraction level is seldom, if ever, matched.
- nickthemagicman 9y agoI disagree with the fact that computer science degree is 'not very hard'... It's way more difficult(if done correctly) than probably almost every other degree except physics, math, and maybe chemical engineering. I don't know where you got your degree but I felt like I was challenged immensely in my curriculum..with algorithms, upper level maths, cryptography, distributed systems, etc. etc.... but I really worked 80 hours a week to try to get the stuff, even though I could have scraped through. And taking the degree has helped immensely in industry...it didn't teach me any specific technology, like a bootcamp teaches a MEAN stack, but it made me fluent in the industry...so I am easily able to pick up new tech rapidly..which I credit years of studying computer science in college. Which is the goal of college...to get you fluent in the world you're majoring in..not necessarily any specific tech, you're supposed to learn that stuff yourself, and it never stops. As for the industry...that was a huge disappointment. My first job I felt like 'the best office worker'...it didn't have the revolutionary cutting edge feel I wanted. My current job is way better, but there's a lot of shit jobs in the industry, because you work directly for business people, who typically have no higher motive than money, and you're basically the best paid worker in the 'Rat Race'.... Also, there's way less status than being a doctor, lawyer, or nurse. People dont even remotely understand what we do, therefore there's no connection for them to grant us status.
- alvarosevilla95 9y agoI agree with you. Computer Science at the appropriate school is a really challenging and gratifying experience. I would also add that university in general, is more about approaching new and hard topics, and finding a good way to learn and digest them. In computer science you also get to do it facing fascinating topics like lambda calculus or the mathematics behind cryptography.
- jsolson 9y agoMy observation is that the problems in software engineering tend to look simple until you actually try to build something larger than a toy. I gather that, if you have the relevant background in other engineering disciplines, the same deceptive simplicity applies. It's easy to dismiss the difficulties that arise in software as properties of the language, platform, framework, etc. that you're working with, except that we're a few decades into this whole software engineering thing and we're still inventing (and re-investing) tools to solve "simple" problems. Which, of course, is also true in many other engineering disciplines. Sure, the scale may get smaller or larger, but base issues like "this problem would be easy if I could just temporarily disable gravity" or "I've got the perfect mechanism for this if we can allow one solid to pass through another when we assemble it" still crop up with remarkable frequency. One might reasonably start to think that estimating the difficulty of problems is, in and of itself, harder than it looks.
- dahart 9y agoI learned a lot in my CS degree, but I have wished I did a lot more physics and math. I specialized in graphics and I've noticed that a lot of the foundational advancements in graphics are more physics than computer science. Many of the most well known graphics people started in physics or math and switched to computer graphics, and some of them admit that it's because graphics was easier with more low-hanging publication fruit.
- literallycancer 9y agoYou did compilers/formal languages at least, right? Writing one from scratch is not trivial.
- kbenson 9y ago> Every time there was an opportunity to learn something cool ... it was glanced over as 'technical details'. That's interesting. The most common complaint in my program from students was that we weren't actually learning how to program. Actually learning how to use a language was considered (for the most part) a "technical detail", and the course was very heavy on algorithm analysis, theory of computation, math, how operating systems function on a theory level, writing a keyboard interrupt handler for a small embedded OS to support backspace (^H) and erase to beginning of line (^U), using threads with locks, etc. > Computer science is just not very hard, while physics, math, and engineering is. I think that depends quite a bit on the school you go to. I think the CS program at my school was quite hard compared to the math program. My school was by no means top-tier, and I was very self conscious of that for a while. Then I met a good friend that had a degree from Berkeley's CS program, and over the years I've come to the conclusion that the main difference between his CS program and the one I went through was the quality of the teachers, and I think it was actually a fairly small difference. Much more important seemed to be what you wanted out of the program, and what piqued your interested and caused you to follow it deeper (and good teachers could help quite a bit at this point, as they might have deeper knowledge of specific subjects that could help you). My point is that I do not believe that CS is necessarily much easier than those programs from what variable experience I have with them, but CS is fairly wide in what it touches, so unless you decide to dive in deeper on a subject, you are likely going to be getting theory plus a survey of what's available. That said, if your school focused more on that actual art of programming than the theory, than might lead to different (but not necessarily worse) outcomes. People go to college for different reasons, and a good many in my class that were complaining about not getting much experience actually programming were looking for college to train them for a programming position immediately after college. That wasn't necessarily what I was there for, but that doesn't mean that a college putting a bit more of that in their program is doing the wrong thing, they're just responding to market realities (i.e. what their students want). > mathematical theory behind cryptography In our algorithm analysis class, we had to write a paper on some known algorithm examining its function and complexity. Being security conscious and having an interest in cryptography, I chose Diffie-Hellman key exchange. A lot of the benefit of college is making your own opportunities.
- 9y ago
- freyr 9y agoI majored in EE, even though I expected to someday take a software job because I really enjoy programming. I figured I could continue teaching myself programming in parallel. As a self-taught programmer, I think you're downplaying how much you can learn in a CS program. I don't pretend to know as much as a CS major. I haven't spent time learning compilers or DB internals, and probably haven't studied CS algorithms enough to pass an interview at Google or Facebook. Regarding the CS curriculum, an undergrad EE curriculum is similarly shallow: it's a sampling of many different subtopics that often are only loosely related (E&M, DSP, circuits, control theory, devices, etc.). Undergrads won't be experts in any one of those fields. Since I graduated (grad school) in EE, I've told myself each year that I'll jump from my EE job to a programming job, since I enjoy programming more. But it's getting harder and harder to justify. Will I be leaving a senior EE position for an entry-level software position? Does that make sense at 30? Why am I the oldest person in the office when I interview at a startup? Why is the interviewer fixating on compilers and database internals? If I were to do it over, I'd get a degree in CS because that's the most direct route to the job, and education continues on the job. Everything else was a diversion. And you're seeing the grass as greener on the other side of the fence regarding engineering/physics curriculum. Learning how to solve physics problems doesn't make you smarter or a better programmer.
- Kurtz79 9y agoI was in a very similar situation as you, graduated in EE but liking programming software much more. I found a very sweet spot in Embedded Systems programming, which by nature is more or less an intersection of the two disciplines.
- tnecniv 9y agoHave you considered doing embedded systems work? You can flex that programming muscle without abandoning all the EE stuff you think is cool.
- kutkloon7 9y agoWell, I took the route you suggested (the CS program). I liked to program when I entered, but most of that joy is gone now. I had the same in high school with reading. I might be downplaying CS programs, I just experienced one of them. In that program, I had no chance to learn compilers, operating systems, electronic circuits, assembly language, or any math. In hindsight, I'm not sure if this was the right choice. I did learn about those topics, but just in my spare time. I was able to pass my CS program while barely going to lectures (which may sound nice, but in practice I did not make any friends; it was a terrible time). I could just as well learn this on the side while studying something that is intrinsically more interesting, like physics or electrical engineering. At the other hand, I was able to double major, and it's not hard for me to find a job now.
- Fiahil 9y agoI have a master's degree in computer science, and my experience was the complete opposite of yours. Projects were interesting, topics were well-covered, we had the opportunity to go really deep into some subjects (kernel programming, distributed systems, assembly, functional or concurrent programming, ...), and, of course, it was highly creative. I spent my four of my five school years in France, and one in California. Where did you study ?
- kutkloon7 9y agoI studied for four years during my bachelor at Utrecht University, and during that I spent half a year at UCSB (See my other post with all the courses I followed).
- wvenable 9y agoMost developers don't appreciate how big of a difference there can be between different schools with regards to their computing science programs. I picked a pretty good school and we got in depth with assembly, graphics, databases, functional programming, etc. In my time there, I wrote my own programming language and VM, a working raytracer, a neutral net project, and much more. I appreciate having a good solid base in a wide range of computing science concepts. One of my co-workers are currently doing a degree in a much less prominent school in town, and the classes are much less involved, pretty easy, and sometimes just weird. She doesn't even bother to go classes most of the time. She really isn't learning much that she doesn't know already. If I had gone to that school, I wouldn't have learned much that I didn't know already either.
- mbell 9y ago> Most developers don't appreciate how big of a difference there can be between different schools with regards to their computing science programs. The same is true of EE programs. My degree is in EE with CE emphasis but work as a SE now. I've interviewed a number of EE background folks from well known schools and it's very clear they had a completely different experience than I did. Their experience was much less rigorous in terms of the physics/mathematics involved.
- q845712 9y agoCompletely agree, but I'd even add internships. Relatively often while trying to help a fresh-from-school hire I'll ask myself silently "when and how did I learn this" and realize it happened before my first day as a full-time software engineer. But it's fairly evenly split between coursework that has proven itself to be better-than-average or through some fortuitous internship experiences. aside, i interned at a nat'l lab and I wonder if there are any reliable predictors for how good of a training opportunity an internship will be. I think mine was good because I got a lot of attention from two smart people who had more experience and a decent grasp of many best-practices, though they were both relatively fresh from (graduate) school themselves.
- theparanoid 9y agoI think you went to a bad school. Good CS programs go into the math behind cryptography (e.g. the prof. invented the crypto algorithm). Processor architecture, caches etc. I saw the quality difference in the two schools I attended. One had profs teaching by the book and the other had profs that wrote the book.
- mcguire 9y agoWhere did you go? There is a great deal of difference between different schools, which I think explains much of the varying experiences people have.
- kutkloon7 9y agoUtrecht University in the Netherlands (see my other post).
- BearGoesChirp 9y ago>details of a processor To give a counter view, at the university I attended we went deep into the processor, effectively building a simple model from NAND gates all the way up to an optimized CPU pipeline. The class had one of the most interesting grade curves I've every seen, with no B's, and very few C's. Most grades were either A's or D's.
- kutkloon7 9y agoFor those interested, I studied at Utrecht University in the Netherlands. The CS courses I took were: Imperative programming (learned C#, nice course), Computer science project (program something in a group), Logic for computer science, Web design, Computer architecture and networks (terrible: no practicals, just an exam), Databases, Graphics (fun, but only learned how to write shaders in glsl), Functional programming, Data structures, Algorithms, Modelling and system development (we learned working with UML diagrams; the course was way too 'soft' for me), 3d modelling, Software project (again, program something in a group. we did something for a two-man company with a delusional CEO, which went bankrupt while we were working on the project), Security, Concurrency I filled the rest of the curriculum with math courses. I have to admit the whole thing (not just the CS part) looks so meager when I look at the courses I followed. Can't believe I spent 4 years on it.