Improving Programming Skills with Examples in Python
Michael Stueben

#Coding
#Programming
#Design
#Refactoring
#Python
Improve your coding skills and learn how to write readable code. Rather than teach basic programming, this book presumes that readers understand the fundamentals, and offers time-honed best practices for style, design, documenting, testing, refactoring, and more.
Taking an informal, conversational tone, author Michael Stueben offers programming stories, anecdotes, observations, advice, tricks, examples, and challenges based on his 38 years experience writing code and teaching programming classes. Trying to teach style to beginners is notoriously difficult and can easily appear pedantic. Instead, this book offers solutions and many examples to back up his ideas.
Good Habits for Great Coding distills Stueben's three decades of analyzing his own mistakes, analyzing student mistakes, searching for problems that teach lessons, and searching for simple examples to illustrate complex ideas. Having found that most learn by trying out challenging problems, and reflecting on them, each chapter includes quizzes and problems. The final chapter introduces dynamic programming to reduce complex problems to subcases, and illustrates many concepts discussed in the book.
Code samples are provided in Python and designed to be understandable by readers familiar with any modern programming language. At the end of this book, you will have acquired a lifetime of good coding advice, the lessons the author wishes he had learned when he was a novice.
What You'll Learn
Who This Book Is For
Students or novice programmers who have taken a beginning programming course and understand coding basics. Teachers will appreciate the author's road-tested ideas that they may apply to their own teaching.
Table of Contents
Part I: Not Learned in School
Chapter 1: A Coding Fantasy
Chapter 2: Coding Tricks
Chapter 3: Style
Chapter 4: More Coding Tricks
Part II: Coding Advice
Chapter 5: Function Design
Chapter 6: Self-Documenting Code
Chapter 7: Step-Wise Refinement
Chapter 8: Comments
Chapter 9: Stop Coding
Chapter 10: Testing
Chapter 11: Defensive Programming
Chapter 12: Refactoring
Chapter 13: Write the Tests First (Sometimes)
Chapter 14: Expert Advice
Part Ill: Perspective
Chapter 15: A Lesson in Design
Chapter 16: Beware of OOP
Chapter 17: The Evolution of a Function
Chapter 18: Do Not Snub Inefficient Algorithms
Part IV: Walk the Walk
Chapter 19: Problems Worth Solving
Chapter 20: Problem Solving
Chapter 21: Dynamic Programming
Michael Stueben started teaching Fortran at Fairfax High School in Virginia in 1977. Eventually the high school computer science curriculum changed from Fortran to BASIC, Pascal, C, C++, Java, and finally to Python. In the last five years, Stueben taught artificial intelligence at Thomas Jefferson High School for Science and Technology in Alexandria, VA. Along the way, he wrote a regular puzzle column for Discover Magazine, published articles in Mathematics Teacher and Mathematics Magazine, published a book on teaching high school mathematics: Twenty Years Before the Blackboard (Mathematical Association of America, 1998). In 2006 he received a Distinguished High School Mathematics Teaching / Edyth May Sliffe Award from the Mathematical Association of America.









