Today when taking a bath I got a good idea that it is an efficient and interesting way to learn a new programming language:
(These days I learn Python from the Python manual and feel a little bored....)
Learn programming by trying some little or large projects.
Don't expect to learn a language by reading many books or tutorials
Don't expect to learn a language by remember their syntaxs
Learning Model:
Determine a project
|--> List the Algorithm or pseudo-code
|--> Abstract knowledge and skill (which you will use in your project)
|--> Apply your knowledge and skill to accomplish project
|--> Debug
|--> Expand your knowledge and skill properly
|--> Produce document
So I begin a collection here and collect interesting projects.
You can try to accomplish each project using different languages.
And I will list what language I have used to program it following each project-name.
You can find the program source under in [Program Source] catagory.
Before programming, please abide by the Linux philosophy:
Little & Simple
Project List:
Text processing
String Reverse
Word&Letter Frequency Count
Coding & Decoding
base64 [C]
QR-code
HTML Generation
XML Analysis
ELF File Analysis
Compression Algorithm
Huffman Tree Algorithm
Encryption
RSA
DES
MD5
Primary Cipher Algorithm (from the Cryptography Theory and Practice Third Edition)
Web
Web Spider
Web Spider helping for backing up your blog...
Operating System & OS-Tools
Task Manager
Make your own OS
Study GDB, IDA and EDB. And try to modify EDB and make it better.