who uses algorithms learned in cs studies?

B

bebop o'saurus

hi everybody,

i am wondering:

1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

2) what algorithms learned in your cs studies have you used recently?

3) if you haven't used any cs studies algorithms in your real-world jobs,
why not?

4) if you do use any cs algorithms in your real-world jobs, how often do you
use them?

thanks in advance for your replies.
 
S

SMC

1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

2) what algorithms learned in your cs studies have you used recently?

3) if you haven't used any cs studies algorithms in your real-world
jobs, why not?

4) if you do use any cs algorithms in your real-world jobs, how often do
you use them?

Almost always, the interesting and useful (and simple) algorithms are
available in the existing core Java API classes. Reimplementing well known
algorithms everytime would be brain dead (and contrary to the ideals of
OOP).
 
S

stev

bebop said:
hi everybody,

i am wondering:

1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

Uhm, recursion is a definite need to know. There are probably some
others I don't remember.

2) what algorithms learned in your cs studies have you used recently?

See above...although all collections are nice to know how they are done...
Linked List, Binary Trees, Hashtables, etc.
3) if you haven't used any cs studies algorithms in your real-world jobs,
why not?
uh.

4) if you do use any cs algorithms in your real-world jobs, how often do you
use them?

Quite a bit, all these questions sound the same, a recursion if you will.
thanks in advance for your replies.

no, thank you in advance of your advance.
 
C

Chris Smith

bebop said:
1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

[etc]

Sure, occasionally. The things that make applications really
interesting often require use of interesting algorithms. This includes
mainly stuff like genetic algorithms, state machines, etc. The simpler
sort algorithm stuff from intro data structures classes is, of course,
already done for you 99% of the time. If you use CS algorithms because,
for example, you aren't using a relational database when you should be,
then you're doing something wrong.

You should realize that a degree in computer science is supposed to
prepare you to do computer science, though, and not business application
development. Computer science means studying and advancing the field of
computing, and involves things like developing new programming
languages, compiler optimizations, or garbage collection algorithms.
The fact that most computer science graduates go into application
development jobs is an interesting anomaly, but doesn't change the
meaning of the phrase.

--
www.designacourse.com
The Easiest Way To Train Anyone... Anywhere.

Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
 
L

Lothar Kimmeringer

1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?
Sure

2) what algorithms learned in your cs studies have you used recently?

Petrinet, sorting and searching-algorithms, handling of trees,
stacks, heaps, queues, ...
4) if you do use any cs algorithms in your real-world jobs, how often do you
use them?

Everytime.


Regards, Lothar
--
Lothar Kimmeringer E-Mail: (e-mail address removed)
PGP-encrypted mails preferred (Key-ID: 0x8BC3CD81)

Always remember: The answer is forty-two, there can only be wrong
questions!
 
S

Stefan Schulz

hi everybody,

i am wondering:

1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

2) what algorithms learned in your cs studies have you used recently?

3) if you haven't used any cs studies algorithms in your real-world jobs,
why not?

4) if you do use any cs algorithms in your real-world jobs, how often do
you

I've recently used Dijkstra's Algorithm, and Kruskal's Algorithm, but such
Problems usually appear once in a blue moon. :)
 
C

Chris Uppal

bebop said:
1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

I -- and everyone else -- use them all the time.

What's rarer is to have to /code/ any of the basic algorithms. As other people
have noted some of the most useful and popular algorithms are already packaged
for us in standard libraries (in one language or another). But still, I don't
think it's possible to make use even of pre-packaged algorithms unless you know
roughly what they do, and (more importantly) /why/ they do it that way.

Actually, there isn't a fixed set of "algorithms" -- for almost any real
problem there are many many published algorithms with different
time/space/complexity tradeoffs, and it's rarely possible to put a finger on
one of them as say "this is the best". And of course, new algorithms are
invented all the time. Sometimes you will have to invent your own algorithms,
that's fun to do if you are up to the task. You are much less likely to make a
complete balls-up of it if you've had some practise with the algorithms they
teach in CS.

Thinking in algorithms is completely central to programming. So much so that
you often don't realise that you are doing it at all.

-- chris
 
M

Michael Borgwardt

Chris said:
Thinking in algorithms is completely central to programming. So much so that
you often don't realise that you are doing it at all.

I'd even say it's both central and special to computer science in general.

I was once asked by a math professor what I liked best about his lecture
on group theory and answered that it was the part where he introduced an
algorithm to enumerate coset classes. As a CS student, this was easy to
grasp for me and came almost naturally, while I really struggled to
understand most of the rest (very theoretical math).

He was quite amused by this and said that this was exactly the part where
the math students had the biggest problems.
 
I

Ian Heggie

bebop said:
hi everybody,

i am wondering:

1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

Yes ...
2) what algorithms learned in your cs studies have you used recently?

As another poster said, most algorithms have implementations already
around. The ones that aren't are either to simple to require a helper
class (eg linear search through an array), or are more correctly called
patterns (eg language compilers, interpreters etc) - back in 1979-81
when I went through uni, the terminology wasnt there, but the concepts
where, if you where prepared to think out of the box.
3) if you haven't used any cs studies algorithms in your real-world jobs,
why not?

4) if you do use any cs algorithms in your real-world jobs, how often do you
use them?

I frequently use the pattern behind language compilers and interpreters
frequently. Where ever there is repetition in intent in code, I look for
either refactoring the code to separate it out into a separate class, or
otherwise developing a higher level command language.

An example of writing an interpreter was taking documents written about
how to manually test a specific product(eg click "details" link, type
"xyz" into name field, press [Add] button, verify "record was added" is
visible, repeat test for each row in such an such table), and making an
interpreter that would perform those tests automatically.

The principle benefits where communication with non programmers,
increased speed of writing tests and the ability for non programmers to
have a major role in the writing of the tests.

A slightly more obscure example is writing a compiler that takes a
database schema and produces Java, html and javascript code. Which when
compiled for the web server and interpreted on the client side browser
provide standard table maintenance functionality. The compiler differs
from typical compilers because its input is declarative rather than
procedural, and the output is for multiple environments on different
machines, but that's just letting your thinking get out of the box.

Combined with an interest in learning and thinking out of the box, the
basic mental pattern that I use, is write it manually once, write it
again a second time ... but the third time you have to do something,
tell the computer to do itself!


thanks in advance for your replies.

Regards
ian
 
I

Ian Heggie

bebop said:
hi everybody,

i am wondering:

1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

Yes ...
2) what algorithms learned in your cs studies have you used recently?

As another poster said, most algorithms have implementations already
around. The ones that aren't are either to simple to require a helper
class (eg linear search through an array), or are more correctly called
patterns (eg language compilers, interpreters etc) - back in 1979-81
when I went through uni, the terminology wasnt there, but the concepts
where, if you where prepared to think out of the box.
3) if you haven't used any cs studies algorithms in your real-world jobs,
why not?

4) if you do use any cs algorithms in your real-world jobs, how often do you
use them?

I frequently use the pattern behind language compilers and interpreters
frequently. Where ever there is repetition in intent in code, I look for
either refactoring the code to separate it out into a separate class, or
otherwise developing a higher level command language.

An example of writing an interpreter was taking documents written about
how to manually test a specific product(eg click "details" link, type
"xyz" into name field, press [Add] button, verify "record was added" is
visible, repeat test for each row in such an such table), and making an
interpreter that would perform those tests automatically.

The principle benefits where communication with non programmers,
increased speed of writing tests and the ability for non programmers to
have a major role in the writing of the tests.

A slightly more obscure example is writing a compiler that takes a
database schema and produces Java, html and javascript code. Which when
compiled for the web server and interpreted on the client side browser
provide standard table maintenance functionality. The compiler differs
from typical compilers because its input is declarative rather than
procedural, and the output is for multiple environments on different
machines, but that's just letting your thinking get out of the box.

Combined with an interest in learning and thinking out of the box, the
basic mental pattern that I use, is write it manually once, write it
again a second time ... but the third time you have to do something,
tell the computer to do itself!


thanks in advance for your replies.

Regards
ian
 
I

Ian Heggie

bebop said:
hi everybody,

i am wondering:

1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

Yes ...
2) what algorithms learned in your cs studies have you used recently?

As another poster said, most algorithms have implementations already
around. The ones that aren't are either to simple to require a helper
class (eg linear search through an array), or are more correctly called
patterns (eg language compilers, interpreters etc) - back in 1979-81
when I went through uni, the terminology wasnt there, but the concepts
where, if you where prepared to think out of the box.
3) if you haven't used any cs studies algorithms in your real-world jobs,
why not?

4) if you do use any cs algorithms in your real-world jobs, how often do you
use them?

I frequently use the pattern behind language compilers and interpreters
frequently. Where ever there is repetition in intent in code, I look for
either refactoring the code to separate it out into a separate class, or
otherwise developing a higher level command language.

An example of writing an interpreter was taking documents written about
how to manually test a specific product(eg click "details" link, type
"xyz" into name field, press [Add] button, verify "record was added" is
visible, repeat test for each row in such an such table), and making an
interpreter that would perform those tests automatically.

The principle benefits where communication with non programmers,
increased speed of writing tests and the ability for non programmers to
have a major role in the writing of the tests.

A slightly more obscure example is writing a compiler that takes a
database schema and produces Java, html and javascript code. Which when
compiled for the web server and interpreted on the client side browser
provide standard table maintenance functionality. The compiler differs
from typical compilers because its input is declarative rather than
procedural, and the output is for multiple environments on different
machines, but that's just letting your thinking get out of the box.

Combined with an interest in learning and thinking out of the box, the
basic mental pattern that I use, is write it manually once, write it
again a second time ... but the third time you have to do something,
tell the computer to do itself!


thanks in advance for your replies.

Regards
ian
 
T

Thomas Weidenfeller

bebop said:
hi everybody,

i am wondering:

So do I :) What is the reason behind your questions? Could it just be
that you got sick and tired of having to learn them as part of your CS
studies?

It could well be that you need the stuff on a daily basis later, e.g. if
you become a CS instructor :), or that you will never have to deal with
it again. But even if you will never need them in the future - because
you maybe pursue a totally different career - there are a number of
reasons why you should learn them:

- For practical reasons: Most likely you will need to know them in some
test and get some grades. You need the grades to graduate.

- For principal reasons: A lot of the learning you do at a university is
not only so that you know the subject, but also that you "learn how to
learn", that you get trained to work through difficult things, on your
own, and be able to think in complex, abstract ways, taking more than
one dimension of a problem into account.

/Thomas
 
B

bebop o'saurus

for people who read my first post and jumped to the conclusion that i was
some wide-eyed, naive cs student seeking sagely advise on how to deal with
an algorithm class, you have guessed wrong. and if you think i am whining
about having to take a "useless algorithm class", you have guessed wrong.
i'm not asking for advice and i'm not a student.

another thing i am not is, i am not interested in hearing people boast about
what great programmers they are because they do or don't use algorithms. the
reason that i asked the specific questions that i asked was because i wanted
to know the answers to those very specific questions.

anyway, it is still interesting to read the different responses and analyze
why people probably respond the way that they do.

for people who seem to have missed the point of my original question, i
probably should have made it clear that i was not referring to "algorithmic
problem solving" in the general sense. i was refering to the cook-book style
application of specific algorithms (from the already existing body of
algorithms that have been discovered, analyzed and documented). i wasn't
referring to "the implicit usage" of algorithms in a collections API. and -
as co-dependent as data structures and algorithms are on each other - i
wasn't referring to data structures (linked list, sets, trees, etc. are data
structures; not algorithms).

its obvious that every programmer has their own particular take on
algorithms. i think it is fair to say that whether or not a given programmer
"implements" (as opposed to simply "using") a given algorithm has a lot to
do with how well they grok a given algorithm on an academic level.
 
T

Thomas Weidenfeller

bebop said:
for people who read my first post and jumped to the conclusion that i was
some wide-eyed, naive cs student seeking sagely advise on how to deal with
an algorithm class, you have guessed wrong. and if you think i am whining
about having to take a "useless algorithm class", you have guessed wrong.
i'm not asking for advice and i'm not a student.

Oh sure. And since you don't feel the need to tell us who or what you
are, we are free to come up with our own conclusions. You seem to have a
problem with that. Well, your problem. If you don't consider us worthy
to some background information, we make up our own. You definitively are
one of the people who seek an opinion but can't stand any response which
is not in line with their expectation. Not the first time, as a quick
search on Google reveals.

/Thomas
 
T

Tim Ward

bebop o'saurus said:
1) does anybody here use (in their everyday java coding gigs) any of the
algorithms they were taught in their cs classes?

Er, everybody, I would hope??
2) what algorithms learned in your cs studies have you used recently?

Who knows, it's all just "stuff I do" these days, I'm no longer usually
concious of applying a particular piece of knowledge that I learnt at a
particular time.

There are exceptions. When, for example, I found myself having to calculate
the transitive closure of a sparse connectivity matrix ... in SQL, believe
it or not ... that definitely recalled a particular CS lecture and set of
diagrams on the blackboard.
3) if you haven't used any cs studies algorithms in your real-world jobs,
why not?

4) if you do use any cs algorithms in your real-world jobs, how often do you
use them?

Every day, but like I said this stuff is mostly subconcious now so I don't
usually know I'm doing it.
 
R

Raymond Lee

Java is more than a programming language, it is an entire programming
platform. Many well known algorithms and data structures that we
learned in CS data structures and algorithms classes are already
implemented in Java libraries. Unless you want to customize the
algorithms to fit your needs, we can simply use the existing libraries
to do the tasks. How much algorithms we need really depend on the
applications we develop. For example, in game, AI, and graphics
programming, algorithms fundamentals are critical. I definitely agree
that all CS courses are fundamentals in software development, even
some may think the materials are theoretical.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top