|
计算机--[zz]CS入门看什么书?
发信站: BBS 未名空间站 (Wed Nov 21 11:17:52 2012, 美东)
发信人: oceanfrog (jeremy), 信区: Biology
标 题: Re: CS入门看什么书?
发信站: BBS 未名空间站 (Wed Feb 13 15:42:52 2008)
: 计算机的核心课程有 Data Structure, Algorithm, Database, Operating System,
: Computer Architecture等,后两门偏硬件,前两门偏数学分析。
: 大部分学CS的出去之后就是做程序员,整天编程。所以你要是没有明确的方向,从现在
: 开始天天练习编程就可以了。比如 C++ Primer,
再看看 Introduction to Algorithm。
---------------------------------
This is definitely a bad suggestion for newbie + self-learner. This book is
too tough for them.
My suggestion:
1. Week 1.
learn to love programming first.
First thing you need to learn is to learn to setup a coding environment. It
could be very hard even for experienced programmer.
Basically there are two choices: windows and linux.
Windows: MS Visual studio. Good for starters for c and c++. To fully
understand the build system of visual studio is not easy, but program simple
program to start is not bad.
Netbeans for Java. It is very easy to get started.
Linux:
Netbeans for java
I don't know what's good for c++. I used emacs, but hard for beginner. Even
I myself don't know how to config everything the way I want(You need to know
Lisp.)
For simple projects, just start with vi and gcc. You may feel it is very
stupid compare to other tools, but that is the starting point.
You have to lean make files sooner or later, even for microsoft projects.
2. Week 2 - Week 4
Start with Java probably is the easiest way.
C++ is too difficult to start initially.
Learning C, well, if you know how to ski, is just like learning wedge. You
have to unlearn it later. So it is not efficient to learn C first.
Java is easy to learn, but its shields to much from the details. You still
probably need to come back to C later.
In general, if you want to start fast, pick Java or C#.
If you want to lay solid foundation slowly, learn c and c++.
You need to learn basic C in 1 month and practice to master it in 3 month.
then let's go to next stage.
3. Month 2 - Month 3
You should have general idea about programming by now.
Learn BASIC Data structure and algorithm. You need to understand the topics,
but do not need to master every detail. You will get frustrated.
Programming is fun, but debugging a quick sort is not. Nobody can write
perfect quick sort and most people don't care.
However, understanding the general ideas of queue, stack, vector, link-list,
tree, graph, map, hashtable is very important.
4. Month 4 - Month 6
When you got basic understaning in data structure and algorithm, you can
start more advanced coding practices.
Now its time to learn STL (for c++) and containers (for Java and c#). You
will find everything you learn from the past week has been built already and
you know what to use.
Meanwhile, you are gaining experiences in the language itself.
5. Month7 - month12
Advanced topics:
a. Object oriented analysis and design.
(There is no single good book about it. The bible Design Pattern is just not
for inexperienced programmers. Mere UML is next to nothing. You need to
find a good teacher. This is the core of the business. It makes a huge
difference. I got a real good teacher. Two hours enlightened my whole career
.)
You need to master polymorphism/inheritance and appreciate encapsulation.
Later you will appreciate abstraction and polymorphism.
It is not easy and a very long way to go.
b. OS, DB, other topics
You can start to learn these topics by now.
c. GUI programming or web programming
Based on your interest, you can start some serious project now.
MS VS is a good tool.
Java swing is good.
You can download some projects from online and start to play with it.
You will find assembling your own media player application is no harder to
assembling a computer when you get familiarized with certain topics.
By the end of the first year, after hard studying and practicing, you should
be a good amateur programmer.
(To be a professional, the above is far from adequate. You need to
systematically learn the subject, ie, to get a degree.)
|
|