Advice for Computer Science Student

D

dydx31

Hey guys,
I am a Computer Science student attending classes at the University
of Michigan-Dearborn. I have been in college for a few years now,
but I have some questions for you. I am really struggling with my
programming classes. Its hard to describe...I can understand small
scale programs, but when it comes to designing an application like
itunes(just as an example) I'm lost.
If someone came up to me and said I want you to design your own mp3
player, I would be completly lost. I guess I just get overwhelmed
with the steps it takes to make a huge program. Now onto my
questions:
1) How can I get better at programming? Are there any real good
books out there that i can learn from?
2) Is there anyway to understand the syntax better?
3) What languages should I learn? So far, I have had a C, C++, and
part of a JAVA class.

If you could help me out I would really appreciate it!!!
Thanks again,

Nathan
 
P

Phlip

Nathan said:
I am a Computer Science student attending classes at the University
of Michigan-Dearborn. I have been in college for a few years now,
but I have some questions for you. I am really struggling with my
programming classes. Its hard to describe...I can understand small
scale programs, but when it comes to designing an application like
itunes(just as an example) I'm lost.

Google for "refactoring" and "test driven development". They are among the
leading edge design techniques; they turn an inability to predict the "big
picture" from a liability into an advantage.
 
S

Steve Pope

I am a Computer Science student attending classes at the University
of Michigan-Dearborn. I have been in college for a few years now,
but I have some questions for you. I am really struggling with my
programming classes. Its hard to describe...I can understand small
scale programs, but when it comes to designing an application like
itunes(just as an example) I'm lost.
If someone came up to me and said I want you to design your own mp3
player, I would be completly lost.

There's not enough information to go on here, but doing design
engineering involves a core talent that some people are born with
and others are not. For your own benefit and career planning you're
going to have to at some point determine which of these categories you
are in. If you've plunged into several design projects and not
come up with anything that works, that is not a good sign. If
you've never held a job where someone paid you to design something
and was happy with the results, then you do not know yet whether
design engineering is for you -- although your talents may be
perfectly good for other types of engineering such as QA or test.

Not to be too negative. Some of the other replies have some
more positive advice than mine. Good luck.

Steve
 
D

dydx31

Thanks a lot for the replies guys. Ya see, when I was in my C
programming class, I got an A. I'm really good at coding 100 line
programs, but like i said,,,I guess I'm intimidated my HUGE
programs.
I guess practice makes perfect.
Next semester I plan on taking C over again(i had my C course over 2
years ago, so I've forgotten most of the important stuff that i need
to know). Anyone know of any Excellent books that explain C in an
indepth way? Thanks again for all your help.
 
P

Phlip

Nathan said:
Thanks a lot for the replies guys. Ya see, when I was in my C
programming class, I got an A. I'm really good at coding 100 line
programs, but like i said,,,I guess I'm intimidated my HUGE
programs.

Take C++. Used correctly (with std::string and std::vector instead of char *
and [], for example), C++ makes a passable "High Level Language".

C is a different language, forward-compatible, and it's designed for
low-level bit fiddling. You need design chops, including OO, so learn a
language that makes the OO easy.
 
M

mlimber

Thanks a lot for the replies guys. Ya see, when I was in my C
programming class, I got an A. I'm really good at coding 100 line
programs, but like i said,,,I guess I'm intimidated my HUGE
programs.

Well, if it's really a HUGE program, you won't be working alone. Try to
get in good with a professional mentor who knows his/her stuff on the
project and soak it up (cf.
http://www.parashift.com/c++-faq-lite/how-to-learn-cpp.html#faq-28.1).
I guess practice makes perfect.

That, too. Join some open-source effort that piques your interest if
you want more practice on a bigger project that involves others.
Next semester I plan on taking C over again(i had my C course over 2
years ago, so I've forgotten most of the important stuff that i need
to know). Anyone know of any Excellent books that explain C in an
indepth way? Thanks again for all your help.

No, but _Accelerated C++_ by Koenig and Moo is the best for
learning/relearning C++ from the ground up the right way. See also the
myriad book reviews at accu.org and this FAQ and its subsequents:

http://www.parashift.com/c++-faq-lite/how-to-learn-cpp.html#faq-28.4

Cheers! --M
 
T

Thomas Matthews

Hey guys,
I am a Computer Science student attending classes at the University
of Michigan-Dearborn. I have been in college for a few years now,
but I have some questions for you. I am really struggling with my
programming classes. Its hard to describe...I can understand small
scale programs, but when it comes to designing an application like
itunes(just as an example) I'm lost.
If someone came up to me and said I want you to design your own mp3
player, I would be completly lost. I guess I just get overwhelmed
with the steps it takes to make a huge program. Now onto my
questions:
1) How can I get better at programming? Are there any real good
books out there that i can learn from?
2) Is there anyway to understand the syntax better?
3) What languages should I learn? So far, I have had a C, C++, and
part of a JAVA class.

If you could help me out I would really appreciate it!!!
Thanks again,

Nathan

Search the web for: PSP Carnegie Mellon

--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.comeaucomputing.com/learn/faq/
Other sites:
http://www.josuttis.com -- C++ STL Library book
http://www.sgi.com/tech/stl -- Standard Template Library
 
A

Allan Wind

I'm really good at coding 100 line programs, but like i said,,,I
guess I'm intimidated my HUGE programs.

These days you break a huge program into modules. Modules are broken
into classes and methods or functions. Functions and methods ought to
be small. This is because no one can keep the details of a huge program
in their head.

To design things you work with different levels of abstraction again to
keep the number of things being tracked small. You may first work at
the level of modules, then classes, and then methods. If you have not I
advise you to look into UML, it will give you a language to express
this.

If you are just starting out then I advise you to read "The Practice of
Programming" by Brian W. Kerninghan and Rob Pike. It focused and a very
practical.


/Allan
 
D

dydx13

Thanks a lot for all the replies guys...thanks again!!! You've all
been such a great help! thanks!
 
D

David

Hello Nathan,

Hey guys,
I am a Computer Science student attending classes at the University
of Michigan-Dearborn. I have been in college for a few years now,
but I have some questions for you. I am really struggling with my
programming classes. Its hard to describe...I can understand small
scale programs, but when it comes to designing an application like
itunes(just as an example) I'm lost.
If someone came up to me and said I want you to design your own mp3
player, I would be completly lost. I guess I just get overwhelmed
with the steps it takes to make a huge program. Now onto my
questions:
1) How can I get better at programming? Are there any real good
books out there that i can learn from?

The best way to learn is by doing. Reading is certainly a good step.
Read everything that you feel like reading. You can get ideas from
just about anywhere.

As you gain experience with different areas of programming you will
feel cabable of tackling bigger problems. Hopefully as time goes on
you will understand how it all breaks down and combines again and
be able to solve larger problems.

Moving from a 100 line program to creating an MP3 Player is a big
step, but it really isn't that big. As you take more courses you
will explore other areas that may be helpful in such a project.
At some point you may take a course on databases or communications
or embedded devices. Each of these stresses something that might
help you create an MP3 Player. You can educate yourself by reading
and trying out new ideas. Get the concepts down, like playing with
a database, and then use it for some practical purpose, such as
managing a play list.

An MP3 Player is just a complex device like a car. Seeing a car
for the first time you may have no idea what all the parts are
doing. We learn in steps to create, maintain, and modify such
things. The problems you are currently working on are at the
detail level. You are given a problem to solve and perhaps
much of the knowledge to solve it. Now imagine your MP3 Player --
what must it contain and be able to do? It doesn't matter that
you can't sit down and describe it all and build it today. Can
you imagine the parts you might have to make? How do they all
fit together? It doesn't matter that your MP3 Player works
like another one. It only matters that you have designed
something a bit larger than you previously could. When you
have components that you can't readily build you may need to
do a little research or perhaps make some test projects.
You will learn from experience how to build larger projects
and it likely won't take you all that long to start imagining
doing them.
2) Is there anyway to understand the syntax better?

You can read, program, and hang out in these support groups.
Answer questions where you can, learn from others as you need to.
There are always books, manuals, and specifications for languages
-- read them. The most important concepts are those that you will
use. Few people know everything about C and C++, the important
aspect is that they were able to create something useful with what
they know.
3) What languages should I learn? So far, I have had a C, C++, and
part of a JAVA class.

Any and all languages are useful. Be fluent in the languages that
you want to work in. Explore the others to find concepts and ideas
that you may not have been exposed to. There is no end to the hype
of one language being better than another. It all depends on your
needs and goals. There is also the ability to decide that your
problem is best solved using several languages or tools. There
is nothing wrong with mixing C, C++, VBASIC, Forth, or Assembler.
Each has its strengths and weaknesses. You get to decide how best
to solve your problems and at other times you may need to maintain
and enhance projects in languages you aren't familair with. After
the first few dozen languages they all look the same and you may
be able to "sight read" new languages and be able to work with them.

Have fun,

David
 

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

Forum statistics

Threads
473,771
Messages
2,569,587
Members
45,099
Latest member
AmbrosePri
Top