
Loading ...
- Author: Eric C. R. Hehner
- Edition: 2007-5-30
- Format: PDF, PS (lecture visuals in PDF, only)
- Language: English, Chinese
- Price: free
This book is a beginners level non language specific introduction to programming. All technical terms used are explained. Each new term is underlined. There are no abbreviations, acronyms, or other obscurities of language to confuse you. No previous knowledge or experience is assumed.
Chapters Include:
- Basic Theories
- Basic Data Structures
- Function Theory
- Program Theory
- Programming Language
- Recursive Definition
- Theory Design and Implementation
- Concurrency
- Interaction
- Exercises
- Reference
Solutions to exercises are available to course instructors.
http://www.cs.toronto.edu/~hehner/aPToP/

Loading ...
- Author: Robert L Read
- Format: online HTML
- Price: free
This book presents the basics of how to be a programmer, without being language specific. It is geared towards beginners, intermediate, and advanced level programmers, presenting many skills that are ignored in other programming books.
Chapters include:
- How to Debug by Splitting the Problem Space
- How to Remove an Error
- How to Debug Using a Log
- How to Understand Performance Problems
- How to Fix Performance Problems
- How to Optimize Loops
- How to Deal with I/O Expense
- How to Manage Memory
- How to Deal with Intermittent Bugs
- How to Learn Design Skills
- How to Conduct Experiments
- Why Estimation is Important
- How to Estimate Programming Time
- How to Find Out Information
- How to Utilize People as Information Sources
- How to Document Wisely
- How to Work with Poor Code
- How to Use Source Code Control
- How to Unit Test
- How to Recognize When to Go Home
- How to Deal with Difficult People
- How to Stay Motivated
- How to be Widely Trusted
- How to Tradeoff Time vs. Space
- How to Stress Test
- How to Balance Brevity and Abstraction
- How to Learn New Skills
- How to Do Integration Testing
- How to analyze data
- How to Manage Development Time
- How to Manage Third-Party Software Risks
- How to Manage Consultants
- How to Communicate the Right Amount
- How to Disagree Honestly and Get Away with It
- How to Tradeoff Quality Against Development Time
- How to Manage Software System Dependence
- How to Decide if Software is Too Immature
- How to Make a Buy vs. Build Decision
- How to Grow Professionally
- How to Evaluate Interviewees
- How to Know When to Apply Fancy Computer Science
- How to Talk to Non-Engineers
- How to Tell the Hard From the Impossible
- How to Utilize Embedded Languages
- How to Fight Schedule Pressure
- How to Understand the User
- How to Get a Promotion
- How to Develop Talent
- How to Choose What to Work On
- How to Get the Most From Your Teammates
- How to Divide Problems Up
- How to Handle Boring Tasks
- How to Gather Support for a Project
- How to Grow a System
- How to Communicate Well
- How to Tell People Things They Don’t Want to Hear
- How to Deal with Managerial Myths
- How to Deal with Organizational Chaos
http://samizdat.mines.edu/howto/HowToBeAProgrammer.html