Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming 2nd Edition Jessen Havill
Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming 2nd Edition Jessen Havill
Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming 2nd Edition Jessen Havill
https://textbookfull.com/product/discovering-computer-science-
interdisciplinary-problems-principles-and-python-programming-2nd-
edition-jessen-havill-2/
https://textbookfull.com/product/discovering-computer-science-
interdisciplinary-problems-principles-and-python-programming-1st-
edition-jessen-havill/
https://textbookfull.com/product/discovering-computer-science-
interdisciplinary-problems-principles-and-python-programming-
first-edition-jessen-havill/
https://textbookfull.com/product/biota-grow-2c-gather-2c-cook-
loucas/
Python Programming An Introduction to Computer Science
John M. Zelle
https://textbookfull.com/product/python-programming-an-
introduction-to-computer-science-john-m-zelle/
https://textbookfull.com/product/python-programming-an-
introduction-to-computer-science-3rd-edition-john-m-zelle/
https://textbookfull.com/product/data-science-from-scratch-first-
principles-with-python-2nd-edition-joel-grus/
https://textbookfull.com/product/data-science-from-scratch-first-
principles-with-python-2nd-edition-grus-joel/
https://textbookfull.com/product/practical-programming-an-
introduction-to-computer-science-using-python-3-6-3rd-edition-
paul-gries/
Discovering Computer Science
Chapman & Hall/CRC
Textbooks in Computing
Series Editors
John Impagliazzo
Andrew McGettrick
Pascal Hitzler, Markus Krötzsch, and Sebastian Rudolph, Foundations of Semantic Web Technologies
Henrik Bœrbak Christensen, Flexible, Reliable Software: Using Patterns and Agile Development
John S. Conery, Explorations in Computing: An Introduction to Computer Science
Lisa C. Kaczmarczyk, Computers and Society: Computing for Good
Mark Johnson, A Concise Introduction to Programming in Python
Paul Anderson, Web 2.0 and Beyond: Principles and Technologies
Henry Walker, The Tao of Computing, Second Edition
Ted Herman, A Functional Start to Computing with Python
Mark Johnson, A Concise Introduction to Data Structures Using Java
David D. Riley and Kenny A. Hunt, Computational Thinking for the Modern Problem Solver
Bill Manaris and Andrew R. Brown, Making Music with Computers: Creative Programming in Python
John S. Conery, Explorations in Computing: An Introduction to Computer Science and Python Programming
Jessen Havill, Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming
Efrem G. Mallach, Information Systems: What Every Business Student Needs to Know Iztok Fajfar, Start Programming
Using HTML, CSS, and JavaScript
Mark C. Lewis and Lisa L. Lacher, Introduction to Programming and Problem-Solving Using Scala, Second Edition
Aharon Yadin, Computer Systems Architecture
Mark C. Lewis and Lisa L. Lacher, Object-Orientation, Abstraction, and Data Structures Using Scala, Second Edition
Henry M. Walker, Teaching Computing: A Practitioner’s Perspective
Efrem G. Mallach, Information Systems:What Every Business Student Needs to Know, Second Edition
Jessen Havill, Discovering Computer Science: Interdisciplinary Problems, Principles, and Python Programming, Second
Edition
For more information about this series please visit:
https://www.crcpress.com/Chapman--HallCRC-Textbooks-in-Computing/book-series/CANDHTEXCOMSER?
page=2&order=pubdate&size=12&view=list&status=published,forthcoming
Discovering Computer Science
Interdisciplinary Problems, Principles, and Python
Programming
Second Edition
Jessen Havill
Second edition published 2021
by CRC Press
2 Park Square, Milton Park, Abingdon, Oxon, OX14 4RN
and by CRC Press
6000 Broken Sound Parkway NW, Suite 300, Boca Raton, FL 33487-2742
© 2021 Jessen Havill
The right of Jessen Havill to be identified as author of this work has been asserted by him in accordance with sections 77
and 78 of the Copyright, Designs and Patents Act 1988.
All rights reserved. No part of this book may be reprinted or reproduced or utilised in any form or by any electronic,
mechanical, or other means, now known or hereafter invented, including photocopying and recording, or in any information
storage or retrieval system, without permission in writing from the publishers.
For permission to photocopy or use material electronically from this work, access www.copyright.com or contact the
Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923, 978-750-8400. For works that are not
available on CCC please contact mpkbookspermissions@tandf.co.uk
Trademark notice: Product or corporate names may be trademarks or registered trademarks, and are used only for
identification and explanation without intent to infringe.
British Library Cataloguing-in-Publication Data
A catalogue record for this book is available from the British Library
Preface
Acknowledgments
*3.4 BINARYARITHMETIC
More limited precision
Negative integers
Designing an adder
Implementing an adder
4.1 ACCUMULATORS
Managing a fishing pond
Measuring network value
Organizing a concert
4.6 SUMMING UP
Tangent 4.1 Triangular numbers
*4.8 PROJECTS
4.1 Parasitic relationships
4.2 Financial calculators
4.3 Market penetration
4.4 Wolves and moose
*5.8 PROJECTS
5.1 The magic of polling
5.2 Escape!
6.4 A CONCORDANCE
Finding a word
A concordance entry
A complete concordance
*7.9 PROJECTS
7.1 Climate change
7.2 Does education influence unemployment?
7.3 Maximizing profit
7.4 Admissions
7.5 Preparing for a 100-year flood
7.6 Voting methods
7.7 Heuristics for traveling salespeople
CHAPTER 8 ■ Flatland
*8.5 PROJECTS
8.1 Modeling segregation
8.2 Modeling ferromagnetism
8.3 Growing dendrites
8.4 Simulating an epidemic
9.1 FRACTALS
Trees
Snowflakes
*9.8 PROJECTS
9.1 Lindenmayer’s beautiful plants
9.2 Gerrymandering
9.3 Percolation
*10.7 PROJECTS
10.1 Creating a searchable database
10.2 Binary search trees
CHAPTER 11 ■ Networks
*11.6 PROJECTS
In addition to those who provided their support and expertise for the first edition, I wish to
thank Janet Davis (Whitman College), Jim Deverick (The College of William and Mary),
David Goodwin (Denison University), and Ashwin Lall (Denison University) for their
valuable feedback on drafts of the second edition.
I would also like to thank Dee Ghiloni, Mary Lucas-Miller, and Tony Silveira for their
steadfast support, Mike Brady and my Data Analytics colleagues for reminding me how
much fun it can be to learn new things, and the Book Group for reminding me to not take life
too seriously. A Bowen Fellowship awarded by Denison University gave me the time needed
to complete this project.
Finally, my family has once again provided me with seemingly infinite patience and love
during this intensive period of writing. I am an extraordinarily lucky husband and father.
About the author
Nemen wij als een enkel voorbeeld om aan te toonen hoe zeer de
oude, volledige namen heden ten dage in Friesland verbasterd zijn,
den naam E k e in behandeling. E k e , zoo heeten eenige mij
bekende Friezinnen, althans zoo worden zij in het dagelijksche leven
genoemd. Eene enkele staat ook werkelijk in de kerk en ten
gemeentehuize als E k e geboekt. In den regel echter, die E k e
genoemd worden, staan als E e l k j e te boek. E k e ! korter kan het
niet! Want dat ke is slechts een aanhangsel dat den verkleinvorm
maakt; lam of laem, bij voorbeeld, wordt lamke, lammetje, in het
Friesch. Neemt men dat aangehangene ke weg, dan blijft er van den
naam E k e anders niet over als eene enkele E. Is dat nu een naam,
een eigene Friesche naam? Wel neen! E k e is een vleivorm, een
poppenamme van E e l k j e , dat weet men nog. En de naam
E e l k j e is op zijn beurt weêr een verkleinvorm, door achtervoeging
van het aanhangsel je, van den mansnaam E e l k e . Zoo maakt
men, door ze den verkleinvorm te geven, vrouwennamen van
mansnamen: P y t t s j e , (P i e t j e ) van P i e t (P i e t e r , P e t r u s ),
B a u k j e van B a u k e (B a v o ), enz. Met E e l k e zijn wij
intusschen nog lang niet waar wij wezen moeten. Immers de
mansnaam E e l k e is op zich zelven ook weêr een verkleinvorm,
door achtervoeging van ke gemaakt. De Friezen toch, hierin
onderscheiden van andere Germaansche volken, die slechts hunnen
knapen, zoo lang ze nog kleine kinderkens zijn, met verkleinnamen
noemen—de Friezen hielden en houden die namen in
verkleinvormen ook in gebruik als de kinderen tot knapen en
jongelingen, zelfs tot mannen zijn opgegroeid. Nevens E e l k e staat
E e l t j e , het eerste met den Frieschen, het laatste met den
Hollandschen verkleinvorm; beide mansnamen beteekenen het
zelfde, beiden zijn het verkleiningsvormen van E l e . In der daad
worden zij, die E e l k e of E e l t j e heeten, in den dagelijkschen
omgang dan ook wel E l e , genoemd. Maar met E l e zijn wij [219]ook
nog niet tot den oorspronkelijken vorm des naams gekomen. Ook
E l e is weêr een verkorte, een versletene vorm. E l e staat in de
plaats van E d e l e , en is door zeer gewone uitslijting van de d (de)
ontstaan. Ook in het Hollandsch zegt men wel eêl voor edel,
vereêlen voor veredelen, vooral in dichterlijken stijl. E d e l e is de
volle vorm van dezen naam, die onder ons nog in zoo menigen
verschillenden verklein- en vleivorm voorkomt. E d e l e is een naam
die eene beteekenis heeft, die eenen zin te kennen geeft. Immers de
naam E d e l of E d e l e beteekent in der daad de edele, de edele
man. E d e l of E d e l e is de nieuwere vorm van den Oud-Frieschen
mansnaam A t h a l , dat is A d e l . Zoo heette, volgens de
overlevering, de tweede Prins van Friesland, de zoon van den
eersten, van F r i s o , en hij leefde 245 jaren voor Christus’ geboorte.
En A t h a l of A d e l , dien naam hebben vele oude Friezen
gedragen. Ook is de naam van het roemruchtige Oud-Friesche
geslacht A d e l e n er van afgeleid, en niets als een patronymikum
van A d e l . 6 De vrouwelijke vorm van A t h a l of A d e l is A t h a l a
of A d e l a , en dezen naam hebben zekerlijk vele Friezinnen in den
ouden tijd gedragen. Welke vader gaf niet gaarne zulken schoonen
naam, schoon in beteekenis en schoon in klank, aan zijn dochterke?
Ook was deze naam niet alleen bij de Friezen, maar bij alle Oud-
Germaansche volken in gebruik. Ook bij de oude Franken, die
gedeeltelijk de Germaansche voorouders der hedendaags geheel
verwaalschte Franschen geweest zijn. De naam A d e l a der
Frankische vrouwen is nog als Adèle bij de hedendaagsche
Fransche dames in gebruik. Andere volken, niet het minst ook de
Hollanders, hebben ook hier in, als in zoo menige andere zaak, de
Franschen nagevolgd, en zoo is nu Adèle vrij wel een
kosmopolitische naam geworden.
Ook een zeer oud verkleinend aanhangsel is le, dat achter namen
als E a b e l e , D o e k e l e , N a m m e l e geplaatst is.
Oorspronkelijk is het volkomen een en het zelfde als het
verkleinende achtervoegsel lyn bij de oude Hollanders en
Vlamingen, als lein bij de hedendaagsche Hoogduitschers, in de
woorden maegdelyn, oogelyn, vogellyn (niet vogelijn), en blümlein,
röslein, äuglein.
A b b e —A b b o .
A b e , A b e l e , E a b e , E a b e l e —A b o .
A d d e —A d d o .
A d e , E a d e , E d e —A d o , E d o .
A g e —A g o .
A g g e , E g g e —A g g o , E g g o .
A i k e —A i c o .
A i l k e —A i l c o .
A i s e , E i s e —A i s o , E i s o .
A l e , A l l e —A l o , A l l o .
E p p e , E p k e —E p p o , E p c o .
A t e , A t t e —A t o , A t t o .
A u k e —A u c o , A v o .
B a u w e , B a u k e —B a v o .
B o u w e , B o u k e —B u v o .
B o t e —B o t h o .
B r u i n —B r u n o .
D o e d e —D o d o .
D o e k e , D o e k e l e —D u c o , [230]in zuiverder, onverkleinden
vorm echter D o d o .
E d e —E d o .
E e l k e , E e l t j e —E e l c o ; in zuiverder, onverkleinden vorm
echter A d e l .
F e y e , F e i k e —F e y o , F e i c o .
F o k k e , F o e k e —F o c c o , F u c c o .
F o l k e —F u l c o .
H a y e , H a i k e , H a i t e , H a i t s e —H a y o , H a i c o ; de
laatste vorm is niet te verkiezen.
H e r e , H e e r e , H e a r e , H j e r r e —H e r o .
O e d s —O d o , U d o (spreek O e d o ).
O e n e —O n n o , U n o (spreek O e n o ).
P o p p e , P o p k e —P o p p o , P o p c o ; de laatste vorm is
niet te verkiezen.
S a k e , S a k e l e , S e k e l e , S e a k e l e —S a c o .
Ta k e , Te a k e , Te k e , Te k e l e , Te a k e l e —Ta c o .
S c h e l t e —S c e l t o .
S o l k e —S o l c o .
Ta d e , Te a d e —Ta d o .
T i e d e , T i e t e , T j i t t e , T j i t s e —T h i e d o of T h e o d o .
S i b e , S i b b e , S i p p e , S i p k e , S i b b e l e —S i b o ,
Sibbo.
W i b e —W i b o .
U i l k e , U i l t j e , U i l t z e n —U l o .
W i t e , W i t t e , W y t s e —W i t o .
W o b b e , W o p , W o p k e —W u b b o .
Ten slotte nog geef ik hier eene lijst van Friesche persoonsnamen in
hunnen hedendaagschen, verbasterden en verkleinden vorm, met
de oude, oorspronkelijke, volle vormen daar achter. De letters m en v
achter de namen duiden aan of zij mans- of vrouwennamen zijn.
A a r t , A r e n t , A a n m.—A r n of ook A r n o l d .
A l g e r . m.—A d e l g a r .
A l l e r t . m.—A d e l h a r t .
A n d e l e . m.—A n d o .
A a f j e , A a f k e . v.—A v a of ook A b a .
A a l t j e . v.—A d e l a .
A n s k e . m.—A n s o .
A u k e . m.—A u d o , A u c o of A v o .
A u k j e . v.—A u d a of A v a .
B e a n , B a a r t , B e e r t , B e r e n d , B a r e n d , m.—
Bernhard.
B a a r t j e , B a a t j e , B e r e n d j e (B e r e n d i n a ). v.—
Bernharda.
B a u w e . m.—B a v o .
B a u k j e , B a a i e . v.—B a v a .
B a r t e l e , B a r t l e . m.—B a r t of B r e c h t en B a r t h o l d .
B a r t e l t j e , B a r t j e , B r e c h t j e , v.—B a r t h a of
B e r t h a , of B r e c h t a en B a r t h o l d a .
B o u w e . m.—B u v o .
B o u k j e . v.—B u v a .
B i n n e , B i n s e , B e n t e , m.—B e n n o .
Bentje, Benskje, Bints, Binke, Bintje,
B i n t s k e , v.—B e n n a .
B e n n e r t , B i n n e r t . m.—B e r n h a r d .