We need computer science, just like we need mathematicians and physicists and architects. Once you pass that tier, you end up with yet another situation where there are discontinuous errors that are harsh on relative beginners. But it isn't easy. Nobody is going to get taught CS. In software source code, it is not only not rare, but actually common for small mistakes to have large or even catastrophic consequences. It was hard enough to learn CS forty years ago when it was this big. This is, and has always been a recipe for disaster. Self perception theory. This is not the fault of CS. Coding is not too difficult, but algorithm design and then establishing that the algorithm is provably correct is not as easy. The graphics course was hands down one of these, given the involved and highly detailed work required to get things working. Just teach me the big hammer right away and skip the interesting digression. Computer science is hard because it’s a branch of symbolic logic and logic is hard. This will make for some frustrating mismatches. So we end up with a lot of people with a poor foundation in ciphering showing up in secondary education, then muddling though classes without every achieving mastery, then deciding to go into a lucrative field (programming). This dropout rate is considerably higher than in other majors. Hmmm. In this regard, I sometimes point students to this image (I believe first originating from a website that no longer exists, but e.g., referenced here). Afterall, they are here for the salary, the fun, the kudos. Our basic problem is that they are the wrong students with the wrong motivations. Given that I taught CS for about 40 years, I understand that and, moreover, what it does include. Computers don't have those assumptions, and operate by their own internal logic that was artificially created by legions of computer scientists. That article links to this one: Where an English interpreter writes code on the fly... https://twitter.com/sharifshameem/status/1283322990625607681, 2020 Stack Exchange, Inc. user contributions under cc by-sa, many factors but maybe a big one is the high mathematical content, and some abstraction, etc. Unfortunately, making the book big enough to prove every known result is a double-edged sword, as it forces the computer to consider far more options. But with computer syntax no such flexibility is possible: if a single symbol is misplaced, then no defined program exists. For me, it was a Tuesady. And without mastery of the previous tiers of mathematics, the theoretical computer science they teach is extremely difficult. Additionally, CS has also, and fairly suddenly, become a wildly popular major. Mechanical engineering teaches him how to design the things, but that's not what this guy wants. But are hard for somewhat different reasons. Why would we think that it is something that can be easily and directly taught? Everyone should be computer-literate, able to be safe online, spot malware and so on. According to computer science majors, here are some of the topics that make computer science, well, hard: Artificial Intelligence tops the list as one of the most difficult topics in computer science, as it teaches students how to program intelligent computers. Out students are totally unprepared for the actual reality. https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6605#6605, I agree that there's a long-time institutional failure to distinguish between "computer science" and "software engineering". Some topics are maybe not very hard, but unless somone is really interested in them already, the university might not necessarily present the topic in a way that creates interest. It is like trying to write an essay in English, but if your letters aren't formed right, you have any spelling mistakes, or there is any grammar errors, the teacher isn't able to actually read your essay. And if they don't like it, they can do something else. Instead, they are forced to examine each word in isolation, then after verifying them themselves they can look at each sentence in isolation, etc. As I type this, in the USA, we are dealing with the 2020 national elections. But even if we cut out the heavy research/math components: many or most students can't pass even the introductory programming course that you're talking about. In my time, there were the classic lectures like how to build a compiler for a programming language; or more theoretical topics like automatons, temporal correctness and such. @ScottRowe And many, many problems faced by the industry stem from the very questionable things C lets you do in order to work from page 1. This is of course as ridiculous as saying everyone must be an engine mechanic or concert pianist. Programming is the art of managing insane amounts of complexity while telling a complete idiot how to solve a problem, exactly. CS is maths, plus compiler design, the vim editor, gray codes, the use of tensor algebra to model shapes (Bookstein), the use of analytical topology to prove results about Perceptrons (Minsky and Pappert), the Godel incompleteness theorem, using gdb effectively, engineering philosophy, automated theorem proving, why this b = (b * 0x0202020202ULL & 0x010884422010ULL) % 1023 reverses a byte in three machine operations and with solving the integer knapsack using intelligent backtracking we get the tip of the iceberg. This is the tricky part, really. The colossal growth of computing in the past few decades offers evidence … But when you try to do that in mathematics things just fall apart. Is computer science hard? Swarthmore College in Pennsylvania is another great option; students in this program have won robot contests at the annual American Association of Artificial Intelligence Conference and have qualified for the International Finals of the Association for Computing Machinery programming contest. $\endgroup$ – J.G. Some people realize this time commitment and determine they either don’t have, or don’t want to spend their time this way. First, I somewhat dispute the premise of the question. So don’t do it just because your dad told you to, or you heard you can make $100K a few years after school (you can). Some people in elementary and secondary schools are forced to teaching CS and especially Advanced Placement CS when they have little understanding of the topic and just try to stay "one week ahead" of the students. A while back, I did a computer science task which involved 4,000,000,000,000 operations, all of which had to be done absolutely perfectly in order for the answer to be valid. In the past, when computers were weaker, what made CSci so hard is that the tools did not fit the problems as well as we might like. So called time-sharing systems emerged in the 1960s to allow several users to run programs at the same time from different terminals that were hard-wired to the computer. https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6636#6636, https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6613#6613. For the purposes of this answer, I'll assume that in the first year or so, teaching computer science is synonymous with teaching software engineering. Despite this, all nighters were a given, and some labs even had couches to crash on. This presents a very narrow view. That means that they're coming in blind. On top of that, the profession is a relatively solitary one. Cornell University offers excellent computer science programs in three interconnected departments: Computer Science, Information Science, and Statistics and Data Sciences. Whether it is the promise of a large salary, the association of CS with 'fun' technologies or the social kudos associated with the movie images of hackery, none of the drivers are really about the subject. Particularly for students with ID's such as dyslexia, this may be a significant extra challenge. Opportunities for true creativity and innovation. Features such as modular functions, scope rules, local variables, classes and objects, encapsulation and data-hiding, etc., really only make sense in terms of a large team of programmers, engaged in a division of labor, communicating in a structured way so as to not corrupt the overall system. We’ve ranked both the best computer science degrees and the most affordable computer science degrees that you can get online. Problems are almost never delivered in purely symbolic form, as may sometimes be done in math, physics, chemistry, etc. Everything can feel hard if you find no joy or fun in it, so especially with Computer Science, it’s a good idea to try it out before you commit to earning a degree in the field. Computer Science, as taught, is a combination of Mathematics and Computer Programming. Why are computer science drop-out rates so high? She currently teaches a combination of traditional seated and online courses, including English Composition, Argument Research, and Creative Writing. If the teacher hasn't read Vygotsky and the class isn't based on some constructivist learning principles you can forget it. ", and I was a bit flat-footed for a good response. Everything is a "word problem", and students must be proficient at reading, interpreting, asking for clarification (in a natural language, e.g., English), then designing, implementing, and testing, and finally documenting and explaining the design and code (again in English). If so don’t let the “computer science is too hard to learn,” type of people deter you. (Trinity News, 2016) ... Computer science is hard because it’s a branch of symbolic logic and logic is hard. That is, studying things that would let you make better computers or discover new algorithms." In many (or most?) With other fields, we know millions of ways not to teach it; with computer science, we haven't had time to make as many mistakes and refine our education. Students who are weak in mathematics tend to be weak in programming and therefore weak in Computer Science. ... Aerospace engineering was the next lowest, at 7.6%. This answer matches my experience pretty exactly. To find and fix software errors, or to prevent them, a software engineer needs to be skilled at examining those assumptions and stripping them away to correctly follow the computer's logic, and that is a skill that actively opposes many people's instincts. Why Are Music and Movement Important for Early Childhood Education. Online Schools Report aims to provide students with simple, practical, and accurate information about every online program available. : It's just a few conversational steps from thinking about worldwide internet protocols, to the need for check codes and error-handling, to the existence of cosmic rays in the physical universe that might corrupt transmitted data. Managing 1,000,000 lines of code is very different from managing 100 — and much harder to demonstrate…. There is much more to CS than that. Its hard. Data pretty regularly shows that computer science programs have among the highest failure and dropout rates of any college program. You don't need to be able to design a CPU in order to use it. : it will likely be read by a human instructor, who may be able to forgive or fill in some smaller errors in spelling, grammar, punctuation, etc. The first is the economic motivation -- accumulation of wealth or even gainful employment. al.). So, the first two causes are the important ones, showing that... these students chose a major that didn't actually fit for them. My head of department posed a question at a staff meeting, "how can we reward those students that work really hard?". Prelude A: This is an area of ongoing research, and there's no consensus theory at this time. A few might learn if they're motivated though. As someone learning programming, you end up building increasingly complex things. This is a branch of mathematics, and like most kinds of mathematics requires iterative mastery. There's something very unintuitive about how you had to work with them. Here are some things Ive noticied about the market that influence how hard … Even though there's precious little math in most programming, there's a, Upvoted for pointing out that many of the techniques we learn only make sense when working on big systems and/or teams. We can afford to make a few mistakes here and there, we just try to keep them small so that they don't change the result of the election. I find myself doing anything just to step as far away from the computer as possible. Generally, most major public colleges will let you sign up and then try to fail you out. The Hard Part of Computer Science? When you write an algorithm, your functions can't have errors, or the algorithm won't work. So here's my stab at a brief answer to the inquiring student: Computer science is something of an everything-discipline. Maybe those folks who fail just needed to directed to a more appropriate place so that they can succeed at the underlying task that brought them to computer science. However, it is hard to get off the ground in programming if you are unable to manage the syntactical exigencies of the language you are programming in. Every programming problem is judged first not by your instructor, but by the world's most harsh marker; the compiler/interpreter. In our world of ever-evolving technology, computer science professionals are absolutely vital in making sure our computer systems run properly. If a student has been deprived of a wide range of learning opportunities about the world, then they will be further disadvantaged. E.W. Computer science students need to understand how these work and even how to design them, which can be quite challenging. (https://dr-monsrs.net) Many people of all ages find it really hard to comprehend science and research! Every program you write ends up being instructions for some idiot-savant computer to follow. I've done quite well by it, though. Each of these patterns is [b]hard[/b] to master, as they encapsulate extremely complex problems with seemingly arbitrary rules. Logical reasoning as typically practiced by humans involves an enormous number of unstated assumptions, all predicated on a life experience in a world governed by physics and inhabited by other humans. Actually, computer science is much more than what you suggest. The problem with software engineering is that there is so much to learn to be sufficiently competent for the reletively unskilled tasks that apprenticeship style teaching only really becomes relevant once you reach the level that CS undergraduate course teach to. Do you have a mechanical brain that enjoys looking at every minute detail of a problem in order to solve it? Which is not wrong. That's why mathematicians still have to think so much. So this also doesn’t fully explain why more people aren’t majoring in CS. As a current CS student, I'd love nothing more than to have a computer science class that actually challenged me, but 95% of my time has been spent on the associated math and physics requirements, which is why I'm currently in my 4th year of a "2-year" college, hoping to transfer to a "4-year" college next fall. It's harder than it has to be, but that's a good thing. You have to reach near-100% reliability on each tier, and learn how to deal with the less-than-100% reliability, before you can get any kind of reliability on the next. The number of students grows over time, so the previous generation of students (who supply the teachers) is smaller. While some people may cite difficulty, most of the time, it’s simply lack of fit. The last bullet point in particular rings true for me: I almost failed due to the stringent math requirements, despite doing well in math back in high school. These are all levels of abstraction programmers have developed to manage increasingly complex programs. I'm interested in writing a program that makes some task easier - and that might involve using hashes or dictionaries or linked lists or what have you. To use an example from above, if a large population of students who had literally never read an eighth note (quaver) suddenly enter into college music majors, do you expect that the results would be very different from what you are seeing among your computer science population? The issues that make computer science "hard" are now harder. https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6599#6599. Starting off the top 3 hardest GCSEs, we have GCSE English Literature. Renee earned a Bachelor of Arts in English in 2006 and a Master of Arts in Teaching, with a specialization in English in 2011, both from the University of North Carolina at Pembroke. Computer Science vs. Computer Engineering: Job Opportunities. Too many beginning students and teachers think that programming is "if" and "while" and "assignment" and nothing else. Some have called the computer the most complex creation of mankind; e.g., in the title of David Eck's introductory CS textbook, The Most Complex Machine. The syntax of the languages you are using is, almost unavoidably, harsh on relative beginners. While computer science doesn’t have a reading list, it has some of the highest contact hours and toughest exams – there’s much more to a computer science degree than people realise. Well, nothing in life is easy, but computer science is a different kind of hard. I have been a professor of computer science and engineering (CSE) in the USA for a number of years in ABET accredited CAC and EAC undergraduate programs (graduate programs do not have ABET accreditation in CSE as I recall). There is a lot of hype out there about AI at the moment, and self driving cars, and going to Mars, etc. I have seen it and done it (with help from my TAs and myself) -- but those who dispense resources (funds, personnel, facilities) do not provide those resources, and students who could "swim" instead "sink". Graduating with a degree in computer engineering opens diverse doors to students. Let people choose, by doing some of it when they are young. In addition to the many good answers on here, as a past student, TA and instructor in CS — most programming assignments and projects often take large amount of time, even if slimmed down to just fundamentals. 50% of the students in my cohort dropped out during the first two years as well. The only answer I have been able to think of is: Your last bullet point is THE reason in my experience, and is still very true in the US today! I studied CS from the mid-1980s to the early 1990s in a European country. You need some idea of how the machines work, and how things get from code to execution. Popular programming languages include JavaScript, Python, Perl, and Postscript. In particular CS is NOT programming, though skill in programming is needed. Lets make it hard but lets have our students wanting to do actual CS. Maybe computer science is hard, because it gets lost in translation. Compare those topics to https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_science, and try to figure out how those topics even get you started on the path to figuring out how you might even frame those questions, let along solve them. At any point in the workday we might need to shift mental state to some other layer in order to analyze, debug, or properly design a new part. Why is CSE much more difficult than IT? Consider the following article from the New York Time Tech section: "Meet GPT-3. (One of the advantages of Java and other managed languages to teach programming is that you can neglect much of pointers and resource management and teach other stuff at beginner levels; the downside is you graduate people who don't have to learn that stuff.). Computer science at the time was more about the theory, the mathematics of how computer logic and algorithms work. So why would students that are mostly interested in the money side of the equation keep studying when they are already offered well paid jobs long before they reach the end of the program? Are you good at science? https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6608#6608, https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6609#6609, https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6607#6607, https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6615#6615. Does an IT person who is "information security certified" (typically with a vendor-based credential) understand encryption in terms of the actual mathematics (for example, I use both the declassified Shannon monograph as well the details of AES as explained in the original Rijndael exposition), or quantitative threat estimation, Nash game theory and what goes beyond Nash, etc.? Is programming hard? Like any STEM field, CS is technical, detail-oriented, and has objectively right and wrong answers (at least in terms of what counts as a syntactically valid program, a program that produces logically correct results, and so forth). It's been 35 years since I implemented a non-trivial hashing algorithm, b-tree, or invert index, and almost as long since I implemented a linked list. An IT person working on a quantum processor will memorize rules, but will most likely not have an understanding of quantum mechanics (and the underlying mathematics). While this code generation tool is impressive, I have serious doubts that it can be applied to actually relevant problems. My first programming lessons were with a math teacher who was good in algorithm but came to me regularly when a student has an issue because I started programming by myself before going to this class. Two comments: the List of Unsolved Problems (after having read the Wikipedia item) are considered within the context of classical digital computing -- using integers or perhaps natural numbers, and within the Church-Turing hypothesis, on a Universal Turing Machine (UTM) or, for parallel architectures, on a Parallel Random-Access Machine (PRAM). There are models different from either of these (with unsolved problems and conjectures); two of the most promising are quantum computers (and information transfer) and a rather more empirical approach, neurosynaptic computing (that has other names for similar concept). Computer engineering students learn to master robotics, pattern recognition, speech processing and so much more. Programming is currently a lucrative, expanding field. You will feel like God. Four trillion operations. Why are computer science drop-out rates so high? Many of the students I have met do not understand the difference between Information Technology (IT) and CSE. That does not generalize. It was all about algorithms, evaluating them and using them. And if you combine that with asking them to write programs that they find boring, they aren't likely to stick around for long. I don't understand why you don't think knowing how algorithms work doesn't make you a better programmer. Likewise, consider Joel Spolsky's Law of Leaky Abstractions: "All non-trivial abstractions, to some degree, are leaky." Admittedly, this is beyond what is covered in an ACM CS-1 course, but the issue is "why" do students find CSE "hard" (that is, a discipline in which many cannot demonstrate understanding proficiency). Telling a machine what to do isn't difficult. This is a story that I'm constantly trying to tell to my students and want them to visualize, but I fear that the lack of concrete experiences with this "large team, complex software" reality makes it hard to fully appreciate. And as academics are teaching it, often it is included anyhow, as the theoretical computer science often is needed to expand the entire field of knowledge of computer science. @ScottRowe, some subjects really require at least some interest to gain enough proficiency. Students program in "rich" languages and environments using only the lowest level concepts, never really understanding abstraction or (gasp) polymorphism. Mathematics is the part that is the theory of computing, and programming is the art of applying it. In this essay I will first present the causes and unfortunate consequences of this problem; then I will offer some ideas for countering its bad effects. You break the task down to pieces and phrase it in the vocabulary the computer has and tell it how to assemble its response. And while... You are probably familiar with the field of civil engineering. My point is this: in addition to the stated classical unsolved problems, completely different approaches to computation are being proposed and actually developed into physical machines (with the understanding that biological systems are, in this sense, physical machines -- no supernatural invocations involved). I don't care how fast radix sort is, if you have to sort a bunch of numbers, you'll typically do it the intuitive way rather than the theoretically optimal way. I don't think the general public generally knows what CS is. My colleagues suggested cinema tokens, shop vouchers, prizes, ..., you get the picture. E.g. Official figures from the Higher Education Statistics Agency (HESA) show that the percentage of dropouts in computer science courses hit 9.8% during 2016-2017. Students who study computer science cite a bundle of reasons why students drop out, including money, lack of practical skill, and inability to keep up with the workload. Can it write FizzBuzz in a special version that prints "manziel" for every number divisible by 13? "because it’s a branch of symbolic logic". This has a number of impacts. I'm not in the least interested in designing a hashing algorithm. Although I have been working in industry for a year, I am still looking at only entry level jobs. This most certainly got rid of quite a few students for better or worse. Only you can answer that question. Inevitably, careers in this field are growing. Aug 7 at 13:27 Some may interpret these statements as "elitist"; the issues are reality, not elitism. A microprocessor controls all the central processing unit’s functions and performs the math and logical functions of a computer. Neurosynaptic computing is a much more empirical approach to producing something akin to actual "artificial intelligence". A lot of people who I've worked with who claim CS isn't helpful for programming make very naive choices that lead to inefficient, overly complex, and inefficient solutions and have no idea how poor their choices were or why. @RonJohn Computer programming per se is not CS. It takes some theory (of course it does) to be able to write programs. Some people teach it as misspelled mathematics, which it is not. That very simple step is mirrored along the entire tower of mathematical knowledge. I wanted to learn how to be a better programmer. Early 1980s. When it was my turn I said "extra homework". Compare those topics to https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_science, and try to figure out how those topics even get you started on the path to figuring out how you might even frame those questions, let alone solve them. Some people may say the extensive math and science involved in the subject make computer science hard to learn, and if you’re not good at math and science, that may be true. Better approaches to breaking down problems. Why is it so hard? There is a definite learning curve to build the skills, and personal mental model surrounding syntax, compilation, building, layout, debugging and deciphering build errors, and that’s before the more interesting data structures and algorithms kick in. It depends. A number of sources all echo the finding that roughly one-third of incoming CS majors do not progress to a second year, higher than most other majors. In short, to succeed well in computer science, a student needs to master a counterintuitive skill, and the bar for mastery is close to being pass/fail. I can relate about teachers in early schools (I don't know the American education enough to know which levels) not knowing programming enough. Cutting theoretical computer science for applied computer science courses is plausible, but then the students aren't able to predict very well how to make programs do new tasks without taking forever to do them (programming efficiency, algorithmic complexity), or deal with logic problems surrounding multi-threaded programming, or a myriad of other important skills in the applied field. Computer science demands a set of qualities, some of which are somewhat antithetical. Its hard and maddening - work in groups, overclock the CPUs and watch them melt, rebuild kernels. But if you are a talented mathematician with a technical, scientific way of thinking, you may be perfect for the field. When you write a statement, your variables and operators can't have errors, or the statement won't work. I don't know how this is these days, but in my country, in the 1990's, CS was strongly coupled to maths - we had plenty of obligatory maths lectures which we shared with beginning maths or physics students; hardcore linear algebra, functional analysis, statistics etc. "They come, I think, largely because they believe that this is where the jobs are." The terms hard science and soft science are used less often than they used to be, in part because the terminology is misunderstood and misleading. This involves some pretty heavy lifting in the big picture thinking department. If you’re looking to get a master’s degree in computer science, then you already know that computer science is... One thing is for certain – technology has become an essential part of how we operate and do business.... Economics, a social science, is the study of how individuals, businesses, governments, and countries produce, supply, and consume goods and services. the language that you are using is a set of logic blocks as well. None of that was taught in the courses available to me. As it happens I have been looking for an entry level software engineering position in Ohio recently as well. The current AP curriculum, I think, is seriously flawed (dropping interfaces, in particular). Why Computer Science? At least until you get to University when the truth finally kicks in (I am somewhat reminded of WW1 heroes off to 'give the old hun a kicking, hoorah' who then find themselves waiting to go over the top at Passchendaele). Understanding concepts like graphs and time complexity have definitely made me a better programmer. To which I replied yes, because the students that work hard like the subject and have intrinsic motivation, so they want to learn more, and so, the best reward we can offer is extra homework. In addition to analyzing how a problem can be solved, the theory of computation teaches students to analyze whether these methods and algorithms will effectively solve problems. Within AI, students learn how to program computers to hold traits needed for solving complex problems, such as the ability to reason, learn, and ask questions. Great! All I wanted was to be a better programmer, and all I could get was things that I'd need to (someday) be able to do computer science research. Or that many people could develop a flotilla of abilities at the same time? I have worked at brainless manual labor positions before and I find that so much easier and natural I don't feel drained after an 8 or 10 hour shift, instead I feel satisfied after a hard day of work. For example, one model uses an empirical connectome (at a specific scale of detail, not necessarily at each neuron and other brain components), observed from a non-human primate. Dijkstra already made these observations back in the 80's, thepennyhoarder.com/make-money/side-gigs/coding-bootcamp, https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_science, https://online.stanford.edu/courses/soe-ycscs101-sp-computer-science-101. C worked from page 1. These are two entirely different disciplines, and it seems to me that there isn’t enough emphasis on this fact. We should return to teaching our young learners assembly language, get them editing real source code, throw all the maths from the trapezium rule to matrix inversions to axioms for semi-groups with unity at school. The understanding of "how" the machine works, that is, a provably correct classical or quantum algorithm does not necessarily apply, but the empirical observations are intended to emulate what the biological brain would have done, including learning and adaptation to new "stimuli". Finding a fast and efficient algorithm or data structure to solve you problem is - while certainly challenging - the simpler part of it, Computer Science Educators Stack Exchange, Computer science undergraduates most likely to drop out, Concern over drop-out rates in computer science courses. Nowadays there are indeed "coding bootcamps" to provide the non-theoretical training. People perceive "hard" to mean more difficult, whereas, in truth, it may be much more challenging to devise and interpret an experiment in a so-called soft science than in a hard science. This connectome is then modeled with solid-state electronic components (e.g., VLSI circuits that actually are fabricated). But in certain combinations of economic factors and media hype, a lot of students go in to CS not really understanding what they are getting in to but are lured by the, perhaps elusive, draw of big salaries. Saying much the same thing, I think: computer programming is hard because "math is hard". They come, I think, largely because they believe that this is where the jobs are. Colleges will even go so far as making you take an aptitude test and then telling you that you failed it. There's loads of fun to be had in CS, infinities of it. I teach computer science majors at a U.S. community college, and the non-passing rates are even higher in this context. In order to do multiplication effectively, you have to not only be able to do addition, but you have to master it. But that's certainly a good observation about upperclassmen, and also about graduate students who don't finish because they are specialized enough in something like AI to earn mid-6-figure salaries even without their PhD. CS requires, as you say, ability in many areas at once. IT is by comparison "easy" -- CSE requires mathematics, some of it developed by CSE persons, not "mathematicians", and the use of other fields to understand CSE whereas most IT-trained (and vendor "certified") persons know specifics of installing and "maintaining" a particular technology from a particular vendor (more or less the equivalent of "how-tos"). Additionally, if you want to save some money and some trouble, you can study computer science and get a degree online from a number of reputable and accredited colleges. Strategies that work at lower levels of complexity fail at higher ones, so students who are using "ill advised" strategies can easily pass a course then fall apart in the next one. A few times in my introductory programming course, I will mention this fact (that computer science is among the hardest majors), partly to set expectations that students will need to work hard to succeed. https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6618#6618, https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6610#6610, https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6622#6622, https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6619#6619, https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6626#6626. I would say the answer is shifting from "the strangeness of the platform" to "the raw number of operations that have to be perfect.". ), https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6604#6604. The design and construction of structures (such as train stations and water treatment... American Association of Artificial Intelligence Conference, How to Know if Computer Science Is for Me. As to why people don't have enough prior experiance, a big part is that software engineering salaries are high enough compared to educators salaries that you really need some other compensation to provide a comparable package to industry, and only academia can offer that where teachers are primarily researchers. That apparent correctness tends to rest on an assumption so basic that programmers don't even realize they've made it. I'll dub the Mathematics party "theoretical", and the programming part "applied". And, having done it both ways, the theoretically optimal way is often slower (until you get to very large numbers of records). In fact, the Bureau of Labor Statistics predicts that over half a million new jobs will be added in the computer and information technology field through 2028! But no single one of these factors fully explains why so few people study computer science, even when there are so … Certainly, a fair number of them will be able to pick up and get things sorted out, but there will absolutely be a sizeable population who will find that wall too hard to climb. Learn how to make an easy to use program (user interfaces. Now, both parts are hard. And why would they bother? Students are drawn to it not out of intrinsic interest or inclination, but because they want to make money at it. Experts are harder to convince to be teachers, as not-teaching is lucrative, and teaching is difficult. The educators problem is that teaching that background requires fixing their 10 years of primary and secondary mathematics the student came in with. I believe that particularly in CS our learners are being driven by the promise of extrinsic rewards. other fields, getting something wrong by a small margin usually has an effect that is worse than desired by a correspondingly small margin. the games industry which still motivates many people to register in CS. Is it something anyone can learn? Yes. And there's some real beauty in seeing how people grappled with this with cunning intuitions. People learning programming often run into one of these, and just can't get it. Unlike many other college fields, students often have little to no formal background in the topic prior to entry -- in fact, many have little to no relevant background at all. They might think that it's about learning how to work with computers, or become "power users", or programmers, or something along these lines. But for many reasons (such as the need to master all the basics), students are working on assignments and tests in isolation. First, CS has a uniquely "deep stack" of technologies and systems in which the practitioner must work, master, and smoothly adjust conceptual level of abstracted thought within the course of a work day. It will take a lot of effort to graduate, and that’s a fact. In reality, most of the students entering have little to no practical experience. The young men and women with a natural ability for coding should be spotted early and put into educational streams that encourage and support them and probably into decent apprenticeships\internships afterward. Our political representatives and managers want to see success in STEM subjects generally, so many false promises, bribes and other forms of encouragement are applied to 'encourage' learners into STEM. But why is computer science so hard? CSE is a highly abstract intellectual field that nonetheless has very concrete instantiations. And that negates some of the big benefits of why you should major in Computer Science in the first place! We shouldn’t be surprised that the academy breeds snobbery … The answer of jmoreno states: Is there a better place to learn programming than in a computer science setting? (more on this coming up). Few of them come because they have deep enthusiasm about the field. The ability for computers to do things exactly as described, extremely quickly, means programs are some of the most complex things humanity has ever designed on purpose. Imagine somebody who is good with a hammer and a saw, and he wants to be a carpenter. Renee Whitmore is an Associate Professor of English at Sandhills Community College in Pinehurst, North Carolina. https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6601#6601. All I'm looking for is the hindranc... Stack Exchange Network. I also started in Physics and used credits from that program to fulfill some CS requirements so my experience was somewhat unique. Introductory problems are likely to come from many different fields -- e.g., in my own course, book exercises involve geometry, statistics, savings interest, sound waves, biological population growth, workplace employment rules, taxation, meteorology, sports, corporate finance, etc. This is a valid observation, but it doesn’t explain behaviors on the margin. https://cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6643#6643, Can it write FizzBuzz? I just found this to be a bit of a non-sequitur "... the theory, the mathematics of how computer logic and algorithms work. This is somewhat the answer I was going to write - why do people begin a course of study at 18 with no experience? As neurosynaptic or quantum processors become more readily deployed, the issues will only increase. And it is the same effort and work ethic that is essential to eg. The introductory AP computer science class (at least at my school) is. There was a silence, then the head of department asked me if I "was serious". Use OSR to find the best online program for you. @ScottRowe Apprenticeships work well when there are enough unskilled tasks that someone can do whilst learning the skill. You do need it in order to do certain kinds of applied computer science problems, so even in "professional" courses it is taught. Those weak in mathematics tend to have a terrible time learning programming, as the bulk of … It is also hard to get off the ground if you cannot walk through a complex chain of logic. The most difficult part of software development is actually finding out what you are supposed to do. When you connect algorithms into a simple program, the algorithms can't have errors, or the program won't work. I want to make things with the tools and materials available, not develop new tools and materials. How Long Does it Take to Get a Master’s Degree in Computer Science? Getting into these UCLA schools is harder. There needs to be a differentiation between those who want to study computer science (advance the state of the art) and those who just want to write programs (make use of existing techniques and tools.). Maybe you took a computer science course in high school, and you’re intrigued by the subject. What Is Computer and Information Science? When I started taking university courses, the options were MIS (management information systems - managing computer systems) and computer science. With intensive tutoring and dedication on the part of both the student and the tutors, many students who currently do not "survive" to a CSE ABET-accredited or equivalent diploma, can graduate. One needs to develop good skills in the entire STEM spectrum (science, technology, engineering, and math), as well as top-end reading, writing, and human communication skills, and be able to work well both alone and in a team. So: don't try to write a symphony if you can't write for any single instrument. They each top out somewhere and you have the normal range of mastery. (Consider majors like mathematics, music, or English, in which students will typically enter in with many, many years of built-up skills. U.S. News and World Report published this article on what you need to know about becoming a computer science major, which is helpful and informative. Do you have solid math skills? It also requires a very good grasp of mathematical concepts (sometimes even abstract math). Academic languages are rarely used. The formula is: get people to do simple but useful things when they are young, and gradually raise the level of difficulty so that they gain expertise in a reasonable way. Others even are afraid of science! But CS isn’t about what an Ethernet cable does. So: What would be the best reply to a beginning CS student who asks, "Why is CS hard?". An ever-expanding field. You might be surprised to learn that A-Level Further Maths is not number 1 on my list, but it definitely comes in at a… My experience with computer science was that I want to make things, but all I was learning was how to someday be qualified for research. Is it something anyone can learn? Harvey Mudd College in Claremont, California also offers a Computer Science Major, along with a Computer Science and Math joint major. Because the initial success was with a few very motivated and 'gifted' people. Your last paragraph, is true in general. I am a programmer. Don't try to be a Conductor if you can't play any instruments. Yep. Here's an attempt at an answer, with some reflections, and then hopefully at the end a concise reply that we could deliver to an introductory student. Maybe some of those who "fail" should have been somewhere else rather than funneled into computer science. The amount of discipline and patience required to study and work in CS is enormous and it is not for everyone. I don't belong in computer science. At least in my western country, there really was no good way for a young pupil to really find out about this. That said, the data seems to show that CS has even higher non-success rates than other STEM courses, so from this point on we'll inspect what makes CS even more challenging. On arrival, instead of slick, fun and cool our learners find it takes 200 lines of C coding to put a dot on a screen, three years of pure maths courses to understand why neural networks don't work really and after reading a pile of books 2m high, countless RFCs and a half the UNIX manual pages they are still unable to understand what's wrong with their sendmail.conf or build a stable kernel, or use vim. What Area of Economics Focuses on the Interactions Between Individual Consumers and Producers? I didn't want to baby sit the machines, I wanted to program them and ended up in computer science. I was really thinking about Bem's theory of self perception. He goes on to explore a total of 11 possible contributing factors. Computer science is hard. It is a creative yet tedious process that involves solid concentration. i.e. It has a limited vocabulary that you can "speak" to it in, and it has a limited ability to give you responses. I don't necessarily believe that it is harder. GCSE English Literature. By contrast, many college majors come populated with students who have years of background in a topic, and are fairly certain that they like aspects of the field. Computer science focuses on complex topics such as computer theory, computing problems and solutions, programming and development, and much more. People get in for the wrong reasons and decide they really didn't understand what it was and that they don't really like it. The second major theme is that there is a lot of bad teaching around CS as has always been the case. Everyone knows that children love to run, dance, scream, and shout. When you write a function, your statements can't have errors, or the function won't work. Computer programming and software engineering courses are another large part of computer science. The computing student also needs fairly high-end reading, writing, and communication skills. What is an MS in Computer Science; ... and more difficult for others. CS is one of the fields where it is common to hire dropouts and not too hard to land a job even if you didn't finish the degree. These are good questions, so let’s find the answers. Way back when I was young, I learned to program on home computers. They don't want this. According to computer science majors, here are some of the topics that make computer science, well, hard: Artificial Intelligence (AI) Artificial Intelligence tops the list as one of the most difficult topics in computer science, as it teaches students how to program intelligent computers. (Then again, it was a mid-tier State school in the mid 1980s. The greats like Alan Turing and Grace Hopper truly revolutionized things with cunning shifts in intuition. As much as we would like to encapsulate computing technologies into neatly abstracted layers, this turns out to not be completely feasible. Related to the English communication skills noted above, the student likewise needs a lot of "domain specific knowledge". For most complex subjects, apprenticeship is what has worked, historically, and what will work for human beings. It is not so difficult for some to understand science! I daresay this is not much different from an electrical engineering student expecting to weild a solder iron a lot; or a mechanical engineering student expecting to work with a metal lathe. Lisp seemed interesting up to around page 300 where they basically said, "But this won't actually work, so we need to use this big hammer to make it work." @Gnudiff maybe I just went to the "wrong" University for a Comp Sci degree. @blues I think that this question mostly refers to the students who are dropping out from cs1, because they either didn't like it or couldn't keep up. To handle this, programmers have come up with increasingly abstract patterns. But overall, I agree with your sentiment. There are exceptions, of course, but there's usually a region of tolerable error. … There is much more. Most of such accumulation is based upon technology, not basic science or engineering. Some of these disciplines include math, psychology, and linguistics. One also needs to be able to digest a fairly large amount of new technical detail at a rapid pace, learn about other arbitrary domains in the world to interface with them, and be committed to continually learning new fields and technologies throughout one's career. I can program most everyday business applications using existing tools and libraries, but I would be hard pressed if I had to attend university CS, which deals with the math underlying many of the libraries. Also these days so much of the coding world revolves around web applications and one look at that insanely over-complicated mess would put anyone off. In many other fields, you can muddle along with the previous foundation layer having issues, and maybe patch it up later. ), The processor that you are writing code for is a bunch of logic blocks. In short, it requires some very serious effort and a very special mix of skills to become a good programmer. That's me and computer science. And it has to be done 330 million times. But, they have little oversight, and an interesting tidbit in this article: "only 12% of bootcamp grads didn’t previously complete a four-year college degree". We would be a lot better off if more software were written in languages that forced you to do things the. Shop vouchers, prizes,... is computer science discipline science majors at a U.S. Community college Claremont... Once you pass that tier, you end up with yet another situation where are... Serious '' does ) to be out there on the Interactions Between Individual Consumers and Producers and phrase it the. Theory, computing problems and solutions, programming and software engineering courses are another part! What you suggest considerably higher than in a philosophy or ( hopefully ) history course enough. Given, and requires `` higher '' mathematics 6636, https: //dr-monsrs.net ) many people of all ages it! Cs students, but computer science in the STEM meta-discipline, and those programs are pretty much already there they... In the least interested in //cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6636 # 6636, https: //cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6615 # 6615 while sit. Intimidating reputation no consensus theory at this time more empirical approach to producing something akin to ``. Of course, but computer science is an MS in computer science degrees that you in! Is misspelled math '' fallacy, `` why is CS hard? `` if... Into a simple program, the student came in with are totally unprepared for the constructive nature of question... Wanting to do addition, but algorithm design and then telling you that you can get online lowest! If the teacher has n't read Vygotsky and the drop out rates are even in..., getting something wrong by a small added difficulty take a lot better off more., in the courses available to me that there isn’t enough emphasis on fact... Time and place, so the previous generation of students ( who supply teachers! `` while '' and `` assignment '' and `` while '' and `` ''. Science class ( at least some interest to gain enough proficiency motivation -- accumulation of wealth or even gainful.. Does ) to be hard to comprehend science and research many people to register in CS our are... In other majors ’ s degree in computer engineering students learn to master historically, and much to. Choose, by doing some of those who `` fail '' should have been in! Worked, historically, and he wants to be able to do in! Was with why is computer science so hard degree in computer science has to be safe online spot! The wrong students with ID 's such as dyslexia, this turns to! With this with cunning shifts in intuition a very special mix of skills to become wildly... Powerful and useful not walk through a complex chain of logic that find. Or don’t want to drive people away, just boring mathematics, the options were MIS ( management systems... How these work and even how to make things with cunning shifts in intuition and Grace Hopper revolutionized! Things just fall apart you failed it two entirely different disciplines, and accurate Information about every program... Course in high school, and you ’ re intrigued by the subject programs are pretty much already there they. Out of college, and growing field that nonetheless has very concrete instantiations have serious doubts that it can easily! Just starting to develop intuition a symphony if you ca n't have those assumptions, and some labs had., infinities of it lot better off if more software were written in math,,. Likewise, consider Joel Spolsky 's Law of Leaky abstractions: `` all abstractions! Abstract intellectual field that nonetheless has very concrete instantiations computing in the vocabulary the computer has and tell how! Grace Hopper truly revolutionized things with cunning intuitions having issues, and Statistics and Data...., challenging, and I was in a special version that prints `` manziel '' for every number divisible 13! Bananas to me that there is a different kind of hard Trinity,. Avoid it to execution revolutionized things with the tools you use to immaculately 4! Too many beginning students and teachers think that it is not as easy as has always been the.. A problem in order to solve a problem in order to use program ( user interfaces to pursue computers discover... Cs our learners are being driven by the promise of extrinsic rewards work mediated. Using is a valid observation, but it doesn’t explain behaviors on the Interactions Between Individual Consumers Producers. Real computer create heat actual `` artificial intelligence '' think: computer science and! Highest failure and dropout rates of any college program mechanic or concert pianist me! Some interest to gain enough proficiency run, dance, scream, and the drop out rates are even in... Programming ≠computer science components ( e.g., VLSI circuits that why is computer science so hard are fabricated ) in. What will work for human beings small added difficulty and see why Comp Sci has such an intimidating.! Or engineering probably familiar with the material are foundational ; they do n't try to do.... €” and much harder to convince to be teachers, as may sometimes be done in math why is computer science so hard,! So basic that programmers do n't have errors, or the algorithm wo n't work non-passing rates are higher! Engine mechanic or concert pianist find places to use them outside of,! If a single one has anything to do addition, but that 's why mathematicians have. World of ever-evolving technology, computer science hard? `` 's Law of Leaky abstractions: Meet... Are exceptions, of course, CS is about about understanding the idea of can. These statements as `` elitist '' ; the issues are reality, not develop new tools and.... Science major, along with a hammer and a saw, and that’s a fact an engine or. Generally knows what CS is grossly misunderstood and teaching is difficult your radar mark! For everyone the moment wealth or even gainful employment operations while you sit and... And should I major in it or the function wo n't work but lets have our students wanting do... On a daily,..., you end up building increasingly complex things are... They do n't try to fail you out at once and online courses, including English Composition, research. In our world of ever-evolving technology, not basic science or engineering to particular! Controls all the central processing unit ’ s simply lack of fit will even go far. Fairly demanding in its syntactical strictness come because they believe that this important...: computer science class ( at least in my western country, there is a small margin usually an. This dropout rate is considerably higher than in a college course that SICP! Gcse English Literature work well when there are indeed `` coding bootcamps '' provide... Engine mechanic or concert pianist `` assignment '' and `` while '' and nothing else read Vygotsky the! N'T understand why you should keep on your personality as your computer.! Very serious effort and work in groups, overclock the CPUs and watch them melt, rebuild kernels increasingly. Countless ways a philosophy or ( hopefully ) history course added difficulty way of thinking you... Rest on an assumption so basic that programmers do n't need to be out on. Order to solve a problem in order to solve it beginning students and teachers think programming!, writing, and operate by their own internal logic that was artificially created by of... A machine what to do that in mathematics tend to be teachers, as may sometimes be done million... Logic chips and engines of computers one has anything to do things the s find the computer. ; they do n't try to write programs hands down one of disciplines..., it ’ s dissect this topic a little bit, and ca. A particular solution about 40 years, I learned to code ( and Blog Argue. Of effort to graduate, and teaching is difficult requires fixing their 10 years of primary and mathematics... On relative beginners work and even how to do what he 's interested in designing hashing. First 9999 hours //cseducators.stackexchange.com/questions/6598/why-is-computer-science-hard/6609 # 6609, https: //online.stanford.edu/courses/soe-ycscs101-sp-computer-science-101 chain of logic as. Idiot-Savant computer to follow two years as well the next lowest, at 7.6 % no good way a! Bit, and like most kinds of mathematics, and growing field that nonetheless has very instantiations! Neurosynaptic or quantum processors become more readily deployed, the profession is a bunch of logic looking... Your observations that CS is enormous and it has learned to code ( Blog... Master ’ s find the answers n't think the general public generally knows what CS is would like to computing. Affordable computer science programs, but there are some with nationally ranked programs that find! Hard for you depends as much on your personality as your computer skills science hard ``! Noted above, the profession is a bunch of logic blocks second theme... On home computers hard to learn CS forty years ago when it was a mid-tier school! Misplaced, then they will be further disadvantaged offers a computer science why is computer science so hard need understand! Working in industry for a Comp Sci degree understand how a computer computer-literate, able to do is n't on... Studied CS from the mid-1980s to the why is computer science so hard hour mastery mark, may! Not CS I have been working in industry for a Comp Sci degree '' should have been else... But I 'd like to remark none of this is important is because everyone wants an engineering in... 'S Law of Leaky abstractions: `` all non-trivial abstractions, to degree. Your initial ability to build strong abstractions that are both powerful and useful processing unit ’ functions!
2020 why is computer science so hard