views:

142

answers:

5

I have just started programming few days back ! working with C with data structure (array , linked list) and bit Linear Algebra(system of linear equation).

i dont have any definite plan right now... after looking at this chart ( http://bit.ly/cH2Jb1 ), I am bit confused ...

Could anyone suggest me as weather to follow this chart or something so that i have a clear idea of what i have to learn next ?

I am glad after checking out your suggestions, But surprisingly no one has commented on Maths... I know there is a deep relation between Programming and Maths, but I could not find out from where I should start hence I concluded that I should start from somewhere and i choosed Linear Algebra(system of linear equation) ? I need some suggestions on regarding this too ?

A: 

Please don't waste time on the chart. Please buy a book, do the entire book. Then look at the chart to decide what book to buy next.

What book are you using now? Please list the book you are using to learn C.

S.Lott
@ S.Lott: Well till now I have implemented data structures like array, linkedlist(singly,doubly) using C. And now creating a circular linkedlist in C and then cover other ADT too (stack,queue,tree,etc...)
Tuhin
@Tuhin: Please buy a book. Please follow the book. Please ignore the chart until you have followed the book all the way through.
S.Lott
@ S.Lott: I will ignore the chart for sure !
Tuhin
@Tuhin: Please buy a book. Please follow the book. The chart doesn't matter. A good book matters. Any book.
S.Lott
@ S.Lott: YASHWANT KANITKAR it is the author of the book "Let us C" that i am studying ....
Tuhin
@Tuhin: Then that's your plan. What more do you need to know?
S.Lott
@ S.Lott: Nothing more now ! Thanks for suggesting ...but i am regularly asking queries here ... one of them is http://stackoverflow.com/questions/3447724/what-will-be-the-complexity-of-the-operation-to-remove-an-element-from-the-end-of/3448672#3448672
Tuhin
A: 

My first question would be is C the language you want/need to learn? Some of the more modern languages can abstract away a lot of the "hard to do" parts from a language like C. Python, javascript or pretty much any .NET language (VB/C#/F#) will possibly be easier to learn. If you have a free choice of language then just do a google search for some code from each of the languages, take a look to see what the syntax is like and if it looks like something you could work with. If you are genuinely a newbie then don't discount the flexibility of tooling. This is an area that Microsoft excels at, additional things like LinqToSql, MVC and XNA are well integrated into the Visual Studio IDE and can help you see a bit more of what programming has to offer in a shorter space of time. Having said that once you're up to speed in one language be sure to look at other languages and you'll continue to develop skills.

Key to learning programming aside from the language is to have a fixed application in mind, something like a Caluclator or a simple word processor. Developing a complete application will help you immeasurably more than ticking boxes off a chart.

Dylan
+2  A: 

Start by taking any programming language and working through some of the problems at Project Euler. Then come up with an idea for a project you want to build, and build it, one piece at a time. It might be a website, a calculator, a command line app, a GUI app; doesn't matter.

Why C? It's not a bad choice, absolutely in my top five, and the #1 best choice for quite a few things. I'd say the other most popular general purpose languages are - in no specific order - C#, Java, Python, and C, with a second tier being C++ and Perl. PHP would make the list, but it's specifically tuned to web applications; it's not as general purpose as the rest.

edit:

The first course in a computer science degree program is usually "how to program". You'll work through an introductory book, maybe Deitel and Deitel (those are the authors of one of them).

In the second course, you'll learn data structures; how to efficiently store and work with data. Data structures would include linked lists, stacks, queues, trees, heaps, and hashtables.

As a general word of advice, if you're learning C, I'd probably pick up the book The C Programming Language by Kernighan and Richie. It's not designed to be a first programming book, so don't let it intimidate you! I mention it because I'd bet that every C programmer eventually owns a copy.

edit

For math, the useful things are often probability (permutations and combinations), logic (up through Demorgan's law), and inductive proofs (recursion!). The current book I've seen on the more theoretical half of this is Introduction to Mathematical Thinking, by Gilbert and Vanstone, while the book I learned on is fifteen years old and $5, Classical Algebra, also by the same authors.

For logic and probability, just look at Wikipedia for awhile, and go further if it interests you.

edit

Mark Weiss wrote a Data Structures book in Java, and another in C++; both were decent introductions to various ways of working with data. There are a lot of good data structures books.

The last book I'd recommend for learning to program is "Introduction to Algorithms", by Cormen, Leiserson, Rivest and Stein. This is a really large book, relatively heavy on math and theory, that covers the core of all modern algorithms today. It explains data structures as well, but much more from a theory angle instead of directly from practical code. It's awesome, but definitely not the first book you'd want to work through. I've also found that reading this book is much easier if I can go back to Wikipedia to get more examples of the same thing.

Lastly, the book I recommend for learning how to work on a software development team is The Pragmatic Programmer. Very little programming - lots of software development advice.

Dean J
@Dean J: Its a great resource for me "Project Euler" ...ThanksI have choosen C to solve them. Just to ask you solving these questions needs the concept of Data structure ?
Tuhin
@Tuhin; let me add to my answer.
Dean J
@Tuhin; I've added a suggestion for a mathematics text for you to my answer, along with some topics you might want to research online.
Dean J
@Dean J:Thanks a lot, I have started linear algebra at he beginning...While i was solving linked-list using C, I found out some exercises from the book of H. COREMEN chapter 10 (Can the dynamic set operation INSERT be implemented on a singly linked list in O(1) time ? How about Delete ?) bit tricky for me.coz i have used a loop 1. INSERTION AT THE END OF THE LIST2. INSERTION AFTER THE NODE IN THE LISTthen how to deal with the above O(1) time complexity ?
Tuhin
@Tuhin: When you insert into an (unsorted) set, you can just stick something at the end; no comparisons, and it's O(1). When you delete a specific item ("delete the number 7 from the list"), you have to *find* the number 7 first; that requires comparing all n items in the list, so it's O(n). If you want to move faster than O(n) to find something in a list, you can use a sorted binary tree, which is a really, really interesting structure.
Dean J
A: 

Try to get into design patterns as soon as possible. Knowing how to implement algorithms and such is neat, but it won't help much in the real world situations where you will be asked to implement something rather simple, but in a way that is according to the best practices.

Michael
A: 

College level textbooks are usually the best. Get one with lots of exercises and lots of real-life programming problems. When you finish them all, you will actually have experience (since you have to write the programs to solve the problems), not just knowledge.

After that, think of a fun project and try to make it happen.

Jeff Davis