What would it take for CS to be a serious subject?

what would it take for CS to be a serious subject?

Other urls found in this thread:

google.com/search?q=how to learn programming&ie=utf-8&oe=utf-8
s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf
people.vcu.edu/~rhammack/BookOfProof/)
composingprograms.com/
web.stanford.edu/class/cs140/projects/pintos/pintos_1.htm
twitter.com/AnonBabble

It already is, brainlet

solution to P=NP

When the people who study it stop believing that they're smart enough to study other fields of science and math.

So many of these faggots I know are """""""autodidacts"""""""""" who think they can learn anything just because they were able to learn a programming language all by themselves. You're not smart. Fucking kill yourself.

>programming language
>having anything to do with computer science

once again, the brainlets show their brainletness by posting dumb shit on Veeky Forums. when will brainlets learn?

Less HCI, more maths, modules in theory of computation/computer vision/machine learning/computer graphics to become compulsory (or other modules to become more rigorous), less emphasis on "making apps" and more emphasis on solving problems.

And in addition to this, making courses much more structured, such that everyone has a similar core skillset, rather than diluting the pool of graduates by allowing some students to do nothing but business, web dev, user experience and HCI, and still calling them computer scientists.

All scientists are like that.

>2016
>being elitist

But that's physics

You're talking about the major, not the subject. The field of CS is very diverse, and every subject you mentioned is studied in depth, along with many others.

>solving problems
The field of CSE (a subset of CS) is entirely motivated by real world problems.

It sounds like you didn't go to the best CS program. I went to one that was only rank ~100 and I still had to do some systems and some software engineering. And a decent amount of math (but not as much as others).

But honestly, those students that come to be programmers are the ones getting the department more funding and thus more professors. Sure, you end up in classes with people that don't care about actual CS as much, but there is a silver lining. Those people wouldn't care about CS if they didn't learn to make apps. And they could learn that without a college degree. But I say take their money, and open the door for that many more CS faculty positions and that much more CS research.

Obviously, those people shouldn't call themselves computer scientists. But a BS in any science doesn't mean you get to call yourself a scientist. In fact, not even a PhD does that. Scientist is a job title. You must be employed as a scientist before you become one.

stop acting like learning math is harder than learning a language
learning math just takes time, any CS fag could learn advanced math theories given enough time

though its true that doing real math is much harder than programming (but please note that the exercises for which you ask for help here do not count as real math)

>learning a programming language is hard
>advanced math is easy

shitty b8, -0/10

both are easy for anyone with a brain and enough dedication

>both are easy
False. I've taught advanced math for years, and people `with a brain' do not find it easy in general. I don't give a fuck if it was easy for you and your friends. Very few people find learning math as easy as you seem to think it is. So yes, most can learn it with enough dedication and time; however, that does not mean that it was easy.

>I've taught advanced math for years
Translation: I'm a high school tutor and I've even been a TA for a whole semester

of course i am exaggerating, please excuse me. math isnt that easy, i have experience teaching it too.
i am just pissed by all the people around here who think they are so superior just because they are majoring in math

lol, you got me. I have been a TA for a whole semester. But then I got my Ph.D and became a professor.

Ahh, sorry then. You're spot on that internet math majors are often super obnoxious about their `intelligence' and it's so dumb.

>You're talking about the major, not the subject. The field of CS is very diverse, and every subject you mentioned is studied in depth, along with many others.
That's the problem; the diversity and the lack of depth. It prepares you only to become a software developer.
>The field of CSE (a subset of CS) is entirely motivated by real world problems.
Having experienced the way computer scientists try to solve problems, I'm not convinced.
>It sounds like you didn't go to the best CS program.
On the contrary, I studied physics. I'm now doing a PhD in CS, and this is when I truly started to appreciate the skills deficit in CS students; that most of them are not even prepared for postgraduate CS. That is absolutely horrifying... And this is a top ten school for CS.

>But then I got my Ph.D and became a professor.
Translation: I've just started my master's and already have a bunch of ideas for theses so I'm basically a tenured professor. P.S.: Don't try messing with me, I already learnt to integrate in 3 whole dimensions motherfucker.

The mandatory inclusion of Real Analysis in every college-level computer science curriculum.

Otherwise, courses like algorithms or data structures limit students to hints about the fundamental science.

Why does real, numerical, and complex analysis matter for CS. Everyone always shills this and I don't understand it.

Trick question, it will never be a serious subject

Complex analysis is incredibly useful. Especially when dealing with series, periodic functions, and much more. Furthermore, Cauchy theorem will allow you to integrate pretty much anything.
Real analysis is useless for non-mathematicians.

>That's the problem; the diversity and the lack of depth. It prepares you only to become a software developer.
That is not necessarily the case. If you take all of the software dev courses, its not surprise you can't do real CS. But my school has a TCS track, a networks track, and a system track among others. Research is ongoing in all of those fields.

Sure, lack of depth may be a problem still, but that is just as much the student's fault. If they want to go into grad school/research, they need to carefully pick the classes take and not just dick around. That would probably fixed if more schools had 'tracks' like GaTech, for example.

Additionally, undergrad in any field doesn't really prepare you for research. You can only learn to do research by doing research. You need internships and/or directed studies. This is not unique to CS.

>Having experienced the way computer scientists try to solve problems, I'm not convinced.
If you don't understand the role of computation in modern science you are being intentionally retarded. More so, considering you are doing a PhD in CS.

>I'm now doing a PhD in CS, and this is when I truly started to appreciate the skills deficit in CS students; that most of them are not even prepared for postgraduate CS. That is absolutely horrifying...
>absolutely horrifying
Let's not use hyperbole. Horrifying is a ridiculous word to use in that situation.
More to the point: For one, don't consider the MS students. If you're at a top 10 school most of them are probably Indian and Chinese who didn't go to good schools in their home country. They are obviously going to be shit and the dept. only brings them in for the money. Can't do anything about undergrad education overseas.

If there are PhD students admitted without the experience needed to succeed in the program, then there is a problem with your departments selection process.

All that being said, there is certainly room for improvement in undergrad cs education.

He asked why complex was useful *for CS*, not why it is useful in math.

I've done plenty of CS research and read much more. I never see any application of complex analysis or any sort of integration.

>inb4 "not doing real cs research"
give a real answer please

Real analysis is useful for economics

N=1

> for CS to be a serious subject
It is a serious subject. Literally everywhere but on Veeky Forums.

Assuming you mean:
>what would it take for CS to be considered a serious science subject

Stop using it to train software developers. Treat it as a dedicated branch of mathematics and then make separate dedicated degrees for software engineering. Already happening in some places.

You didn't even answer the question you made up. You answered
>what would it take for CS to be considered a serious major

The subject is kind of defined by the typical material taught in the classes of the major.

LOL okay. That's a ridiculous way to define a subject but whatever.

OK, let me explain better.
Complex analysis is not used as a field of study (although the it can be).
Complex analysis (CA) is mostly used as a tool. Periodic functions and signal analysis appear everywhere.

E.g.
>A tree (in the mathematical sense) appears.
>It's elements seem to follow a pattern

Hmmm. How can you find an easy way to represent it?

>You remember complex analysis
>You use a Fourier series
>It is very effective

Now that's more like it :)

You have to use that way to define it if you want to understand why it is not respected. Because that is what people see and judge the subject on.

No. That's fucking retarded.

1. It is respected.

2. When you talk about the 'field of CS', you are referring to the body of knowledge of CS, current research in the area, and the impact it has. You are not referring to the cs undergrad curriculum.

I mean, if someone says "CS is shit because they only teach software engineering in undergrad" you should recognize this as an opinion of someone who don't know anything and ignore him. This person has no idea about how CS enables science in literally every field. Even some math proofs use computation. Thus you call him the retard that he is and move on.

Can I guy doing mech or electrical get a job in CS after reading from that list?

Also I'm looking to self learn programming. Can someone order this list or just point out the starters?

Then why didn't you call OP the retard that he is and moved on?

google.com/search?q=how to learn programming&ie=utf-8&oe=utf-8

No need for someone to type up an answer that has been answered thousands of times before.

Just wanted to BTFO some retards

Well of course. Linear problems have linear solutions. There already is an entire branch of mathematics dedicated to it.

Yes, but you would need to get experience in the form of practica or open source projects for your CV.

You mean as a software developer or as someone who actually pursues computer science mathematics as an academic subject?

>be math or physics fag
>take "computers are fun 101"
>hardest assignment is printing hello world
>"wow, CS is such an easy meme !"
come back when you design a consistent, scaled out, reliable database with fault tolerance, security and that can handle heavy traffic.
Google could literally lose an entire datacentre and nobody would notice except for the system administrators because of how fucking smart their engineers and researchers have been when implementing the databases. If you think that shit is any easier than your topology meme you're delusional

>Thinks you need intelligence to be a DBA

HAHAHAHAHAHAHAHA, typical fa/g/got.

are you retarded ? I'm talking about designing such systems. Here, read this and come back when you're done.
s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf

For CS majors to be required to go through all the books/subjects in that image.

>lack of depth
You mean like every undergraduate major?

I'd honest to God be willing to bet that you can't even write proper SQL triggers to guarantee a disjunct and total relation between three tables.

Just look at the 2 books by Sedgewick

>[Analysis of Algorithms] is intended to be a thorough overview of the primary techniques used in the mathematical analysis of algorithms. The material covered draws from classical mathematical topics, including discrete mathematics, elementary real analysis, and combinatorics, as well as from classical computer science topics, including algorithms and data structures. The focus is on “average-case” or “probabilistic” analysis, though the basic mathematical tools required for “worst-case” or “complexity” analysis are covered as well. We assume that the reader has some familiarity with basic concepts in both computer science and real analysis. In a nutshell, the reader should be able to both write programs and prove theorems. The book is meant to be used as a textbook in an upper-level course on analysis of algorithms. Despite the large amount of literature on the mathematical analysis of algorithms, basic information on methods and models in widespread use has not been directly accessible to students and researchers in the field. This book aims to address this situation, bringing together a body of material intended to provide readers with both an appreciation for the challenges of the field and the background needed to learn the advanced tools being developed to meet these challenges. Supplemented by papers from the literature, the book can serve as the basis for an introductory graduate course on the analysis of algorithms, or as a reference or basis for self-study by researchers in mathematics or computer science who want access to the literature in this field.

>Analytic combinatorics aims to enable precise quantitative predictions of the properties of large combinatorial structures. The theory has emerged over recent decades as essential both for the analysis of algorithms and for the study of scientific models in many disciplines, including probability theory, statistical physics, computational biology and information theory. With a careful combination of symbolic enumeration methods and complex analysis, drawing heavily on generating functions, results of sweeping generality emerge that can be applied in particular to fundamental structures such as permutations, sequences, strings, walks, paths, trees, graphs and maps.

>I failed algorithms 3 times and refuse to believe anyone could find it easy

so much butthurt

Even less depth, then. Or a lack of depth in fields that didn't have much depth to them in the first place.

Guaranteeing the guy who made that infograph didn't read all the books on it.

>that most of them are not even prepared for postgraduate CS. That is absolutely horrifying

I've heard numerous CS professors outright say that if you want to go to graduate school for CS, then do your undergrad in anything other than CS. It's not horrifying, it's what's expected of them.

>want to go into CS, do something completely different
>want to go into math? major in philosophy, math undergrads are too applied
>want to go into English? Major in Chinese, it will give you a better appreciation for the finer technicalities of the English language

This board is supposed to be smart

>If you didn't do 3 semester of java + 2 semesters of OOP + a semester of GUIs, then how are you going to do graduate coursework!?

Duh, didn't you see the bottom right one? No one on Veeky Forums has those mad skills.

>what do you mean I have to take an architecture class I haven't even taken circuits! What's a kernel? Who cares about file systems.

Besides, whatever shit you're lacking in you'll pick up on the way. Half of grad school is learning how learn on your own.

>Half of grad school is learning how learn on your own.

That's what undergrad was supposed to do.

The undergrad program for CS at my university is mostly math. The other courses are 2 semester courses of actual programming, 2 for algorithms, 1 for databases and 1 for electrical engineering foundations of computers, plus some labs.

Actual programming is a pretty small part of the degree. Maybe that's just my university though.

>That is not necessarily the case.
Of course, CS research is completely different to undergrad CS. CS is not a serious subject at undergrad, as it is a glorified software engineering course. In the few cases where it's not, there's too many software engineers in the graduate pool for the "computer scientist" label to mean anything. At the graduate level, near enough every person I meet does completely different work, and comes from a different degree background. Still, everyone works under the same umbrella term, as if HCI or UX is comparable to CP or ML. Therefore in regards to the original question; it would take us distinguishing the different branches from each other, and identifying the scientific branches, and calling those "computer science" for CS to be a serious subject.
>undergrad in any field doesn't really prepare you for research.
True, but with a physics background, I would at least be in a good position to start a physics, chemistry, or (in my case) computer science PhD. If a CS undergrad wanted to study ML, for example, they would find it substantially harder than a maths/physics undergrad (in my experience), because they simply aren't prepared for it by their undergrad degree; it's too watered down by all the other useless stuff that gets brought under the CS rainbow.
>you don't understand the role of computation in modern science
No, I meant I've seen computer scientists try to reduce interdisciplinary problems down to trivial models they can deal with, and fail to get results. I'm not impressed with many attempts to solve real world problems in CS.
>Let's not use hyperbole.
It's pretty horrifying for a degree that does nothing but give students a working skillset to not give the skills necessary to continue with more advanced work in their own field.
>there are PhD students admitted without the experience needed to succeed
Quite the opposite. They're the only ones WITH the skills, this is the fundamental problem.

Undergrad gives you a broad basis for a field.

It doesn't teach you how to learn shit your professor doesn't shove down your throat, or that is poorly defined in literature. It teaches you to learn how things are, not why things are.

Yeah, the CS majors in my department are also confused by the number of other majors able to do CS.

>HCI and UX is a joke
You realize the problem of conveying information to people in a way that everyone can understand instantly, and making it possible navigate a website having never seen it before is incredibly challenging?

If you think any field doesn't get incredibly difficult and complex with depth your ignorant, and part of what's wrong with academia. There is no "more noble" field.

OH COULD IT BE THAT THE SKILLS YOU LEARN AS AN UNDERGRADUATE ARE LARGELY TRANSFERABLE?

Except in CS it appears.

>HCI and UX is a joke
Yes.
Sorry that your incredibly difficult and complex field where you figure out how many colour vision deficient people prefer neutral backgrounds to high contrast colours doesn't get funded.

I'm cs and i work in chemistry, but I guess you're right, you're only as limited by how dumb you are.

very nice. many fields overlap in interesting ways, and it seems that cs intersects with all of them, which is why it's so hard to define.

Maybe because it's necessary tool for fields and required as a part of almost all STEM?

Yeah, I guess computers are pretty neato. I dunno what I'd do without all those IT guys keeping it running, and all those software engineers making the programs I use to do science with.

Probably """"""""""""required"""""""""""" textbooks for his uni courses that he read every once in a while.

Yea I mean I'd be out of a job if the CS people didn't make statistical packages and machine learning libraries! Why I just interpret the results of what my computer says!

That's not very scientific of you, user. A good scientist tries to understand the statistical techniques he's using. Which is probably why those packages and libraries are written largely by people form other degree backgrounds.

Iam intersted in AI research. CSfags, what should I know from your shitty degree to study AI seriously?

The one message you should take from this thread is that if you wanna do high level CS work, you should avoid CS like the plague.
You need to know:
a) A programming language
b) Mathematics

Don't go into AI, incredibly competitive. also a complete cluster with out any unified idea currently. You'll end up playing with black boxes hoping one of them works well enough to make you top dog until the next conference.

Also the idea of "general artificial intelligence" is probably unrepresentatable in our current theory of compututation

Don't fall for the AGI meme, if that's why you're interested in it.

it is serious if you go to a proper university that isn't on the level of a community college

Assuming you have a math degree.

Algorithms, logic, agent architecture, preferably two or three programming languages (like Lisp, C and Python).

>CS program requiring C++

kek

what do you think computer science is?

>AGI is a meme
>AGI isnt the apex of humanity
>we are not going to see an AGI in 2 generations

Youre a meme, user.

>>AGI isnt the apex of humanity
>>we are not going to see an AGI in 2 generations

You have to be over the age of 18 to post here

>You have to be over the age of 18 to post here
That's the tragedy of it all.

>1. It is respected.

By people who don't know anything about CS.

>This person has no idea about how CS enables science in literally every field. Even some math proofs use computation

Science being done on a computer =/= CS enables science. That praise should go to CpE.

>Also I'm looking to self learn programming. Can someone order this list or just point out the starters?

The most important things would be:

>Learn to code
Programming: Principles and Practice Using C++ by Stroustrup
C++ Primer by Lippman, Lajoie, and Moo

>Learn to code data structures and algorithms
Data Structures and Algorithms in C++ by Drozdek
Algorithms in C++ Parts 1-4: Fundamentals, Data Structures, Sorting, Searching by Sedgewick

>Learn system programming
Advanced Programming in the UNIX Environment by Stevens and Rago
Windows System Programming by Hart

At this point you can pretty much start coding. But to get a better understanding of what you're doing:

>Learn computer architecture
Computer Systems: A Programmer's Perspective by Bryant & O'Hallaron
Computer Organization and Design: The Hardware/Software Interface by Patterson & Hennessy

>Learn operating systems principles
Operating System Concepts by Silberschatz, Galvin, and Gagne
Modern Operating Systems by Tanenbaum

>Learn proofs, then learn algorithm design and analysis
A Transition to Advanced Mathematics by Smith, Eggen, and St. Andre
Book of Proof by Hammack (people.vcu.edu/~rhammack/BookOfProof/)
-
Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein
Algorithm Design by Kleinberg and Tardos

After this, you learn in whatever direction you want to go down.

you faggot
if you want that stuff it is there in the standard curriculum
if you want to be a web programmer that stuff is worthless

>Complex analysis is incredibly useful. Especially when dealing with series, periodic functions, and much more
When would a typical CS grad ever need that stuff in the workplace. EE/CompE I can see needing that material, but a Java programmer never.

Same at my uni

>mostly math
>ie we use set notation and logical qualifiers in our courses. ZOMG!

No, C++ is awful to start with.
He should do SICP first
in haskell or LISP, python works too.

Functional programming is the excellent way of introducing people into programming because you will work a lot with actually solving problems instead of bothering a lot with the syntaxes which c++ brings. After SICP you go c++, actually go into c++ after you have coded some vhdl and assembly to better understand pointers later.

...

Here is my order, I am studying CE.

>Start learning coding by having a lot of fun
SICP
Try it out in LISP first, if your eally hate the paranthesis or have previous experience of python then you can go for python aswell.
While python has excellent support for functional programming, nothing will beat LISP and Haskell. lambdas are important in functional programming and it's used a lot in SICP. While lambdas in python are so much better than the lambdas in for example Java it is still crippled compared to Haskell and Lisp.

composingprograms.com/ (SICP in python)

>Start getting more into Imperative programming
Since you have hustled a lot with avoiding shared states in SICP, you can't avoid it and this is where imperative programming can have its advantages. I hate Java, seriously I do but I think it is okay to start out with it to begin coding som OOP where you can apply imperative programming to its fullest. Java has very similar syntax to C (and consequently c++) with great exceptionhandling and good autocompletion and fairly strong IDEs (which unfortunately java beats everyone in) you will grasp the concept very fast.

Don't put much time into it,
download INtelliJ Idea with all autocompletion and code your own tetris with powerups. It takes around 3 weeks to complete if you put around 1-2 hours every day.

Interacting with java you will now how to write in c++ but you are still a terrible coder. So you are ready for handling memories!
>Implementation of datastructures and algorithms, heuristics, optimization

It is now you are getting introduced to programming for real
Familiarize yourself with pointers and references.
Read: Principles and Practice Using C++ by Stroustrup
C++ Primer by Lippman, Lajoie, and Moo

Read it alongside with

Data Structures and Algorithms in C++ by Drozdek
Algorithms in C++ Parts 1-4: Fundamentals, Data Structures, Sorting, Searching by Sedgewick

>Concurrent programming, C programming
continue..

>java
>in CE

Your school is totally shit.

You are now a beginner in programming, you're now ready to get into programming that will turn you bald because of all the fucking deadlocks you will receive. It is time to code your own kernel, or rather you are no ready to repair a broken OS.

web.stanford.edu/class/cs140/projects/pintos/pintos_1.htm

...

>b.multiply(

absolutely disgusting shit

We did not have Java.
I am just saying that after just programming functionally he would rather start solving problems immediately in imperative language.

Coming to an environment such as c++ with very crypted long and long error messages from the compiler is not I would recommend.
Java has very similar syntax afterall, when you are self learning it is important to have fun. Also the garbage collection in java will do wonders for somebody who just wants to grasp the concept of imperative programming. Coding a trivial tetris with powerups will be fun in java because when you are doing something stupid Java will tell you exactly what you are doing stupidly. The IDE will also force you to write the code so that it is easily readable. It will force you to learn all naming conventions and so on which SICP does not teach you. Interacting with the IDE will teach you stuff; on the other hand IDE can most of the time be wrong.

After you are done with this don't ever look back at java.