1 Think Python How to Think Like a Computer Scientist Version
3 Think Python How to Think Like a Computer Scientist Version Allen Downey Green Tea Press Needham, Massachusetts
4 Copyright 2008 Allen Downey. Printing history: April 2002: First edition of How to Think Like a Computer Scientist. August 2007: Major revision, changed title to How to Think Like a(python) Programmer. June 2008: Major revision, changed title to Think Python: How to Think Like a Computer Scientist. Green Tea Press 9 Washburn Ave Needham MA Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and with no Back-Cover Texts. The GNU Free Documentation License is available from or by writing to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA , USA. The original form of this book is LATEX source code. Compiling this LATEX source has the effect of generating a device-independent representation of a textbook, which can be converted to other formats and printed. The LATEX source for this book is available from
5 Preface The strange history of this book In January 1999 I was preparing to teach an introductory programming class in Java. I had taught it three times and I was getting frustrated. The failure rate in the class was too high and, even for students who succeeded, the overall level of achievement was too low. OneoftheproblemsIsawwasthebooks. Theyweretoobig,withtoomuchunnecessarydetailabout Java, and not enough high-level guidance about how to program. And they all suffered from the trap door effect: they would start out easy, proceed gradually, and then somewhere around Chapter 5 the bottom would fall out. The students would get too much new material, too fast, and I would spend therest ofthe semester picking up thepieces. Two weeks before thefirst day of classes,idecided towritemy own book. Mygoals were: Keep itshort. Itisbetter for students toread 10 pages than not read 50 pages. Be careful withvocabulary. I triedtominimize the jargon and define each termat firstuse. Build gradually. To avoid trap doors, I took the most difficult topics and split them into a series of small steps. Focus on programming, not the programming language. I included the minimum useful subset of Java and left out the rest. Ineeded atitle,soon awhim I chose How tothink Like acomputer Scientist. My first version was rough, but it worked. Students did the reading, and they understood enough that I could spend class time on the hard topics, the interesting topics and (most important) letting the students practice. I released the book under the GNU Free Documentation License, which allows users to copy, modify, and distribute the book. Whathappenednextisthecoolpart. JeffElkner,ahighschoolteacherinVirginia,adoptedmybook andtranslateditintopython. Hesentmeacopyofhistranslation,andIhadtheunusualexperience of learning Python by reading myown book. Jeff and I revised the book, incorporated a case study by Chris Meyers, and in 2001 we released How to Think Like a Computer Scientist: Learning with Python, also under the GNU Free Documentation License. As Green Tea Press, I published the book and started selling hard copies through Amazon.com and college book stores. Other books from Green Tea Press are available at greenteapress.com.
6 vi Chapter 0. Preface In 2003 I started teaching at Olin College and I got to teach Python for the first time. The contrast with Java was striking. Students struggled less, learned more, worked on more interesting projects, and generally had alot morefun. Over the last five years I have continued to develop the book, correcting errors, improving some of the examples and adding material, especially exercises. In 2008 I started work on a major revision at the same time, I was contacted by an editor at Cambridge University Press who was interested in publishing the next edition. Good timing! The resultisthis book, now withthe lessgrandiose titlethink Python. Some of thechanges are: I added a section about debugging at the end of each chapter. These sections present general techniques for finding and avoiding bugs, and warnings about Python pitfalls. I removed the material in the last few chapters about the implementation of lists and trees. I stilllove those topics, but Ithought they were incongruent withthe restof thebook. I added more exercises, ranging from short tests of understanding to a few substantial projects. I added a series of case studies longer examples with exercises, solutions, and discussion. SomeofthemarebasedonSwampy,asuiteofPythonprogramsIwroteforuseinmyclasses. Swampy, code examples, and some solutions are available from thinkpython.com. I expanded the discussion of program development plans and basic design patterns. The use of Python is more idiomatic. The book is still about programming, not Python, but now Ithink thebook gets moreleverage from thelanguage. Ihopeyouenjoyworkingwiththisbook,andthatithelpsyoulearntoprogramandthink,atleasta little bit, like a computer scientist. Allen B. Downey Needham MA Allen Downey is an Associate Professor of Computer Science at the Franklin W. Olin College of Engineering. Acknowledgements First and most importantly, I thank Jeff Elkner, who translated my Java book into Python, which got thisproject startedand introduced me towhat has turned out tobe myfavoritelanguage. I also thank Chris Meyers, who contributed several sections to How to Think Like a Computer Scientist. And I thank the Free Software Foundation for developing the GNU Free Documentation License, which helped make my collaboration with Jeff and Chris possible. Ialsothank theeditors at Lulu who worked on How tothink Like acomputer Scientist. I thank all the students who worked with earlier versions of this book and all the contributors(listed below) who sent in corrections and suggestions. AndIthankmywife,Lisa,forherworkonthisbook,andGreenTeaPress,andeverythingelse,too.
7 vii Contributor List More than 100 sharp-eyed and thoughtful readers have sent in suggestions and corrections over the past few years. Their contributions, and enthusiasm for this project, have been a huge help. If you have a suggestion or correction, please send to If I make a change based on your feedback, I will add you to the contributor list (unless you ask to be omitted). If you include at least part of the sentence the error appears in, that makes it easy for me to search. Page and section numbers arefine, too, but not quite as easytowork with. Thanks! Lloyd HughAllen sentinacorrection tosection8.4. Yvon Boulianne sentinacorrection of a semanticerror inchapter 5. Fred Bremmer submitted a correction in Section 2.1. Jonah Cohenwrote theperlscriptstoconvert thelatex sourcefor thisbook intobeautiful HTML. Michael Conlon sent in a grammar correction in Chapter 2 and an improvement in style in Chapter 1, and he initiated discussion on the technical aspects of interpreters. BenoitGirard sentinacorrection toahumorous mistakeinsection 5.6. CourtneyGleasonandKatherineSmithwrotehorsebet.py,whichwasusedasacasestudyinanearlier version ofthe book. Their program can nowbe foundon thewebsite. Lee Harr submitted more corrections than we have room to list here, and indeed he should be listed as one of the principaleditors of the text. James Kaylin is a student using the text. He has submitted numerous corrections. David Kershaw fixed the broken cattwice function in Section Eddie Lam has sent in numerous corrections to Chapters 1, 2, and 3. He also fixed the Makefile so that itcreates an indexthe firsttimeitis runand helped us setup aversioningscheme. Man-Yong Lee sentinacorrection to theexample code in Section2.4. David Mayo pointed out that the word unconsciously in Chapter 1 needed to be changed to subconsciously. Chris McAloon sent in several corrections to Sections 3.9 and Matthew J. Moelter has been a long-time contributor who sent in numerous corrections and suggestions to thebook. Simon Dicon Montford reported a missing function definition and several typos in Chapter 3. He also found errors in the increment function in Chapter 13. John Ouzts corrected the definition of return value in Chapter 3. Kevin Parks sent in valuable comments and suggestions as to how to improve the distribution of the book. David Pool sentinatypo intheglossaryof Chapter 1,as well as kindwords of encouragement. Michael Schmitt sentinacorrection tothe chapter onfiles andexceptions. Robin Shaw pointed out an error in Section 13.1, where the printtime function was used in an example without being defined. Paul Sleigh found an error in Chapter 7 and a bug in Jonah Cohen s Perl script that generates HTML from LaTeX. Craig T. Snydal is testing the text in a course at Drew University. He has contributed several valuable suggestions and corrections. Ian Thomas and his students are using the text in a programming course. They are the first ones to test the chapters in the latter half of the book, and they have made numerous corrections and suggestions.
8 viii Chapter 0. Preface Keith Verheyden sentin acorrection inchapter 3. Peter Winstanley letus know about alongstanding error inour LatininChapter 3. ChrisWrobel made corrections tothecode inthe chapter onfilei/o andexceptions. Moshe Zadka has made invaluable contributions to this project. In addition to writing the first draft of the chapter on Dictionaries, he provided continual guidance in the early stages of the book. Christoph Zwerschke sent several corrections and pedagogic suggestions, and explained the difference between gleich and selbe. James Mayer sent us a whole slew of spelling and typographical errors, including two in the contributor list. Hayden McAfee caught a potentially confusing inconsistency between two examples. Angel Arnal is part of an international team of translators working on the Spanish version of the text. He has also found several errors in the English version. Tauhidul Hoque and Lex Berezhny created the illustrations in Chapter 1 and improved many of the other illustrations. Dr. Michele Alzetta caught an error in Chapter 8 and sent some interesting pedagogic comments and suggestions about Fibonacci and Old Maid. Andy Mitchell caught atypoin Chapter 1and abroken example inchapter 2. Kalin Harvey suggested a clarification in Chapter 7 and caught some typos. Christopher P.Smithcaught several typos and ishelping us prepare to update thebook for Python2.2. David Hutchins caught atypo intheforeword. Gregor Lingl is teaching Python at a high school in Vienna, Austria. He is working on a German translation of thebook, andhe caught acouple of bad errorsin Chapter 5. JuliePeters caught a typointhe Preface. FlorinOprina sentinan improvement inmaketime, acorrection inprinttime, and anice typo. D. J.Webre suggestedaclarification inchapter 3. Ken found afistfulof errors inchapters 8,9and 11. Ivo Wever caught a typoinchapter 5 andsuggested aclarification inchapter 3. Curtis Yanko suggested a clarification in Chapter 2. BenLogan sentinanumber of typos and problems withtranslatingthe book intohtml. JasonArmstrongsawthe missingword inchapter 2. Louis Cordier noticed aspotinchapter 16where the code didn tmatch thetext. Brian Cain suggested several clarifications in Chapters 2 and 3. RobBlack sentinapasselof corrections,including some changes forpython 2.2. Jean-Philippe Rey at Ecole Centrale Paris sent a number of patches, including some updates for Python 2.2 and other thoughtful improvements. Jason Mader at George Washington University made a number of useful suggestions and corrections. Jan Gundtofte-Bruun reminded us that a error is an error. Abel David and Alexis Dinno reminded us that the plural of matrix is matrices, not matrixes. This errorwasinthebookforyears,buttworeaderswiththesameinitialsreporteditonthesameday. Weird. Charles Thayer encouraged us to get rid of the semi-colons we had put at the ends of some statements and toclean up our useof argument and parameter. Roger Sperberg pointed outatwisted piece of logicin Chapter 3. Sam Bullpointed out aconfusingparagraph inchapter 2. Andrew Cheung pointed out two instances of use before def.
9 ix C.CoreyCapelspotted themissingword inthethirdtheorem of Debugging and atypo inchapter 4. Alessandra helped clear up some Turtle confusion. Wim Champagne found a brain-o in a dictionary example. Douglas Wrightpointed out aproblem withfloor divisioninarc. Jared Spindor foundsomejetsam attheend of asentence. Lin Peiheng sent a number of very helpful suggestions. Ray Hagtvedt sent in two errors and a not-quite-error. Torsten Hübsch pointed out an inconsistency in Swampy. Inga Petuhhov corrected an example in Chapter 14. Arne Babenhauserheide sent several helpful corrections. MarkE.Casidais isgood atspottingrepeated words. Scott Tyler filledin athatwas missing. Andthen sentinaheap of corrections. Gordon Shephard sent in several corrections, all in separate s. Andrew Turnerspottedan error inchapter 8. Adam Hobart fixed aproblem withfloor divisioninarc. Daryl Hammond and Sarah Zimmerman pointed out that I served up math.pi too early. And Zim spotted a typo. George SassfoundabuginaDebugging section. Brian Bingham suggested Exercise Leah Engelbert-Fenton pointed out that I used tuple as a variable name, contrary to my own advice. And then foundabunch of typos and a use beforedef. JoeFunke spottedatypo. Chao-chao Chen found an inconsistency in the Fibonacci example. Jeff Paine knows the difference between space and spam. Lubos Pintes sentinatypo. Gregg Lind and Abigail Heithoff suggested Exercise Max Hailperin has sent in a number of corrections and suggestions. Max is one of the authors of the extraordinary Concrete Abstractions, which you might want to read when you are done with this book. Chotipat Pornavalai found an error in an error message. Stanislaw Antol sent a list of very helpful suggestions. Eric Pashman sent a number of corrections for Chapters Miguel Azevedo found some typos. Jianhua Liusentinalong listof corrections. Nick King foundamissingword. MartinZuther sentalonglistof suggestions. Adam Zimmerman found an inconsistency in my instance of an instance and several other errors. Ratnakar Tiwari suggested a footnote explaining degenerate triangles. Anurag Goel suggested another solution for is_abecedarian and sent some additional corrections. And he knows how tospelljaneausten. Kelli Kratzer spottedone of thetypos. Mark Griffiths pointed out a confusing example in Chapter 3. Roydan Ongie foundan errorin mynewton s method.
10 x Chapter 0. Preface Patryk Wolowiec helped mewith aproblem inthehtml version. MarkChonofskytoldme about anew keyword inpython 3.0. Russell Coleman helped me with my geometry. Wei Huang spotted several typographical errors. Karen Barber spottedthe theoldest typointhe book. Nam Nguyen found a typo and pointed out that I used the Decorator pattern but didn t mention it by name. Stéphane Morin sent in several corrections and suggestions.
11 Contents Preface v 1 The way of the program The Python programming language What isaprogram? What isdebugging? Formal and natural languages The first program Debugging Glossary Exercises Variables, expressions and statements Values and types Variables Variable names and keywords Statements Operators and operands Expressions Order of operations String operations Comments Debugging Glossary Exercises
12 xii Contents 3 Functions Function calls Type conversion functions Math functions Composition Adding new functions Definitions and uses Flow of execution Parameters and arguments Variables and parameters arelocal Stack diagrams Fruitful functions and void functions Why functions? Debugging Glossary Exercises Case study: interface design TurtleWorld Simple repetition Exercises Encapsulation Generalization Interface design Refactoring A development plan docstring Debugging Glossary Exercises
13 Contents xiii 5 Conditionals and recursion Modulus operator Boolean expressions Logical operators Conditional execution Alternative execution Chained conditionals Nested conditionals Recursion Stack diagrams for recursive functions Infinite recursion Keyboard input Debugging Glossary Exercises Fruitful functions Return values Incremental development Composition Boolean functions More recursion Leap of faith One more example Checking types Debugging Glossary Exercises
14 xiv Contents 7 Iteration Multipleassignment Updating variables Thewhilestatement break Square roots Algorithms Debugging Glossary Exercises Strings A stringisasequence len Traversal withaforloop String slices Strings areimmutable Searching Looping and counting stringmethods Theinoperator String comparison Debugging Glossary Exercises Case study: word play Reading wordlists Exercises Search Looping withindices Debugging Glossary Exercises
15 Contents xv 10 Lists A listisasequence Listsaremutable Traversing alist Listoperations Listslices Listmethods Map, filter and reduce Deleting elements Listsand strings Objects and values Aliasing Listarguments Debugging Glossary Exercises Dictionaries Dictionary as a setof counters Looping and dictionaries Reverse lookup Dictionaries and lists Memos Global variables Long integers Debugging Glossary Exercises
16 xvi Contents 12 Tuples Tuples are immutable Tuple assignment Tuples as returnvalues Variable-length argument tuples Listsand tuples Dictionaries and tuples Comparing tuples Sequences of sequences Debugging Glossary Exercises Case study: data structure selection Word frequency analysis Random numbers Word histogram Most common words Optional parameters Dictionary subtraction Random words Markov analysis Data structures Debugging Glossary Exercises Files Persistence Reading and writing Format operator Filenames and paths
17 Contents xvii 14.5 Catching exceptions Databases Pickling Pipes Writingmodules Debugging Glossary Exercises Classes and objects User-defined types Attributes Rectangles Instances as returnvalues Objects aremutable Copying Debugging Glossary Exercises Classes and functions Time Pure functions Modifiers Prototyping versus planning Debugging Glossary Exercises
18 xviii Contents 17 Classes and methods Object-oriented features Printing objects Another example A more complicated example The init method The str method Operator overloading Type-based dispatch Polymorphism Debugging Glossary Exercises Inheritance Card objects Class attributes Comparing cards Decks Printing thedeck Add, remove, shuffle and sort Inheritance Class diagrams Debugging Glossary Exercises Case study: Tkinter GUI Buttons and callbacks Canvas widgets Coordinate sequences
19 Contents xix 19.5 More widgets Packing widgets Menus and Callables Binding Debugging Glossary Exercises A Debugging 197 A.1 Syntax errors A.2 Runtime errors A.3 Semantic errors
20 xx Contents
21 Chapter 1 The way ofthe program The goal of this book is to teach you to think like a computer scientist. This way of thinking combines some of the best features of mathematics, engineering, and natural science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions. The single most important skill for a computer scientist is problem solving. Problem solving means the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That s why this chapter is called, The way of the program. Ononelevel,youwillbelearningtoprogram,ausefulskillbyitself. Onanotherlevel,youwilluse programming as ameans toan end. As wego along, that end willbecome clearer. 1.1 The Python programming language The programming language you will learn is Python. Python is an example of a high-level language; other high-level languages you might have heard of arec, C++, Perl, and Java. There are also low-level languages, sometimes referred to as machine languages or assembly languages. Loosely speaking, computers can only execute programs written in low-level languages. So programs written in a high-level language have to be processed before they can run. This extra processing takes some time, which is a small disadvantage of high-level languages. The advantages are enormous. First, it is much easier to program in a high-level language. Programs written in a high-level language take less time to write, they are shorter and easier to read, and they are more likely to be correct. Second, high-level languages are portable, meaning that they can run on different kinds of computers with few or no modifications. Low-level programs can run on only one kind of computer and have toberewritten torun onanother. Due to these advantages, almost all programs are written in high-level languages. Low-level languages are used only for a few specialized applications. Two kinds of programs process high-level languages into low-level languages: interpreters and compilers. An interpreter reads a high-level program and executes it, meaning that it does what the
Think Python Wikibooks.org March 16, 2013 On the 28th of April 2012 the contents of the English as well as German Wikibooks and Wikipedia projects were licensed under Creative Commons Attribution-ShareAlike
How to Think Like a (Python) Programmer Version 0.9.10 ii How to Think Like a (Python) Programmer Version 0.9.10 Allen Downey Green Tea Press Needham, Massachusetts Copyright c 2007 Allen Downey. Printing
Computer Programming Course Details An Introduction to Computational Tools Prof. Mauro Gaspari: email@example.com Road map for today The skills that we would like you to acquire: to think like a computer
How to Think Like a Computer Scientist Learning with Python ii How to Think Like a Computer Scientist Learning with Python Allen Downey Jeffrey Elkner Chris Meyers Green Tea Press Wellesley, Massachusetts
How to Think Like a Computer Scientist How to Think Like a Computer Scientist: Learning with Python 2nd Edition documentation next index How to Think Like a Computer Scientist: Learning with Python 2nd
How to Think Like a Computer Scientist: Learning with Python Documentation Jeffrey Elkner, Allen B. Downey and Chris Meyers October 21, 2015 CONTENTS 1 Learning with Python 3 1.1 Copyright Notice...................................
How to Think Like a Computer Scientist C Version Allen B. Downey C-Version by Thomas Scheffler Version 1.08 November 25th, 2012 2 Copyright (C) 1999 Allen B. Downey This book is an Open Source Textbook
COMP150: Practical Programming (in Python) Jeffrey Elkner Allen B. Downey Chris Meyers Brendan McCane Iain Hewson Nick Meek June 22, 2009 ii Contents 1 The way of the program 1 1.1 The Python programming
WEEK ONE Introduction to Python Python is such a simple language to learn that we can throw away the manual and start with an example. Traditionally, the first program to write in any programming language
http://www.webcartoonmaker.com Copyright Information This book is an Open Source Textbook (OST). Permission is granted to reproduce, store or transmit the text of this book by any means, electrical, mechanical,
How to Think Like a Computer Scientist Java Version ii How to Think Like a Computer Scientist Java Version Allen B. Downey Version 4.0 March 6, 2003 Copyright c 2003 Allen Downey. Permission is granted
Think Java How to Think Like a Computer Scientist Allen B. Downey 5.1.2 Copyright 2012 Allen Downey. Permission is granted to copy, distribute, transmit and adapt this work under a Creative Commons Attribution-NonCommercial-ShareAlike
How to think like a computer scientist Allen B. Downey November 2012 2 How to think like a computer scientist C++ Version Copyright (C) 2012 Allen B. Downey Permission is granted to copy, distribute, and/or
LING115 Lecture Note Session #4 Python (1) 1. Introduction As we have seen in previous sessions, we can use Linux shell commands to do simple text processing. We now know, for example, how to count words.
PHP Debugging Draft: March 19, 2013 2013 Christopher Vickery Introduction Debugging is the art of locating errors in your code. There are three types of errors to deal with: 1. Syntax errors: When code
River Dell Regional School District Computer Programming with Python Curriculum 2015 Mr. Patrick Fletcher Superintendent River Dell Regional Schools Ms. Lorraine Brooks Principal River Dell High School
Exercise 4 Learning Python language fundamentals Work with numbers Python can be used as a powerful calculator. Practicing math calculations in Python will help you not only perform these tasks, but also
Welcome to Introduction to programming in Python Suffolk One, Ipswich, 4:30 to 6:00 Tuesday Jan 14, Jan 21, Jan 28, Feb 11 Welcome Fire exits Toilets Refreshments 1 Learning objectives of the course An
Introduction Welcome to our Python sessions. University of Hull Department of Computer Science Wrestling with Python Week 01 Playing with Python Vsn. 1.0 Rob Miles 2013 Please follow the instructions carefully.
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
VISUAL GUIDE to RX Scripting for Roulette Xtreme - System Designer 2.0 UX Software - 2009 TABLE OF CONTENTS INTRODUCTION... ii What is this book about?... iii How to use this book... iii Time to start...
Variables, Expressions, and Statements Chapter 2 Python for Informatics: Exploring Information www.pythonlearn.com Constants Fixed values such as numbers, letters, and strings are called constants because
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 28, 2010 G. Lipari (Scuola Superiore Sant Anna) Introduction
Domains and Competencies DOMAIN I TECHNOLOGY APPLICATIONS CORE Standards Assessed: Computer Science 8 12 I VII Competency 001: The computer science teacher knows technology terminology and concepts; the
Charles Dierbach Wiley Contents Preface Acknowledgments About the Author XXI xxv xxvii Introduction 1 MOTIVATION 2 FUNDAMENTALS 2 1.1 What Is Computer Science? 2 1.1.1 The Essence of Computational Problem
Thomas Jefferson High School for Science and Technology Program of Studies Accelerated Foundations of Computer Science as of April 2013 Unit of Study / Accelerated Foundations of Computer Science is offered
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
How to Think Like a Computer Scientist How to Think Like a Computer Scientist: Learning with Python How to Think Like a Computer Scientist: Learning with Python» next index How to Think Like a Computer
[Mechanical Translation, vol.5, no.1, July 1958; pp. 25-41] A Programming Language for Mechanical Translation Victor H. Yngve, Massachusetts Institute of Technology, Cambridge, Massachusetts A notational
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture
Chapter 12 Programming Concepts and Languages Chapter 12 Programming Concepts and Languages Paradigm Publishing, Inc. 12-1 Presentation Overview Programming Concepts Problem-Solving Techniques The Evolution
COLLEGE ALGEBRA Paul Dawkins Table of Contents Preface... iii Outline... iv Preliminaries... Introduction... Integer Exponents... Rational Exponents... 9 Real Exponents...5 Radicals...6 Polynomials...5
Python Programming: An Introduction To Computer Science Chapter 8 Booleans and Control Structures Python Programming, 2/e 1 Objectives æ To understand the concept of Boolean expressions and the bool data
s CMPS 5P (Professor Theresa Migler-VonDollen ): Assignment #8 Problem 6 Problem 1 Programming Exercises Modify the recursive Fibonacci program given in the chapter so that it prints tracing information.
Preface This book is an introduction to computer science. It is intended for beginning CS majors or students from other fields who want a general introduction to computer science and computer programming.
Chapter 2 Writing Simple Programs Objectives To know the steps in an orderly software development process. To understand programs following the Input, Process, Output (IPO) pattern and be able to modify
Problem 3 If A is divided by B the result is 2/3. If B is divided by C the result is 4/7. What is the result if A is divided by C? Suggested Questions to ask students about Problem 3 The key to this question
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: firstname.lastname@example.org Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
PGR Computing Programming Skills Dr. I. Hawke 2008 1 Introduction The purpose of computing is to do something faster, more efficiently and more reliably than you could as a human do it. One obvious point
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
The Basics of C Programming Marshall Brain Last updated: October 30, 2013 Contents 1 C programming 1 What is C?................................. 2 The simplest C program, I........................ 2 Spacing
Unit- I Introduction to c Language: C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating
Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented
Introduction to C++ January 4, 2011 Massachusetts Institute of Technology 6.096 Lecture 1 Notes: Introduction 1 Compiled Languages and C++ 1.1 Why Use a Language Like C++? At its core, a computer is just
Computer Programming I & II* Career Cluster Information Technology Course Code 10152 Prerequisite(s) Computer Applications, Introduction to Information Technology Careers (recommended), Computer Hardware
Udacity cs101: Building a Search Engine Unit 1: How to get started: your first program Extracting a Link Introducing the Web Crawler (Video: Web Crawler)... 2 Quiz (Video: First Quiz)...2 Programming (Video:
ACADEMIC YEAR: 0 7 VALLIAMMAI ENGINEERING COLLEGE SRM NAGAR, KATTANKULATHUR 0 0 SEMESTER: ODD BRANCH: MCA YEAR: I SEMESTER: I SUBJECT CODE AND NAME: MC70 Problem Solving and Programming NAME OF THE FACULTY
Chapter 1 1.1Reasons for Studying Concepts of Programming Languages a) Increased ability to express ideas. It is widely believed that the depth at which we think is influenced by the expressive power of
Curriculum Map Discipline: Computer Science Course: C++ August/September: How can computer programs make problem solving easier and more efficient? In what order does a computer execute the lines of code
Computer Science 217 Midterm Exam Fall 2009 October 29, 2009 Name: ID: Instructions: Neatly print your name and ID number in the spaces provided above. Pick the best answer for each multiple choice question.
Object Calisthenics 9 steps to better software design today, by Jeff Bay http://www.xpteam.com/jeff/writings/objectcalisthenics.rtf http://www.pragprog.com/titles/twa/thoughtworks-anthology We ve all seen
Fundamental Computer Science Concepts Sequence TCSU CSCI SEQ A A. Description Introduction to the discipline of computer science; covers the material traditionally found in courses that introduce problem
Caltech/LEAD Summer 2012 Computer Science Lecture 2: July 10, 2012 Introduction to Python The Python shell Outline Python as a calculator Arithmetic expressions Operator precedence Variables and assignment
Extracted from: Practical Programming, 2nd Edition An Introduction to Computer Science Using Python 3 This PDF file contains pages extracted from Practical Programming, 2nd Edition, published by the Pragmatic
Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks
LEARNING TO PROGRAM WITH PYTHON Richard L. Halterman Copyright 2011 Richard L. Halterman. All rights reserved. i Contents 1 The Context of Software Development 1 1.1 Software............................................
Access Tutorial 12: An Introduction to Visual Basic 12.1 Introduction: Learning the basics of programming Programming can be an enormously complex and difficult activity. Or it can be quite straightforward.
Visual Logic Instructions and Assignments Visual Logic can be installed from the CD that accompanies our textbook. It is a nifty tool for creating program flowcharts, but that is only half of the story.
A Concrete Introduction to the Abstract Concepts of Integers and Algebra using Algebra Tiles Table of Contents Introduction... 1 page Integers 1: Introduction to Integers... 3 2: Working with Algebra Tiles...
CS 106 Introduction to Computer Science I 01 / 21 / 2014 Instructor: Michael Eckmann Today s Topics Introduction Homework assignment Review the syllabus Review the policies on academic dishonesty and improper
PROBLEM SOLVING WITH SEVENTH EDITION WALTER SAVITCH UNIVERSITY OF CALIFORNIA, SAN DIEGO CONTRIBUTOR KENRICK MOCK UNIVERSITY OF ALASKA, ANCHORAGE PEARSON Addison Wesley Boston San Francisco New York London
SOFTWARE DEVELOPMENT, 15.1200.40 1.0 APPLY PROBLEM-SOLVING AND CRITICAL THINKING SKILLS TO INFORMATION TECHNOLOGY 1.1 Describe methods and considerations for prioritizing and scheduling software development
Balanced Assessment Test Algebra 2008 Core Idea Task Score Representations Expressions This task asks students find algebraic expressions for area and perimeter of parallelograms and trapezoids. Successful
Chapter 2: Elements of Java Basic components of a Java program Primitive data types Arithmetic expressions Type casting. The String type (introduction) Basic I/O statements Importing packages. 1 Introduction
The Fundamentals of C++ Basic programming elements and concepts JPC and JWD 2002 McGraw-Hill, Inc. Program Organization Program statement Definition Declaration Action Executable unit Named set of program
4 Programming Languages & Tools Almost any programming language one is familiar with can be used for computational work (despite the fact that some people believe strongly that their own favorite programming
CSCE 110 Programming Basics of Python: Variables, Expressions, and nput/output Dr. Tiffani L. Williams Department of Computer Science and Engineering Texas A&M University Fall 2011 Python Python was developed
Experiences with Online Programming Examinations Monica Farrow and Peter King School of Mathematical and Computer Sciences, Heriot-Watt University, Edinburgh EH14 4AS Abstract An online programming examination
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
Chapter One Introduction to Programming 1-1 Algorithm and Flowchart Algorithm is a step-by-step procedure for calculation. More precisely, algorithm is an effective method expressed as a finite list of
CS101 Lecture 24: Thinking in Python: Input and Output Variables and Arithmetic Aaron Stevens 28 March 2011 1 Overview/Questions Review: Programmability Why learn programming? What is a programming language?
CS 40 Computing for the Web Art Lee January 20, 2015 Announcements Course web on Sakai Homework assignments submit them on Sakai Email me the survey: See the Announcements page on the course web for instructions
Chapter 3 Input and output The programs we ve looked at so far just display messages, which doesn t involve a lot of real computation. This chapter will show you how to read input from the keyboard, use
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Chapter 4: Control Structures I (Selection) Objectives In this chapter, you will: Learn about control structures Examine relational
Random Fibonacci-type Sequences in Online Gambling Adam Biello, CJ Cacciatore, Logan Thomas Department of Mathematics CSUMS Advisor: Alfa Heryudono Department of Mathematics University of Massachusetts
1 vk» Java 7 Recipes (,\['«** - < g!p#«josh Juneau Carl Dea Freddy Guime John O'Conner Contents J Contents at a Glance About the Authors About the Technical Reviewers Acknowledgments Introduction iv xvi
A First Book of C++ Chapter 2 Data Types, Declarations, and Displays Objectives In this chapter, you will learn about: Data Types Arithmetic Operators Variables and Declarations Common Programming Errors
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named