Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "theoretical cs"
-
!rant
*Theoretical computer scientist is at an interview.*
Interviewer: “Imagine that you are walking down a road and see a house on fire. What do you do?”
CS Guy: “I dial the police and tell them that the house is on fire.”
Interviewer: “Good. Now, imagine that you are walking down the same road, and you see that the same house is not on fire. What do you do?”
CS Guy: *Ponders for a little while.* “I put the house on fire and reduce it to a problem I’ve solved before.”10 -
*Theoretical computer scientist is at an interview.*
Interviewer: “Imagine that you are walking down a road and see a house on fire. What do you do?”
CS Guy: “I dial the police and tell them that the house is on fire.”
Interviewer: “Good. Now, imagine that you are walking down the same road, and you see that the same house is not on fire. What do you do?”
CS Guy: *Ponders for a little while.* “I put the house on fire, thus reducing it to a problem I’ve solved before.”2 -
I've found sites like Udemy/Khanacademy/Codecademy/Brilliant/Edx to be very useful — possibly more useful than expensive education.
But they still need:
1. Better correction/update mechanisms. Human teachers make mistakes and material gets outdated, and while online teachers are rectified faster than classroom teachers, the procedure is still not optimal. Knowledge should be a bit more like a verified wiki.
2. Some have great interactive coding environments, some have great videos, some have awesome texts, some have helpful communities. None has it all. In the end, I don't want to learn a new language by writing code in my browser. It could all be integrated/synced to the point where IDEs have plugins which are synced to online videos, with tests and exercises built in, up to a social network where you could send snippets for review and add reviews to other people's code.
3. Accreditation. Some platforms offer this against payment, but I think those platforms often feel very old school (pun intended), with fixed schedules, marks and enrollments. Self paced is a must.
4. Depth is important. Current online courses are often a bit introductory. We need more advanced courses about algorithms, theoretical computer science, code design, relational algebra, category theory, etc. I get that it's about supply/demand, but we will eventually need to have those topics covered.
I do believe that for CS, full online education will eventually win from the classroom — it's still in its infancy, but has more potential to grow into correct, modern education.10 -
Most kids just want to code. So they see "Computer Science" and think "How to be a hacker in 6 weeks". Then they face some super simple algebra and freak out, eventually flunking out with the excuse that "uni only presents overtly theoretical shit nobody ever uses in real life".
They could hardly be more wrong, of course. Ignore calculus and complexity theory and you will max out on efficiency soon enough. Skip operating systems, compilers and language theory and you can only ever aspire to be a script kiddie.
You can't become a "data scientist" without statistics. And you can never grow to be even a mediocre one without solid basic research and physics training.
Hack, I've optimized literal millions of dollars out of cloud expenses by choosing the best processors for my stack, and weeks later got myself schooled (on devRant, of all places!) over my ignorance of their inner workings. And I have a MSc degree. Learning never stops.
So, to improve CS experience in uni? Tear down students expectations, and boil out the "I just wanna code!" kiddies to boot camps. Some of them will be back to learn the science. The rest will peak at age 33.17 -
One of my theoretical CS teachers always complains and makes it sound like everything around him is an annoyance to his existence
- being late or in a bad mood? His pregnant wife is very tiring (good ol' haha women are hormonal much?)
- having to create and correct exercises for us (students) is a nuisance because it's so much work and we're not supposed to be spoon-fed (which makes the whole learning experience very demotivating)
- every explanation start is continued by at least 3 changes in the explanation itself, which makes everything super-confusing
- all his helpers are incompetent and not rising up to his expectations
Someone needs some self-reflection2 -
I once failed a subject during my masters (complex analytics and measure theory).
Next year I decided to give it everything I've got. I had grown to love it and could solve most problems they threw at me. Hand written an 80 pages long "book" distilled from all the notes, proofs and visualisations from all the lectures that year.
I only exerted this effort (even though I could've just "passed" this subject) because the lecturer was so damn enthusiastic about maths. Even though he wasn't a CS teacher this course was my best experience of a teacher at uni. He loved the beauty of the maths he was teaching and managed to make me love it too.
He was a maths geek and when I aced my final he told me he actually writes code too. He showed me some simulations he wrote while he worked on some theoretical nuclear physics stuff, because that's what he was into. Really cool guy. I wish more CS lecturers were as good teachers.1 -
!!!rant
Most exited I've been about some code? Probably for some random "build a twitter clone with Rails" tutorial I found online.
I've been working on my CS degree for a while (theoretical CS) but I really wanted to mess with something a bit more practical. I had almost none web dev experience, since I've been programming mostly OS-related stuff till then (C). I started looking around, trying to find a stack that's easy to learn since my time was limited- I still had to finish with my degree.
I played around with many languages and frameworks for a week or two. Decided to go with Ruby/Rails and built a small twitter clone blindly following a tutorial I found online and WAS I FUCKING EXITED for my small but handmade twitter clone had come to life. Coming from a C background, Ruby was weird and felt like a toy language but I fell in love.
My excitement didn't fade. I bought some books, studied hard for about a month, learned Ruby, Rails, JavaScript, SQL (w/ pg) and some HTML/CSS. Only playing with todo apps wasn't fun. I had a project idea I believed might be somewhat successful so I started working on it.
The next few months were spent studying and working on my project. It was hard. I had no experience on any web dev technology so I had learn so many new things all at once. Picked up React, ditched it and rewrote the front end with Vue. Read about TDD, worked with PostgreSQL, Redis and a dozen third party APIs, bought a vps and deployed everything from scratch. Played it with node and some machine learning with python.
Long story short, one year and about 30 books later, my project is up and running, has about 4k active monthly users, is making a profit and is steadily growing. If everything goes well, next week I'll close a deal with a pretty big client and I CANT BE FKING HAPPIER AND MORE EXCITED :D Towards the end of the month I'll also be interviewed for a web dev position.
That stupid twitter clone tutorial made me excited enough to start messing with web technologies. Thank you stupid twitter clone tutorial, a part of my heart will be yours forever.2 -
Fantasy and Sci-Fi,
Math and theoretical CS,
Graffiti (this one is just a sketch tho),
Wandering around (for long time and distances),
Bike riding (before someone steal it),
Sky watching (with naked eye)
and I have other not-so-popular habits that I have, but I don't know if they are considered geek.1 -
I just recalled I once had to explain to my CTO what’s the difference between stack and heap memory
It baffled me a little bit, but contrary to what one might perhaps expect, this was a guy who was already making a living off of programming for about ten years selling his software to various clients, so he was clearly competent enough to create software that works, and he had in fact put this startup on its feet operationally with it already being profitable before outside investments were secured
And here I was with my theoretical CS knowledge making zero bucks before getting this job8 -
Left engineering (and my job) for theoretical CS
My best choice in my opinion, although not every body around me shares it.7 -
Don't have a cs degree, when I was in college I didn't know what I wanted to do, so I got an bachelor's in math figuring that would open a lot of doors. Did a boot camp after college to test the waters and found out i had a real passion for engineering. 2 years later I am teaching people with Masters in cs how to get shit done at my job. Morale of the story, your education in the theoretical doesn't mean shit when it's time to get practical work done.
-
I don't know if this can be classified as a legit "regret" or not, but anyway (hence no wk78 tag).
I've always chosen to focus more on the theory behind computers and computing rather than on practical dev skills. Not saying that the more theoretical things aren't fun - concepts from theoretical CS and maths still regularly blow my mind, as do the more "esoteric" languages like Haskell, Idris, and Coq. However, after seeing you fine folks here at dR talk about practical development, it feels like there's a whole world of stuff that I've missed about computers and programming, especially web programming. I think I'll tackle that next when I have some free time, maybe spend some time learning PHP to see what all the hate's about... (really though, it must do something right if it has such a huge userbase, plus, I think devRant uses it too...?)
Anyway, just wanted to say that you folks are really cool and an awesome source of inspiration. Best community ever.3 -
Question: when modeling a language using a nondeterministic finite state machine, do I have to add a "trash" state, if a deterministic one would need one or can it just be obmited and if so why?5
-
A classmate I haven't seen in 2 years popped up in my Linkedin.
I looked up her profile and it seems like she now works at SWE in okayish company after an internship in a prestigious company.
This throws me a little bit (I am jealous obviously). We've worked in the same uni project before, she's okay when it comes to theoretical courses but a bit behind when it comes to anything related to computer. I would never think of her working as SWE as she did better in traditional engineering (think Civil Eng, Mechanical Eng etc, Aerospace Eng.).
And yet I heard a lot of people online complaining about difficulty of finding graduate/junior position. If a person like her can find something, surely someone with pure CS background should find something easier. But then again, job hunting is 50% pure luck. I have concern on the quality of work that she will produce, but maybe I underestimate her a lot? 🤔6 -
!rant but a question...
I know that with the vast examples/tutorials online this may not be necessary, but I wanted to ask the community if you guys/gals would recommend going back to school to get a formal CS education or if it would be a waste of time, money, and resources compared to just using web based sources? I've tried the college thing 3 times when I was younger but couldn't concentrate and lacked the discipline to focus and finish classes. But I'm a bit older now and wanted to know if you would recommend going back to school or if time would be better spent performing self-study and learning from home?
I'm still extremely new to coding and programming and only have basic knowledge of actual coding and a lot of the theoretical stuff in programming is completely foreign to me. Like for example, how to optimize code. I know that refactoring code to have a smaller more efficient footprint is always desirable, when it doesn't interfere with readability, but I'm unaware of where/how to modify code to run efficiently. Of course that may be wayyy to advanced for my use cases anyway 😂.
I'm trying to teach myself python as it seems like a great language for starting out and getting to understand the concepts of programing. Plus, it can be used directly in my line of work as well as side projects that I wanted to try my hand at.
Thank you in advance for your recommendations everyone!2 -
Any tips for onboarding a new joinee to a couple-month old Django back-end project and eventually take it over, as my tenure ends?
The newbie is from a theoretical CS background and only knows very basic Django.
It's gonna be fine, I know; I'm just not sure how to go about handing over the project since even with coding best practices and detailed comments and a README.md, there's still a lot of stuff happening in the background that I know only because I've worked with it daily.3 -
Typically every computer science major begins with either C C# C++ java or python , creating so much abstraction from the hardware which just loads your mind with questions that remain unanswered.When ever i program something i always think of how the under lying stuff is working.They never explain how and where software meets the hardware.Why are they keeping students away from the hardware. I think a cs graduate without knowing the underpinning of a computer should not be considered a cs graduate as opposed to being a software engineer a computer science major relates to everything that is a computer that includes the theoretical stuff and a little bit know how of computer hardware. Instead of teaching this stuff and assembly as a language in the first semester they teach you java or C++. Could not speculate on why this is so.11
-
My CS (theoretical foundations of computer science, specifically) professor is currently teaching regular expressions... Has been for three weeks. Same thing over and over. All of his examples involve using regular expressions to parse HTML. He just told us to write a script (using Perl-style regex) that would recursively find and follow link tags in various websites. Just... no...1