'I Hate Theory of Computer Science' - why? #shorts

preview_player
Показать описание
Thanks to the following supporters of the channel for helping support this video. If you want to contribute, links are below. Names are listed in alphabetical order by surname.
Platinum: Micah Wood
Silver: Dolev Abuhazira, Simone Glinz, Timmy Gy, Josh Hibschman, Morgan Jones, Patrik Keinonen, Travis Schnider, and Tao Su

Merch:

▶SEND ME THEORY QUESTIONS◀

▶ABOUT ME◀
I am a professor of Computer Science, and am passionate about CS theory. I have taught many courses at several different universities, including several sections of undergraduate and graduate theory-level classes.
Рекомендации по теме
Комментарии
Автор

I could write about this for days, but my initial rough thoughts on why I hated this are as follows:

The instructor was nonexistent. It seemed like she was safeguarding the bank of possible Theory questions, so we never were able to tell if we were doing something right. I feel like this is an issue across the subject. Aside from channels like yours, it's very hard to find fully worked out solutions to common Theory problems.

Alongside that, Peter Linz's Introductory book makes assumptions that entire segments of Theorems are "simple" or "easy to infer, " and he doesn't explain himself for those reasons. He also had a habit of *almost* explaining something, then saying "We will leave the remainder of this as an exercise." with no way to know if you're doing any step correctly!

Moving forward in the course felt impossible because the concepts build off the earlier ones that never felt as clearly explained as they should have. It snowballed into an awful mass of incorrectly self-taught theorems, gathered from watching various youtube videos on the subject and trying to piece everything together.

I don't need all the answers given to me, but I really would've appreciated if Linz or my instructor were able to include full examples of solved problems while showing each and every step, no matter how simple it may seem.

My biggest problem was the instructor, but I honestly feel like a lot of the way things are presented make the subject much harder than it needs to be. Channels like yours or Neso academy show that it is possible for this material to be split into a streamlined, easy to follow lesson plan, but from what I can see, none of the actual College courses have made an attempt to follow suit.

Kyser
Автор

Teaching is about explaining with examples or showing someone something from experience.
Most professors don't "teach", instead they solve. Putting aside how hard a topic can be, my perfect class must have the following:

1. Introduction to the topic. This is a background on what we are going to talk about, why it is important and where it sits for the upcoming content.
2.Vocabulary or display of basic elements. This is when the student should know what the symbols look like and what they represent.
3. Bare bones example based on the real world and something students can actually assimilate 100% and relate to.
4. Scale up the concept with another example. This time the example would be a real problem with its solution. Problem should be of the lowest level of difficulty. (Although it may seem PRETTY OBVIOUS, it's the first time the person on the other side has seen something like this. Give them a break)
5. Q/A Time to let the questions arrive. Force students to ask questions. Make a quote threshold if nobody asks anything. "I need you guys to ask at least 3 questions before I move on". It doesn't matter what the questions are it just forces people to think critically.
6. Repeat 4 and 5 until there's no time left.
7. As a homework leave a challenging problem (that takes more time). Something doable not impossible for someone that just got started.
8. Next class first 5 to 10 mins are to give the solution to the homework problem, see why or where ppl got stuck.(Take notice of this as this is what you as a professor will have to work on the next time you teach this lecture) Time to move on into something completely different.

Without a doubt, this approach seems like a lot of work for the instructor but it can be much more beneficial for students and more fun to do. A good professor will always have a plan for the class. If he or she doesn't then they are completely relying on their instincts and their ego is not letting them do a good job.
Professor Walter Lewin should be a good starting point for what a great quality lecture is like. Concise, fun, and gives you the info you need. The point of learning something is for giving it a use. Some people focus too much on what things are and not on what they ARE FOR.

ClaudioBOsorio
Автор

I also agree that the complexity at the very end is kinda hard, and may turn people away. Especially if the instructor is bad. I remember taking a Discrete Math class before, where we studied how The Travelling Salesman Problem is related to Graph Theory. I thought that was cool and somewhat difficult, but paid it no mind.

8 weeks later, at the end of the Theory of Computing class, the last exercise straight up said: Show that TSP is NP-Complete. Holy sh*t.

sirbedivere
Автор

I felt like my instructor expected us to make a lot of leaps and inferences that they found intuitive, but I certainly did not. I like that your videos focus on the motivation of why we are trying to solve what feel like very arbitrary and abstract proofs. You also don't "skip steps" which I felt my instructor often did. The feedback on our assigned proofs was also slow and lacking this semester. Reading several other comments, I just want to echo the sentiment that it would be nice to have more introduction to the topics. Maybe a background on what we will talk about, why it is important, and where it sits for the upcoming content. It was not until the end of the course that I started to see the connections to how these topics might help you determine if an algorithm is even possible. It seems obvious now, but this really would have helped me at the start of the course. I want to enjoy the material. It was just too much too fast this semester!

cole.maxwell
Автор

I just finished the class yesterday. Our school calls it formal languages of automata, and I used your videos a ton for it.
I loved the every part of the class that wasn’t proofs.

Building Dfa-nfa-pda-TM-NTM-DTM was a ton of fun and really challenging.

I really liked building the different languages such as, cfg, simple grammar, unrestricted grammar ext

Some things I didn’t like were but am aware you have videos on are.
-pumping lemma
-proving closures properties of languages like context sensitive grammar
-rice theorem
-completely theory of TMs
- and just general proofs
-I found it confusing PvNPvNPcomplete

austinschaaf
Автор

I just took my exam this Wednesday. After this course, I gotta say that I feel like I am in a love and hate relationship with CS theory. It made me think of things in a way that I have not thought before (idk if this makes sense). It certainly made me sit and spend weekends trying to understand certain things. I'm glad I took this class even if it was difficult. Although the crunch for time forced me to memorize some material, I certainly feel that I have learned something important that will retain to me in my future.

arthurlevitsky
Автор

Late to the party. Taking this class now and it has been rough. Pretty much all I hear is

Another thing is when my teacher goes over examples it always seems they are the easiest thing to understand in all of college then you have to do the homework or the tests and its leaps and bounds harder. An example would be the teacher saying make a fsm where only a is accepted then the test is like this language contains a, b, c |w|= mod3 or mod 5 is 0 and all strings accepted need to be a palindrome.

Had very high hopes for this class since I loved discrete math. Very disappointing.

TN-cxqi
Автор

TBH, the material itself isn't that bad (when explained for high schoolers to understand) The problem with my profs is using dumb ways to purposely make it harder and demotivating than necessary. Things like messing with the points system (ex: must answer every T/F questions in a section to get 1 full mark) or have questions with confusing grammar when it could have been a simple question. Seriously, it's a Theoretical Computer Science course, not an Stickler's English course.

Then there's the examples given in class. It's always a super simple example. And when it comes to solving a very difficult one, it's partially solved because "we can do the rest". What would be cool is to show us the base of simple ones, and then throw us a very hard one that's solvable using the same simple principles shown.

itspakman
Автор

Just finished the course and your videos were very helpful. Thank you for everything you are doing.

The main problem with mine was a lot of the answers were what we would call "hand wavy".

We just accepted them as truth because we were told so. Hardly a way to convince someone

AnthonyBrunson
Автор

I actually really liked the material itself and solving the proof questions, but I can't see how these are going to be relevant in my future career. Despite doing good in my theory course, I don't usually do well in other programming based courses so I don't know how this would help

caialyu
Автор

I finished my intro to theory class yesterday. The CFL pumping lemma proof you did on ww is not a CFL was on my exam. I watched that proof video before exam and it helped during the exam. Thank you very much!

ettiltony
Автор

Therapist: Nerdy Aaron Paulson doesn't exist, he can't hurt you

Nerdy Aaron Paulson:

נועםדוד-יד
Автор

I agree with most of the comments talking about not knowing how this will be used in my future. But also, while the course material was fairly interesting, I struggled with it much more than any math course I had to do (may very well be part of a minority here). But in my case, my main complaints are because there's way too much material to fit into 3-4 months

tempjohn
Автор

I recently took this course. I honestly found it pretty challenging to learn these concepts, which kind of made me more determined to learn more about it. I just found it strange that often times, when trying to learn other methods, alot of instructors/videos to include yours varied in different methods on approach, I specifically had this issue with the pumping lemma of regular languages and CFGs. I liked the course, it was just the most confusing course I've ever taken because of reasons above.

oscarjarquin-pablo
Автор

I enjoyed the course, it was interesting and I was able to grasp the concepts well, however my professor tested us with relatively easy problems so I feel like we did not go much in depth, because the course is known to be notoriously hard at my school yet my professor made it feel easy

uzpybol
Автор

As a pure math major (and a CS major) people thought that the course would be better for me than other (programming) courses. For me, the professor was super inconsistent. Most of the proofs were hand-wavy which ticked me off (the math side). If they provided more rigour and justifications, then it would've been better.
I believe that mathematics need to have both rigour and intuition. But my intro to theory course was not only structured badly, it gave only the intuition with barely any rigour.
An example of this is recursive program correctness. There was barely any structure to these proofs.
Iterative program correctness proofs were okay...
Structural induction was poorly taught.

ericryu
Автор

What a coincidence, just wrote my exam for theory of CS. First of all, i liked the class and enjoyed the concepts. Will I study it further? I don't think so. Mainly because I am not sure how this will help me with my career. For example, FSMs are cool and all, but when will I ever use these concepts? I wish someone would tell us where these concepts are applicable and so on. Second, we were taught proving code correctness. Again, I don't know if we still do this in the industry. I get that a test suite can never show that your code is 100% correct, this is where correctness proofs come into pay, but if we started proving every program after coding, it would take us forever to finish a full program! I also want to mention that my interests are not just becoming a software developer, I do enjoy theoretical CS and if this leads to better understanding of other sectors of CS I would happily take more classes.

TLDR; Fun class but I don't see applicability.

abdullahshahid
Автор

I like the material and it's interesting, even the proofs, but they were never explained well and my professor took an even more theoretical look into it. I understand all of the concepts covered and can explain them to someone, but all the exam questions involved proofs which I still have no idea how to tackle at all, especially since they tend to be even harder than most theoretical classes. (For example, when doing DFAs and NFAs, we had to construct an NFA which accepts some DFA language or vice versa and prove its correctness formally/mathematically, which wasn't explained that well besides "you just have to be good at proving stuff" and I could find no resources on this even online). This is also pretty much the same case for pumping lemma and undecidability proofs, and by P-NP proofs I was so burnt out I wasn't even able to follow that properly until I saw a good explanation of the topic a few weeks ago. So yeah, combination of bad instructor, very difficult questions with not enough explanation, easy to understand/explain and hard to prove stuff in this course. I can see the use for undecidability and P-NP but I cannot see why I would ever need to know the computer linguistics covered in DFAs, NFAs, their constructions and pumping lemma proofs. Regex is the only thing I can think of which is a practical application of that

celestikahmusic
Автор

How about seeing the application in real world? How to use the concepts to create something novel?

harivarsha
Автор

I actually like the class a lot. Honestly if there was one thing I didn't like: it was the Sipser. I usually am quick to catch on but that pumping lemma... But I honestly enjoyed your videos to the point when I actually watched stuff we didn't even cover... also, class needs more diagrams and maybe more of an explicit strategy to approach these types of problems. Like with your pumping lemma you had listed steps and strategies. Choose a string that is the essence of the language or just on the boundary of being in the language. Showing proofs is great and then giving an "algorithm" of the steps is even better and adding diagrams helps with dual encoding and engages multiple learning styles. Even better? Teaching how to understand what the question is even asking.

jewelleharper