[ 3 / biz / cgl / ck / diy / fa / ic / jp / lit / sci / vr / vt ] [ index / top / reports ] [ become a patron ] [ status ]
2023-11: Warosu is now out of extended maintenance.

/sci/ - Science & Math


View post   

File: 99 KB, 561x595, 1.png [View same] [iqdb] [saucenao] [google]
7082111 No.7082111 [Reply] [Original]

why is computer science so difficult for under graduates?

why is it so difficult to understand that whenever you come up with an algorithm you have to argue its correctness?

"hey here's an algorithm that can send you back in time and it runs in O(n^3) time :D"

I just finished grading assignments

29 submissions
29 submissions

>> No.7082112

>>7082111
>29 submissions
>29 rejections

fixed

>> No.7082127

>>7082111
>>7082112
well CS departements except kids pretty liberally. I mean, theres several kids with down syndrome in my program. 1 literally told an entire class that he was diagnosed with down syndrome in the second grade. on top of that, the picture is right. most just want to be code monkeys, and would be better off with an associates degree. on top of that, its easy to cheat. ive never been in the CS lab for longer than an hour and not seen someone get a test from a class last semester for a course they are doing this semester. or people just google their assignments, or just copy and paste from the beta trying to make friends.

only 2 or 3 people in any of my classes know what they are doing. everyone else is just cheating off one another. its pretty annoying that professors actually dont give a shit. some chick that is the biggest brown nosing cheater actually got a decent internship because professors recommended her. i talk to her the other day about big O notation and she had no idea what was happening.

but the real question is, why the fuck would you waste your time getting a masters in CS?

>> No.7082128

>why is it so difficult to understand that whenever you come up with an algorithm you have to argue its correctness?
was the point of the assignment to come up with the best algorithm, or merely any algorithm that solves the given problem?

you sound like a bad TA to me

>> No.7082145

>>7082128
not op but that's beside the point. if you design an algorithm, part of that is proving that the algorithm will always terminate and will always return what you say it returns when it terminates.

>> No.7082178

>>7082128
any algorithm

>>7082127
I am doing a PhD in theoretical computer science, it's basically math.

>> No.7082186

>>7082111
> "hey here's an algorithm that can send you back in time and it runs in O(n^3) time :D"

http://www.scottaaronson.com/democritus/lec19.html

>> No.7082187

>>7082128
>you sound like a bad TA to me

let me guess, you are another under graduate CS student?

>> No.7082189
File: 498 KB, 2040x1409, Screen Shot 2015-02-21 at 12.14.10 PM.png [View same] [iqdb] [saucenao] [google]
7082189

>>7082178
I'm also interested in theoretical computer science. These are the sorts of papers I read.

>> No.7082195

>>7082189
> first paper you ever read
> didn't even read all of it
> brags about it on /sci/

good job kid

>> No.7082197
File: 324 KB, 2041x1398, Screen Shot 2015-02-21 at 12.20.47 PM.png [View same] [iqdb] [saucenao] [google]
7082197

>>7082195
No, it is to show that TCS is a sub-field of mathematics.

>> No.7082198

Because you go to a shit school?

CS at shit school = underachieving gaming manchildren
CS at good school = people interested in algorithms and turing shit

>> No.7082199

>>7082111
I'm a first year cs student. Give me some tips for how to be a good CS student. Like what are the biggest mistakes you see and what are the best things people do that you see?

>> No.7082201

>>7082198
trust me it's not shit, one of the best in Scandinavia where the education system is known to be good.

>> No.7082202

>>7082189
I can't take seriously any field that uses the word "blobs".

>> No.7082205

>>7082111

We only just started big O notation in the second year of our CS course.

Doesn't seem that hard. I don't see how you'd proof that an algorithm runs at O(n^2) other than showing the how many times it will iterate over a function that is O(n^2) other than something like this


O(for (x = 0; x < n; x++) { //code } * for (for (y = 0; y < n; y++) { //code })

Equivalent to;
O(n) * O(n)
=
O(n^2)


That said I'm only a 2nd year student so we haven't dipped very far into algorithms and theory so far.

I guess if students don't explain why it's O(n^2) that could be annoying, is that what you mean OP?

>> No.7082208

>>7082202
Because your pleb brain can't handle research at that level.

>> No.7082209

>>7082199
well for starters
see
>>7082205

students find it very hard for example to prove why 21903821n^2 + nlogn/10 + 190n is O(n^2)

they can not follow simple mathematical definitions... and this is a problem....

>> No.7082211

>>7082205
algorithms aren't only about for loops.

>> No.7082218

>>7082209
>not a CS student

Is it because n^2 is the fastest growing term?

>> No.7082222

>>7082111
It think it's because it's hard to find a uni offering a good CS program that isn't just code-monkey stuff (and if I can believe in something said on /sci/ it seems it's particularly bad in USA), so most people who are capable and interested in it just start doing something else, leaving the ones who don't know what CS is about to do it instead (even in the rare places where CS is done correctly).
Case in point: of the five best classified students in the national phase of the IOI in my country a couple years ago, two chose unrelated Engineering fields and three Math.

Of course there are exceptions, and you're probably just unlucky. Some of my friends are doing CS and are pretty serious about it.

>> No.7082226

>>7082211

Well yeh it's just an example, there's logarithmic time as well as just linear time.

>> No.7082228

>>7082218
Yeah. I just started a class with this stuff too (first year CS) and AFAIK you just have to show that there is a c for which c*n^2 is always greater than the function of the algo (for n greater than some other constant).

>> No.7082231

>>7082228
How do you do that

>> No.7082238

>>7082218
this is the informal way of showing this

formally you would have to do the following:

from the definition of big O notation we know that f(n) = O(g(n)) if and only if there exists a positive constant c and a positive integer n0 such that for every n>=n0 the following holds: f(n) <= c*g(n)

so

f(n) = 21903821n^2 + nlogn/10 + 190n and we have 21903821n^2 + nlogn/10 + 190n <= c*n^2

now we must find one constant c and an n0 such that the definition is satisfied.

we know that n is positive so we can divide by n^2 the two sides of the equation to get:

21903821 + logn/n + 190/n<= c

suppose that n = 1

21903821 + log(1)/1 + 190 = 21903821 + 190 = 21904011.

for any n >= 1 our f(n) will always be <= 21904011

so for c = 21904011 and n0 = 1 the definition of big O notation is satisfied, thus 21903821n^2 + nlogn/10 + 190n = O(n^2)

>> No.7082240

>>7082205
>We only just started big O notation in the second year of our CS course.
What? Really? I learned about big O notation in highschool and we were basically being trained to just be programmers.
I mean, I don't expect a highschooler to have read and understood the Cormen, but how can you get to the second year of CS without learning the basics of algorithms? And this comes from a Biomedical Engineer, so I'm not even close to that field.
And don't worry, I'm not saying it's your fault (even if you could have learnt it by yourself and I suggest you to do so, don't wait for people to teach you for this basic stuff); a CS course where you don't get a proper intoduction to algorithms in the first year is shit.

>> No.7082242

>>7082238
I think I missed a 10 over there and f(n)/n^2 instead of f(n) in the second line from the last line, but the end result is the same since log(1) = 0

>> No.7082245

>>7082231
By drawing a graph to show that it's trivial :^D

>> No.7082253

>>7082238

I'm not a math fag but

>we know that n is positive so we can divide by n^2 the two sides of the equation to get: 21903821 + logn/n + 190/n<= c

If the original equation is 21903821n^2 + nlogn/10 + 190n then how does dividing by n^2 take away the n in (n*logn/n) and (190/n)?

>> No.7082254

>>7082240
>a CS course where you don't get a proper intoduction to algorithms in the first year is shit.

Or maybe the first year has a heavy focus on just math and they want people to be proficient in it before they even begin with algorithms.

Not my school tho, we learned about big O in the first semester. You just need to realize different schools and countries teach things in different order and not everything is so normalized.

>> No.7082255

>>7082253
(n)/(n^2)=1/n right? not 1

>> No.7082256

>>7082211
What you gotta do is express the number of elementary operations in terms of the size of your input. So it's a bit more than for-loops, but the basic idea is the same.

>> No.7082261

>>7082256
yea come back when you can calculate the complexity of FFT-based multiplication or of the simplex algorithm using for loops.

>> No.7082265

>>7082238
Wuuut? That looks pretty unintuitive.

On semi related note, is there anyway to prove which term in a function grows the fastest? We all know that in:

f(x) = 2^x + x^99 + 99x

2^x is the fastest growing term, but I just informally know that because it's an exponential function. Is there any way to prove that? L'Hopital's rule or something?

>> No.7082271

>>7082111
We have similar problem in my Uni. Hundreds of people people signing up thinking they are gonna learn photoshop and how to design web pages (the admission requirements are really low). Then they get hit in the face with all the math and CS fundamentals so some of the first and second year classes can have only 10-30% pass rates.

Last semester I was grading assignments for theoretical crypto class and it was terrible.

>> No.7082276

>>7082265
>Wuuut? That looks pretty unintuitive.
It is. However it becomes more difficult when you want to know the complexity of a recursive function. Luckily there are some pretty cool theorems to help you in those cases.

>Is there any way to prove that? L'Hopital's rule or something?
That's a way. If you apply l'Hôpital to <span class="math">\lim_{x \rightarrow +\infty}\frac{2^x}{x^{99}}[/spoiler] 99 times you get <span class="math">\lim_{x \rightarrow +\infty}99\ln{2}\cdot2^x[/spoiler], hence the exponential grows faster.

>> No.7082283

>>7082240

We do zero programming in our secondary schools afaik.

Also yeh the CS course I'm doing is shit, our lecturers get angry at students for asking legitimate questions, then they duck out of classes and labs a lot. It was the cheapest/affordable option for me, and I haven't really struggled so far, but I sympathize with the people that did in the 1st year and 2nd year.

The modules/material is terribly planned. Our entire year can do out a website with decent CSS, PHP scripts, etc. Yet there's no networking module until 3rd year.. so ask them what ftp or ssh is and they have no idea. No idea at all either how the internet works, or what TCP/UDP is.

We had a crash course in first year for mathematical axioms and proofing.

There was still a huge dropout rate from 130 down to 40 of us now.

To me it seems that there's something of a large emphasis on theory far too early on when students in my year couldn't even tell you what an IP address is, or what the purpose of a logic gate is.

If it were upto me, they'd cover the basics first, then in 3rd year students can branch into a specialization that would suit them.

My main reasoning for this is that it's all well and good being a mathematical expert that knows every axiom/law and can calculate/proof anything they produce.

But it looks ridiculous if they don't know what an OS kernel is.

There's also the issue that a CS degree will never compete with a dedicated mathematics degree.

>> No.7082288

>>7082201
>where the education system is known to be good
if you're swedish your education system is frankly complete shit

both your secondary and tertiary schol results are disappointing in the list

do you have a single university in the top 100?

and your pisa scores are terrible

>> No.7082292

>>7082283
>There's also the issue that a CS degree will never compete with a dedicated mathematics degree.

Yeah because a BS in CS nets you 70-120k/yr upon graduation. a BS in math nets you 20-40k/yr and a PhD in Math nets you between 65-125k/yr.

>> No.7082297

Computer science should have never become a degree on its own. It should have remained an interdisciplinary collaboration between math, physics and engineering. The people who want to work "something with computers" don't belong in university and are only dragging down the intellectual level for the very few who are interested in theoretical CS.

>> No.7082298

>>7082292
i think he meant in research

the best computer scientists usually do a double major in math and CS

>> No.7082299

>>7082265
differentiate the two functions an it's easy to show that for all x greater than some value, the derivative of 2^x is more positive than the derivative of x^99

>> No.7082314

>COMPUTER SCIENCE IS LOVE

>COMPUTER SCIENCE IS LIFE

TAs like you make me want to kill myself

FUCK YOU OP

>> No.7082316

>>7082283
>>7082240 here
>We do zero programming in our secondary schools afaik.
Here in Italy we have various types of highschools, not everybody learns programming in hs. I chose a ITIS (industrial technical institute) with a informatics specialization (it's similar to a Bachelor in Computer Engineering but less in-depth, in fact I can sign some projects related to CE as a professional even though I'm not an engineer)
>The modules/material is terribly planned. Our entire year can do out a website with decent CSS, PHP scripts, etc. Yet there's no networking module until 3rd year.. so ask them what ftp or ssh is and they have no idea. No idea at all either how the internet works, or what TCP/UDP is.
That looks more like CE stuff than CS. You don't need to know any of those things.
>To me it seems that there's something of a large emphasis on theory far too early on when students in my year couldn't even tell you what an IP address is, or what the purpose of a logic gate is.
But that's the whole point of CS, it's a branch of math. I'm sorry to say this, but you're one of the CS student /sci/ hates so much and for good reason. You clearly don't get what CS is (or should be). I suggest you switch to CE, you will probably like it much more.

>> No.7082320

>>7082292
Yeah because a BS in CS nets you 70-120k/yr upon graduation. a BS in math nets you 20-40k/yr and a PhD in Math nets you 300k starting and any job you want
FTFY

>> No.7082467

>>7082111
because lots of people get in computer science majors thinking they will program video games inmediatly or think computer science is like an engineering.

>> No.7082506

>>7082467
I'm hoping to get into the video games industry, but not straight away.
My plan is to create various simulators, engines, and procedural generation systems once I'm at university and for some time after, and then be able to go pretty much any high place in the game development industry if I've done well enough.
Entering the game development industry straight away is foolish unless your background already gives you a specialized role, because code monkeys are apparently pretty useless.

>> No.7082566

>>7082298
that's what i did. math undergrad, cs phd

>> No.7082730

>>7082316

If it's just a branch of mathematics then why do majority of courses contain web design, operating system architecture etc?

Thing is majority of CE courses focus on hardware entirely with some x86 assembly, and a lot of CS courses just roll CS and CE into the same thing.

I'm obviously no authority but UK colleges like Cambridge offer comprehensive mathematics degrees. I know most of the guys in Havok who do game engine programming have mathematics degrees.

If it is just a branch of mathematics then merge it with the mathematics course and leave CS to be the jack of all trades when it comes to software.

If you think a CS degree can compete with this;

https://www0.maths.ox.ac.uk/courses

Then I'm wrong.

>> No.7082792

>>7082205
try to prove build-max-heapfy is O(n)

it's not that hard but you need a proper math background to get into it

>> No.7082802 [DELETED] 
File: 5 KB, 262x292, cs.png [View same] [iqdb] [saucenao] [google]
7082802

>>7082111
Because CS majors are fucking retarded. We've been saying this for years.

>> No.7082805

>>7082265
use the big-O limit characterization and the ratio test

>> No.7082838

>>7082802
>posting trolls outside /b/...
you really need to lurk moar in /sci/ and familiarize yourself with rules. there's really not that many of them.

>> No.7082841

>>7082208
Not that guy you're replying to, but what is a blob? Is it a smooth n dimensional object or what?

>> No.7082850

>>7082792
Not him but I understand the process intuitively. Writing out the proof on the other hand is too much for me.

>> No.7082854 [DELETED] 
File: 421 KB, 574x461, Untitled.png [View same] [iqdb] [saucenao] [google]
7082854

How do you visualize this?

>> No.7082861

>>7082850
sometime is difficult see what's going on.
take a look at build-max-heapfy, it's a very easy procedure. intuition say Θ(n log n), proper math say Θ(n)

>> No.7082892

>>7082838
>implying trolling

It's not trolling, it's truth. Your CS coursework isn't impressive in the least.

>but muh inductions, reductions, and diagonalization proofs are so hardcore! We must be like basically mathematicians!

>> No.7083848

>>7082205

Second year? What? I'm in a shit uni and we started it about 1 month into the first semester.