[HN Gopher] Professor solves 240 computer science exam problems ... ___________________________________________________________________ Professor solves 240 computer science exam problems in 4 hours [video] Author : ryandougherty Score : 175 points Date : 2020-07-07 14:34 UTC (8 hours ago) (HTM) web link (www.youtube.com) (TXT) w3m dump (www.youtube.com) | [deleted] | kylebenzle wrote: | Not true, he skipped a few after giving up. Title should be, | Professor TRIES to solve 240 computer science exam problems. | mrspeaker wrote: | It goes up to Question 247. | elygre wrote: | Didn't watch far, but got to the point where he said there were | 247 questions. So maybe he skipped seven? | ianbooker wrote: | We had a quite strong formal / theoretical community in our cs | department, and besides really enjoying automaton theory in my | later studies, it kind of formed an understanding of the | practical side of researching algorithmic questions like "how to | fit multiple circles into one bigger circle to maximize their | combined diameter", as a reservoir of solutions you could later | abstract your less abstract cs problems to. | hawk_ wrote: | what is GATE computer science? | reubenmorais wrote: | https://en.wikipedia.org/wiki/Graduate_Aptitude_Test_in_Engi... | unixhero wrote: | Great effort by the professor and a very helpful thing that he | published it all to YouTube. But to me all the content was | garbled snafu. | coderthrow wrote: | I am impressed by this, however.. is this not a case of a Human | training to act like a computer, and then doing it really well? | There is something off about that part. | yters wrote: | I haven't checked the questions carefully, but in general | classifying the kind of language I believe is undecideable, so | the video could be showing a human doing something computers in | general cannot do. | jacb wrote: | It seems like a common misconception that humans have some | secret power to solve undecidable problems that computers | lack. But "this problem is undecidable in general" doesn't | mean "computers cannot solve small instances of the problem", | it means "there's no single algorithm that will correctly | solve all instances of this problem". Typically | undecidability results in language theory rely on embedding a | Turing machine in the language and going "Turing machines | halting is undecidable, therefore this is undecidable in | general". But this only tells you that _some_ problem | instances are undecidable (at least those that correspond to | Turing machine embeddings, and probably many more). Smaller | problems (that aren't big enough to be disguised Turing | machines) can still be decidable, and I suspect that any | problem simple enough to happen in an exam is decidable. | | Another example of this: theorem-proving is undecidable, yet | automated thoerem provers are definitely capable of solving | simple problems. The undecidability result means that any | given automated theorem provers isn't capable of proving the | truth/falsity of all statements. But this isn't some crazy | limitation - this is true of humans as well. You can solve | some math problems, but if someone showed up with an exabyte- | long statement about how a problem-solver-who-is-identical- | to-you-in-every-capability solves problems and asked you to | prove it, obviously you wouldn't be able to do that. | sabujp wrote: | You don't have to pass GATE in order to write a compiler, parser, | etc. In fact I'd venture to guess that many of the most famous | programmers of compilers and creators of new languages (e.g. | Larry Wall) couldn't pass the GATE exam. So don't feel bad if you | don't understand any of the math, I'd rather learn by programming | and then learn the math to explain it as I go along. | czbond wrote: | Agree. Math isn't as important, but things one doesn't fully | grasp 'just programming' are things like internal language | management (eg: garbage collection, speed difference in | different algos, pointer impacts [lang dependent], call outs to | other libraries, etc) | | "Just throw more EC2 units at it" (which is fine and I agree | with) - until a Node Js API handles 100 req/s in prod. | ksj2114 wrote: | This is an awesome video and I'd love to see more content like | this. I love watching experts explain how they think | ComputerGuru wrote: | I don't see how anyone can both solve _and_ explain their | solutions in such record time. I can't imagine there is much | explaining happening. | freyr wrote: | Why guess about the content here? It's freely available to | watch, so we don't need to speculate. | | He briefly explains his reasoning for each answer. | LockAndLol wrote: | My CS exams in Europe and Australia involved calculations, | proving stuff and applying knowledge to find the solution without | a list of possible answers. Multiple choice questions at this | level have always confused me and seemed like a really inept way | of testing understanding (if they test understanding at all). | | I was fully expecting to see an implementation of a red-black | tree, the use of software patterns, questions of why a certain | solution was picked or what algorithm to pick and why, creating a | circuit with logic gates that fulfill a certain function, etc. | | This all seems more like a test of memory. "Do you remember | exercise XXX on page YYY? Great, now pick the correct solution!". | Him saying "I remember the solution to this from one of my | earlier videos" even confirmed my bias against these things. | crote wrote: | Yeah, but that's much harder to grade. | | The main benefit of multiple-choice is that grading is instant. | There is no ambiguity, no half points. | | I completely agree that tests like this should not exist, but | sadly they do. Even in Europe bachelor's courses seem to be | slowly shifting towards this. | juskrey wrote: | Skimming through the pages on the video, it shows vividly how far | away academia is from real life problems. | bo1024 wrote: | I'm biased, but this perspective hits a pet peeve for me. These | are introductory theory of computation problems - of course | they aren't real-life problems! Would we make the same | complaint against a mathematics exam on group theory or real | analysis? Does a question like "prove that the kernel of a | homomorphism is a normal subgroup" show how far academia is | from real-life problems? But probably the people responsible | for inventing half the technology we use in daily life had to | solve that problem at some point and R&D departments would be | scared to hire them if they hadn't. | | Knowledge, especially in mathematics, is not a buffet; it's a | pyramid. Wecan't hope for society to build programming | languages like Haskell or Rust without teaching people the | knowledge base that rests on regular languages and pushdown | automata and so on. | | That said, this is definitely one of the most esoteric topics | in an undergrad CS curriculum and many universities are making | it optional, for theory-inclined students only. | yters wrote: | Probably a true statement for every theoretical academic field. | Yet, very mysteriously the obscure academic problems have | produced our great wealth of technology. I find this | fascinating. | juskrey wrote: | Except they haven't, mostly internalized (sometimes stolen) | and formalized achievements of free risk takers, who don't | bother writing textbooks. | yters wrote: | How did we get the atom bomb and the internet? | juskrey wrote: | Internet story is mostly a fairytale, specifically modern | stupidity of "fathers" shows this. They were just riding | on the wave of something that everyone were experimenting | with at that time. | | A-bomb was about pulling some people away from academia, | not building it by academia. | | "Built by academia" result is something we can see with | colliders. | UnFleshedOne wrote: | Next time we need a project the size of A-bomb, we might | also pull some people from academia and industry. Then | they will take some obscure area of research on | Prevalence of Memetics in Mating Habits of Extinct | Species of Dung Beetles done 50 years ago by an old fart | with tenure (and his 20 underpaid grad students) and | build a psychodelic control system that can quickly and | efficiently enslave and zombiefy large human populations. | | TLDR: you never know what you'll need in the future. The | only correct way is to research everything and we need a | system for that. | hogFeast wrote: | The perception of people in academia is that innovation | is the product of knowledge. That may have been true in | the US. It has been true pretty much nowhere else (not | for anything else, the real world is rarely so kind as to | present solutions on a plate). | | Korea, to name the best example, takes education | extremely seriously...and they have had severe difficulty | turning that into innovation (outside the chaebols, there | is basically no R&D occurring). | | I would also look at the exam being tested here. This is | India, a system that is notoriously reliant on rote | memorisation and turning out employees who crumble under | pressure and cannot operate without very specific | instructions. Again, this is not a coincidence. | | The source of innovation isn't knowledge by the | coincidence of knowledge, creativity, and opportunity. | Knowing something is quite different from being able to | understand and use it. Stuff like the atom bomb are | entrepreneurial triumphs by people who happened to be | academics. | | (The university I attended pioneered AI in the 60s, they | had the DoD battering down their door...they refused | every opportunity, and doubled down in the ivory tower. | Result? No serious innovation since the 60s, and most PHd | students going elsewhere to do "real work". This kind of | thing just doesn't happen in the US but is the most | common result outside of the US.) | yters wrote: | The problem in India may be more to do with the teaching | style (i.e. rote memorization does not produce | understanding) than the content being taught. | | And the right answer might be a combination of academics | and real world application, instead of an either/or | dichotomy. | mattkrause wrote: | The idea that academia is "risk-free" is frankly hilarious, | given the state of the academic job market and the pay | lines for most grants. | DavidVoid wrote: | That's not necessarily a bad thing. This is Computer _Science_ | and not Computer _Engineering_ after all. | zerr wrote: | I bet you haven't watched the first lecture video of SICP :) | jacquesm wrote: | Try the same for theoretical physics and the practical version | of it and compare how far away those are. CS has it easy in | comparison. At least you won't need to wait half a lifetime or | longer to see if your ideas pan out or not. | globular-toast wrote: | I guess this is a bit like the Someone Else's Problem | phenomenon. Nobody needs to know about compilers, operating | systems or analysis of algorithms because Somebody Else will | deal with those things. | crote wrote: | Are they really, though? | | I've followed a few courses on this, and they all focus on | the mathematical background of it. Sure, it's neat to be able | to prove some stuff about a toy language, but what does it | really teach you? | | "Regular expressions" in most programming languages are not | regular. A lot of programming languages aren't even context- | free. Heck, C++ templates are Turing complete! Does anyone | care? Not really. It works, and unless you intentionally | abuse it, it's not even that painful to use. | | Meanwhile in academia, the parser is automatically generated | from its EBNF definition using an algorithm proven to be | optimal, but when you try to compile anything containing | syntax errors it's either crash, infinite loop, or dump a | completely gibberish error message. | | I really get the feeling that a large part of academia is | busy inventing their own problems to solve. From my | experience, they are extremely bad at teaching how to solve | real problems. | mattkrause wrote: | One obvious lesson is that you shouldn't try to parse | arbitrary, non-trivial HTML with regular expressions. | qppo wrote: | Academic research and education is normally focused on | silo'd content and not holistic system design. To use your | example, a parser that gracefully handles bad input is a | completely different region of study than simple | parsing/grammars. It's outside the context. | | That does not mean that academia does not cover the topic, | you just probably wouldn't get to it in an undergraduate | course on (frankly trivial) compilers and parsers. If you | read into research on things like semantic fuzzing, the | slow death of batch compilers, and the various error | propagation mechanisms out there from PL researchers you'd | see those topics bring up lively academic discussions. | | Academia lags in many ways behind practical designs because | they aren't governed by deadlines and market realities, but | they lead in many others precisely because ideas aren't | constrained and they can focus on things that don't have | immediate value to markets. It's not wise to discount an | entire domain of expertise and culture of development just | because it exists in a different context than professional | engineering, particularly when we owe our entire industry | to the efforts of academics in the first place. | juskrey wrote: | The fact that writing compilers is an academic fetish does | not imply that compilers are written by academics. | saagarjha wrote: | Some are, some are not ;) | [deleted] | criddell wrote: | The first few problems are about regular languages which are | used when writing compilers and interpreters (among other | things). It might not be something that very many people need | in their daily work, but they are real life problems. | | I'm not sure, but I think GATE is a graduate school entrance | exam. | nickysielicki wrote: | I don't mean to toot my own horn too much here but I'm ecstatic | to see how much of my cramming and memorization in college seems | to have actually crystallized. I'm doing better than I thought I | would have on these as I follow along. | atum47 wrote: | I admit that I struggled with regular languages, I didn't fail | the class or anything, but as soon as I was done with it, never | looked back. | | I thought about doing a Turing machine in JavaScript but I never | actually did it. | | I wonder if people that retains all that information use it | everyday, that's why they retain it. Thing I don't use in real | life, like propositional logic, regular languages, automatas... I | can barely remember. It's kinda sad thought, but I fill I cannot | dedicate time and resources to keep this things fresh in my head. | bo1024 wrote: | Teaching a course on it regularly would really help keep it | fresh. | atum47 wrote: | I guess. I took a look at a test we have to take here in | Brazil, if I want to get a master's degree. no way I can | score high enough without studying for a few weeks. Calculus, | statics, propositional logic... | | When looking at the test I thought "man, I learned this in | college, I should know that" but my brain was like "forget | that, let's watch something funny on youtube" | gnusty_gnurc wrote: | this is my major complaint with interviewing "it's so easy, you | just have to study it" | kevmo314 wrote: | But despite not using it every day, you'd probably be able to | refresh on it pretty quickly. | | I've found that to be the real value for a lot of the courses I | took. Sure, I don't _actively_ remember the content or use it | daily, but occasionally something reminds me of something I | learned. Then, it 's a quick wiki page away from me | understanding and using it. Contrast that with some devs I've | worked with who haven't seen such things before and end up | reinventing a less elegant solution to the problem. | atum47 wrote: | on the interview for the job I have right now, they asked me | a lot about design patterns. I took a class on that and | implemented a lot of them in Java. Factory, Facade, Visitor, | Singleton... Never used them again after college, ask me | about it, I think I would be able to explain Factory and | Singleton from the top of my head, the rest... gone!!! | | I guess what I'm trying to say is that I would love to be | that guy with a lot of information in the head, that can | casually drop statics formulas and math concepts in a | conversation, but that's not the case for my. At least for a | lot of topics. | | Watching the videos made me think about that. Starting a live | video and answering 240 questions on several topics likes | it's no big deal. Haha | valuearb wrote: | You never use a Factory or Singleton? That's weird to me | cause I use them daily. But certainly Singletons can also | be problematic, especially if you do automated testing, | which I do not. | btilly wrote: | The use case for a Singleton is that you want to use a | global variable but don't want to admit that you are | using a global variable. | zelphirkalt wrote: | That's probably because of the use of different | paradigms. | | If you write typical so called OOP code all the time, | sure, you'll hit many instances of this or that pattern | coming in handy. If you write FP and only occasionally | strew in some OOP, well, many of the patterns fly out of | the window, as you do not really need then any longer, | because the building block is a function and you solve | most of the stuff using closures and higher order | functions. Also you usually do not mutate state, so that | is another load of patterns out of the window. | | Surely however, it is good to know the patterns | approximately well, so that you can quickly understand | the meaning of code, which makes use of them. If only all | people used design patterns always in a correct way, | instead of implementing them half-way correct and then | using them in a weird way ... Never hurts too look up the | details again, before introducing a pattern into the | code! | chopin wrote: | If I can, I never use the classical singleton pattern | because of testability. On the other hand I use one | single instance of a class if I can make use of a | dependency injection framework. I prefer that over static | classes which have the bad habit of getting in the way of | testing. | jimhefferon wrote: | Anyone know if these questions are freely available? | har33sh wrote: | https://gateoverflow.in/categories | | Questions are categorized based on the subjects, I used this | while preparing for GATE in 2015/2016. | jimhefferon wrote: | Thank you. I was unclear. I meant licensed under some Free | license. (I'm writing a _Theory of Computation_ book that is | Free and incorporating some of this material is attractive.) | | The web site for IIT Delhi didn't say, that I could find. | aks_tldr wrote: | From link in video description | https://pyq.ravindrababuravula.com/subject/ | jimhefferon wrote: | This page has a list of questions but not a license | statement. | mv4 wrote: | Seeing how the top 2 comments present completely opposing views, | now I just HAVE to watch this. | forgotpwd16 wrote: | That kinda answers the question many students have whether the | professors can solve the problems they put on exams in the | allocated time. | btilly wrote: | The usual rule of thumb is that if the professor can do the | test in 20 minutes, it is probably appropriate for an hour for | the kids. | | As a graduate student I found that to be true. | euler_angles wrote: | Seems like a lot of people have converged around that. | | I had a professor in my undergraduate mechanical engineering | classes who used a 4x rule for his exams -- he had to be able | to do it in 15 minutes, we had an hour. | kdtop wrote: | As a non-computer science person, I feel very dumb right now. :-( | racl101 wrote: | As a guy who graduated in comp sci I feel even dumber right | now. :( | | edit: cause I don't remember much of this stuff. | hinkley wrote: | There are two big reasons you have trouble recalling a piece | of information about your craft: | | You use it so much that it is down to intuition, or _you | never use it at all_. | | For example, my relationship to Orders of Complexity has been | reduced to sorting options in my head, and picking the first | one that is simple enough to keep working, and fast enough to | satisfy the current and estimated future scope of the problem | (which is also intuitive Capacity Planning). | | If you make me explain the decision it might sound like I | picked one at random. | jacquesm wrote: | Interesting how so many of these problems are probably hard for a | fraction of the people that want to pass this exam simply because | of the language in which they are expressed. | | For example, and I've noticed this pattern with some regularity: | large and complex expression in a paper or some other document. | Actual implementation: one or more for loops with an add or a | multiply in the body of the loop with some initialization. I get | it that mathematical notation is nice and compact and a quick way | to communicate an idea but pseudo code would quite often be more | clear. | | The same for a lot of the other terminology used in the | questions. How much of studying in order to pass an exam like | this is simply to cram the definition for a large number of | terms? | Kalium wrote: | That's an excellent question! | | It may be worth considering that the answer may not be as | significant as some might guess. GATE is an exam that tests if | you're ready for graduate school. Part of being ready for a | specialized field is being fluent in the vocabulary and | parlance used in that field, as this enables rapid learning and | smooths communication. That you can understand the ideas if | they are restated and re-expressed in a form more familiar to | you is not as helpful as it sounds if you cannot engage with | your peers without laborious translations. Have you ever tried | to discuss imperative programming with someone who only knows | functional programming, or the converse? | | Medical, legal, chemical, and other fields have evolved | conventions of specialized vocabulary for the same reasons. | They make it possible to have very detailed communications in | dense, rapid ways. | | Agian, you raise an excellent and wise point. There is | definitely a great deal of learning vocabulary in something | like this. | jacquesm wrote: | But do those fields have a similar split between the language | used by the theoretical and the practical side of things? | Kalium wrote: | Generally no, because they do not have large populations of | self-taught professional practitioners who never learned | theory. | | Least common denominator writing is very useful for a great | many things. It is wonderful and ideally suited for items | aimed at a popular audience. It just may not always be | ideal for efficient and precise technical communication. | bollu wrote: | I need to defend theory of computer science here, it seems. | Please note that this computer _science_ , not computer | _engineering_. The idea of automata, regular languages, turing | machines, and whatnot inform some of the most fundamental results | of computer _science_. | | At least in the fields where I work [compilers, formal | verification], all of the above theory is common parlance. | Everyone working on this stuff knows all of the above theory, | since it forms the bedrock of a large part of what we do and how | we think about the world. Knowing the complexity of the | algorithms we use, the languages we parse, issues of | decidability, etc. all crop up. That's because it's _science_ , | not _engineering_. GATE is meant as an entrance exam to pursue a | graduate degree in computer _science_. | | The fact that one does not need this during their day job is, | dare I say it, irrelevant. This feels to me like people | complaining that number theory is completely useless in the 19th | century; Indeed it was... until it wasn't, and we needed | cryptography. | | This stuff is useful _right now_ in a 'how to think about the | world' kind of way. Knowing the power differences between | automata, transducers, push down automata, and turing machines is | critical in disparate applications involving formal verification. | The difference in power of these different representations | impacts what we can "do" with them. The knowledge of this | hierarchy fundamentally shapes how I view the world. | jfkebwjsbx wrote: | Eeh... automata, languages (of all kinds, not just regular), | grammars, complexity, etc. are used in computer engineering all | the time. | | If a computer engineering degree does not have those, then it | is a pretty bad one. | dazhbog wrote: | Some people are more inclined to theoretical concepts, some | people are more practical. Both have an understanding on how | things work and/or an intuition, either by studying theoretical | concepts or via practical, hands on experience. | | My issue with this, and this is mostly my own personal opinion, | is not whether or not this subject is important and that we | need to defend it, but whether teaching it to students of that | level is the 'right' thing. | | Imagine a student that doesnt even know how to program yet, | doesn't know any algorithms, or higher level paradigms, heck | doesnt even know any computer architecture stuff yet, but has | to go through this block of theory and get examined on it.. Is | it the right move to motivate more people into this field? | foepys wrote: | If you want people to write mostly CRUD apps, sure. | | If you want people to develop programming languages, | algorithms, models etc., not really. Computer _Science_ is a | subfield of math and trying to "lure" people into the field | with flashy graphics and instant gratification will only | frustrate them when it gets to the basics. In theory you can | complete a Computer Science degree without ever programming a | physical computer. To complete my Masters in CS I only had to | take an introductionary course for Java, everything else | programming related was optional. | cycrutchfield wrote: | Yeah! And why come we gots to teach kid how to plus and minus | if theys just gonna be a plummer? | zelphirkalt wrote: | I think you are not addressing the point, which the GP | tried to make. It's not about teaching or not teaching, but | about the time when stuff is taught. Surely all these | things have their time and place. Perhaps there are gentler | introductions to some of these topics available? | Jtsummers wrote: | If you can't teach theoretical computer science to | undergraduate computer science students, you will have to | shift it to the graduate level. Which means you won't | really every have anyone earning a true masters in | computer science because they'll need so much grounding | to be able to complete the work they won't have time to | do anything novel. | sigstoat wrote: | > Both have an understanding on how things work and/or an | intuition, either by studying theoretical concepts or via | practical, hands on experience. | | hands on experience with regular expressions manages to fail | a lot of people with practical problems. | | https://stackoverflow.com/questions/1732348/regex-match- | open... | ookdatnog wrote: | There are schools which just teach you programming and | computer skills and do a good job at it. But companies will | still prefer candidates with computer science degrees, or | even outright require a CS degree, even for simple | programming jobs that really don't need one. The degree is | used as no more than an intelligence filter. This relegates | anyone who has a practically oriented degree to being | regarded as a second class programmer, the perception being | that you would have studied CS instead if you had the | ability. | | This completely sucks for practically inclined people who are | forced to trudge through a theoretical degree that doesn't | interest them, and where 90% of the material they will never | use, just to prove that they're smart enough. | | They then tend to blame academia for being out of touch, | ivory tower, etc. But academia is not at fault here, they are | teaching what they claim to teach: computer science. There | are good pratically minded degrees which prepare you just | fine for the average programming job, it's employers who | constantly signal that they value CS degrees more. | czbond wrote: | Agree. I loved the theoretical side of CompSci (automata, | programming language at the meta level, algorithms). | Practical was boring to me and I lost interest in the day to | day (7 hours of typing in an IDE!? joy). The problems of the | practical are a let down if you start theoretical. | | Can you handle 1M concurrent in Go to replace a java load | distributor? Sure! Crud apps..... oh brain hurts will never | finish. | bachmeier wrote: | > My issue with this, and this is mostly my own personal | opinion, is not whether or not this subject is important and | that we need to defend it, but whether teaching it to | students of that level is the 'right' thing. | | Teaching it to which students? If someone enrolls in a | computer science class, it's reasonable to teach them | computer science. If instead they want a mechanical | introduction to programming, CS probably isn't the right | material. | jacquesm wrote: | One of the best books I ever read was a book that implemented a | large number of algorithms in Pascal. This served me well both | when implementing things as well as when studying papers about | algorithms. The gap between theory and practice in computer | science is as small as it gets across many domains. | bsder wrote: | > The fact that one does not need this during their day job is, | dare I say it, irrelevant. | | I disagree for some of the fundamental things. | | Binary arithmetic is fundamental. The number of times I have | seen people using addition for logical-or and being confounded | by bugs astounds me. I don't expect you to be able to do stupid | bit tricks. However you must know how to use and,or,xor,not for | masking and you must understand what integer overflow/underflow | is. | | State machines are fundamental. I'll go so far as to say that | if you don't know how to do state machines, you don't really | know how to program. You simply have no framework for | understanding things like protocols, sequencing, concurrency, | etc. | | Data structures are fundamental. Sure, I can boil it down to | "75% of the time use a hash table; 25% of the time use a | vector; .001% of the time use something else". But you won't | know when you _shouldn 't_ use something. | | These are things I see all the time in programmers who I would | expect to know better. These also seem to be things that | "programming" course often slack on--they're hard to teach and | hard to learn. It requires work from both sides to communicate | the concepts. | bollu wrote: | I agree; My personal view is that it's fundamental to know | these ideas, just as one can't be a physicist without knowing | a decent chunk of mathematics. | | On the other hand, it seems that biology majors seem to "get | by" [as far as I can tell] without needing to learn much | math. Perhaps one can argue that it's better _if they learnt | more math_. But we can 't argue that the profession of being | a doctor seems to work without them knowing too much math. | | It's unclear to me, where in the extremely broad spectrum of | jobs known as "programmer" [writing code for the space | shuttle v/s bringing up an android app] where the need for | mathematics ends. So I hesitate to make blanket statements | about this. | | What I will never hesitate to defend is the utility of these | ideas of theoretical CS/mathematics for all computer | _scientists_ and scientist-adjacent folks. | vbtemp wrote: | A lot of people give theory a lot of crap. But that's normally | because they are not comfortable with the material. | | If you are comfortable with the material, you see applications | for it all over the place, and use it all the time. Sure, you | don't have to ground your system in some kind of formal model | (you can just code-til-it-works), but when you do I've found it | always ends up as a far simpler and more resilient product. | | It's kind of like people who complain that math is useless in | school and you'll never need it. Sure, if you never really | master it, you'll never be able to use it, so you'll make | things kinda work in ways that don't strictly require it, and | then conclude it's useless. Meanwhile, if you are familiar with | it, your prospects are broader, you may have to use it, and | you'll see how it was absolutely relevant and important to | know... | m463 wrote: | I think people are ready for things at certain times. | | I think history class was wasted on me in high school because | I was a kid and didn't have much life experience. But years | later with a better grasp on human nature I think I would | have had a better grasp. | | Another example is a foreign language class. I took it in | middle school, in high school and later in college. I learned | lots and lots of theory for many years. But only when I went | to another country did I learn I hadn't learned. | | I think theory needs to be combined with: experience and | practice. | chmod775 wrote: | I found it also helps with the hardest problem in software | development: naming things. | | Without knowledge of the theory it can be hard to come up | with a descriptive name for some data structure/algorithm you | created to solve your problem. | | With some knowledge of the theory you can more easily put a | name to what you have created, making it easier for other | people to understand and giving them something to Google if | they're unfamiliar. | m463 wrote: | But loop variables are always i, j and k. | ookdatnog wrote: | I empathise with people who go to college to study computer | science, mainly with the intent of eventually landing a well- | paid programming job, who are then frustrated when they have to | learn actual computer science topics instead of just learning | to program. | | But their anger is usually directed at the wrong institution. | The problem doesn't lie with academia teaching the wrong | things, it lies with companies requiring CS degrees for simple | programming jobs. They treat the theoretical computer science | material as nothing more than a raw intelligence/perseverance | filter. | learc83 wrote: | I use CS theory all the time in my professional career. | Automata, was the most useful class I took (the 2nd most | useful was Programming Language Concepts). | walty wrote: | What do you do professionally? How do you use automata | there? | m463 wrote: | We spent entirely too much time on O(this) and O(that) | | But that's the stuff that sort of stood up to the test of | time. | | Also really helpful was symbolic logic, which actually was | not a computer science course. | | The most interesting computer science topics to me in school | were the different computer languages -- but very few of them | survived the test of time. | vkou wrote: | In my bachelor's degree, I spent two weeks of one course, | tops on O(this) and O(that). | | I suppose I spent two courses studying computational | complexity, but reducing it to O(this) and O(that) does not | quite do it justice. | prostoalex wrote: | There's a bunch of commercial prep courses and coding | bootcamps that focus on applied programming. | | I wonder how long-term those skills are, reminds me of | companies teaching MCSE certification a few decades ago. | dazhbog wrote: | Watched a bit as I never came across these terms.. Staring at the | wikipedia page of "Regular language" and I still dont get what is | the purpose of this. | | Anyone, not in academia preferably, using this for practical | applications? What ARE the practical applications? | feanaro wrote: | You've probably heard of regex, also known as regular | expressions. Regex is at its core (before you add support for | advanced stuff like backreferences) a generic way of defining | an arbitrary regular language. Each regular expression | corresponds to a deterministic finite automaton (DFA) which | detects strings belonging to that language. | | EDIT, to add a bit more: | | The theory behind regular languages allows you to design a | regex system, to know its limitations and to be able to | determine whether a language can be matched by a regex or it | requires a more powerful model. | | It can definitely be useful to think in terms of such | theoretical constructs when approaching new problems, but it | takes some getting used to before it can become productive. For | this reason, I think the cost/benefit ratio of learning this | for someone completely new to it can vary. It's probably not | always worth it in all settings, but it certainly has practical | merit. | bo1024 wrote: | I don't think there are a lot of direct practical applications, | outside of regular expressions for string search as others have | mentioned. This is a building block to more advanced topics, | some of which have practical applications. Theory of designing | programming languages, and computational complexity theory. For | instance, these are like baby steps toward P vs NP. | dependenttypes wrote: | DFAs are used on all kind of things, including on protocol | design and implementation. | bo1024 wrote: | Another reason this subject is taught, besides the topics | themselves, is that it develops your logical reasoning, | abstraction, and visualization muscles. For example the first | problem, he has to argue that L concatenated with L-reversed | is regular, and he uses general properties of regular | languages to do it. Then to argue the prefix and suffix | parts, he has to utilize the automaton for L by making copies | of it and drawing transitions between them. A final example | is the famous and dreaded "pumping lemma" that gives practice | understanding alternating quantifiers: there exists a such | that for all b, .... | 120bits wrote: | GATE: (Graduate Aptitude Test in Engineering. Its an entrance | exam in India for Post-Graduate admissions. Considered to be one | of the toughest exams) | | This bring back memories. I was preparing for GATE in 2006 after | getting my bachelors. Actually started preparing from 2004. I was | so bad at Automata Theory and discreet maths. I never got | admitted to the prestigious IITs, but that preparation and | learning was helpful later in my career when I got admitted to MS | program in a US university. ___________________________________________________________________ (page generated 2020-07-07 23:00 UTC)